43.8 MB
/srv/reproducible-results/rbuild-debian/r-b-build.x95gDGcb/b1/erlang_27.3+dfsg-1_armhf.changes vs.
/srv/reproducible-results/rbuild-debian/r-b-build.x95gDGcb/b2/erlang_27.3+dfsg-1_armhf.changes
4.51 KB
Files
    
Offset 4, 27 lines modifiedOffset 4, 27 lines modified
4 ·7c9eb62c97f6a520fdddf7e40917266f·7333612·debug·optional·erlang-base-dbgsym_27.3+dfsg-1_armhf.deb4 ·7c9eb62c97f6a520fdddf7e40917266f·7333612·debug·optional·erlang-base-dbgsym_27.3+dfsg-1_armhf.deb
5 ·4e282a5d1f4fd6e3bb0488f0e290f34f·10856816·interpreters·optional·erlang-base_27.3+dfsg-1_armhf.deb5 ·4e282a5d1f4fd6e3bb0488f0e290f34f·10856816·interpreters·optional·erlang-base_27.3+dfsg-1_armhf.deb
6 ·0c6e2d6681e11ac98d6d132c4a098ce5·41956·debug·optional·erlang-common-test-dbgsym_27.3+dfsg-1_armhf.deb6 ·0c6e2d6681e11ac98d6d132c4a098ce5·41956·debug·optional·erlang-common-test-dbgsym_27.3+dfsg-1_armhf.deb
7 ·8652a9f8d693ac1953cfe0edfd44e9b3·1312028·interpreters·optional·erlang-common-test_27.3+dfsg-1_armhf.deb7 ·8652a9f8d693ac1953cfe0edfd44e9b3·1312028·interpreters·optional·erlang-common-test_27.3+dfsg-1_armhf.deb
8 ·6a20434d1aac6b1764f422d0e41ef037·121024·debug·optional·erlang-crypto-dbgsym_27.3+dfsg-1_armhf.deb8 ·6a20434d1aac6b1764f422d0e41ef037·121024·debug·optional·erlang-crypto-dbgsym_27.3+dfsg-1_armhf.deb
9 ·11bfb1eb0c9009e24f979d8278207f7b·175024·interpreters·optional·erlang-crypto_27.3+dfsg-1_armhf.deb9 ·11bfb1eb0c9009e24f979d8278207f7b·175024·interpreters·optional·erlang-crypto_27.3+dfsg-1_armhf.deb
10 ·b1297d0c0a761a77fbf23788534b98b5·479380·interpreters·optional·erlang-debugger_27.3+dfsg-1_armhf.deb10 ·b1297d0c0a761a77fbf23788534b98b5·479380·interpreters·optional·erlang-debugger_27.3+dfsg-1_armhf.deb
11 ·9c4b9bda57bcebef0b5e9e4035e6b488·287548·interpreters·optional·erlang-dev_27.3+dfsg-1_armhf.deb11 ·7660f5014ca54f8eed043b694664e158·287520·interpreters·optional·erlang-dev_27.3+dfsg-1_armhf.deb
12 ·4ef4bc4862151fd2b899fdc18b7ce284·80052·debug·optional·erlang-dialyzer-dbgsym_27.3+dfsg-1_armhf.deb12 ·4ef4bc4862151fd2b899fdc18b7ce284·80052·debug·optional·erlang-dialyzer-dbgsym_27.3+dfsg-1_armhf.deb
13 ·e5797ac5dd7e6f8f8ba16021afb33e58·1073240·interpreters·optional·erlang-dialyzer_27.3+dfsg-1_armhf.deb13 ·e5797ac5dd7e6f8f8ba16021afb33e58·1073240·interpreters·optional·erlang-dialyzer_27.3+dfsg-1_armhf.deb
14 ·84dc1384c04c62fcfce6359acbbaf857·811972·interpreters·optional·erlang-diameter_27.3+dfsg-1_armhf.deb14 ·84dc1384c04c62fcfce6359acbbaf857·811972·interpreters·optional·erlang-diameter_27.3+dfsg-1_armhf.deb
15 ·4f26c1f39a800082c3d4523b49be0001·16769444·doc·optional·erlang-doc_27.3+dfsg-1_all.deb15 ·695e170cc24e91c51c9ca606947162d9·16771056·doc·optional·erlang-doc_27.3+dfsg-1_all.deb
16 ·099362485364a5511309890261c565b5·459444·interpreters·optional·erlang-edoc_27.3+dfsg-1_armhf.deb16 ·099362485364a5511309890261c565b5·459444·interpreters·optional·erlang-edoc_27.3+dfsg-1_armhf.deb
17 ·35cdd30711ad50c777c8d007f343d4b8·137960·interpreters·optional·erlang-eldap_27.3+dfsg-1_armhf.deb17 ·35cdd30711ad50c777c8d007f343d4b8·137960·interpreters·optional·erlang-eldap_27.3+dfsg-1_armhf.deb
18 ·861bfb6859cbc3c88110412e5355c693·185092·interpreters·optional·erlang-et_27.3+dfsg-1_armhf.deb18 ·861bfb6859cbc3c88110412e5355c693·185092·interpreters·optional·erlang-et_27.3+dfsg-1_armhf.deb
19 ·e2ebc333589ba5ee72273be4853dcd2c·171720·interpreters·optional·erlang-eunit_27.3+dfsg-1_armhf.deb19 ·e2ebc333589ba5ee72273be4853dcd2c·171720·interpreters·optional·erlang-eunit_27.3+dfsg-1_armhf.deb
20 ·694c6cfd6ab14d118e07c13376a09da4·963164·interpreters·optional·erlang-examples_27.3+dfsg-1_all.deb20 ·694c6cfd6ab14d118e07c13376a09da4·963164·interpreters·optional·erlang-examples_27.3+dfsg-1_all.deb
21 ·cbe7f4ba3094b7aa1b6e47c7140ac5eb·106212·interpreters·optional·erlang-ftp_27.3+dfsg-1_armhf.deb21 ·cbe7f4ba3094b7aa1b6e47c7140ac5eb·106212·interpreters·optional·erlang-ftp_27.3+dfsg-1_armhf.deb
22 ·ee8d4211beabf5c31117e7e2c47f1b0e·671124·interpreters·optional·erlang-inets_27.3+dfsg-1_armhf.deb22 ·ee8d4211beabf5c31117e7e2c47f1b0e·671124·interpreters·optional·erlang-inets_27.3+dfsg-1_armhf.deb
23 ·acc062821e3e729b73de2f50f1af9516·113532·interpreters·optional·erlang-jinterface_27.3+dfsg-1_all.deb23 ·634a70b75710db00767e2c1f17e53e22·113520·interpreters·optional·erlang-jinterface_27.3+dfsg-1_all.deb
24 ·c636890f8ccde47ba622ac2cea35073b·64612·debug·optional·erlang-megaco-dbgsym_27.3+dfsg-1_armhf.deb24 ·c636890f8ccde47ba622ac2cea35073b·64612·debug·optional·erlang-megaco-dbgsym_27.3+dfsg-1_armhf.deb
25 ·ea30e1063c34c3a72a97e65bbc483d4b·3687324·interpreters·optional·erlang-megaco_27.3+dfsg-1_armhf.deb25 ·ea30e1063c34c3a72a97e65bbc483d4b·3687324·interpreters·optional·erlang-megaco_27.3+dfsg-1_armhf.deb
26 ·9f1f8c350558457d1cf4839296838a40·897864·interpreters·optional·erlang-mnesia_27.3+dfsg-1_armhf.deb26 ·9f1f8c350558457d1cf4839296838a40·897864·interpreters·optional·erlang-mnesia_27.3+dfsg-1_armhf.deb
27 ·ad03e798bf84ebdd2a7c760ac06b864a·93160·interpreters·optional·erlang-mode_27.3+dfsg-1_all.deb27 ·ad03e798bf84ebdd2a7c760ac06b864a·93160·interpreters·optional·erlang-mode_27.3+dfsg-1_all.deb
28 ·c9ae41019dbc217a22f727159561d6c3·14812·interpreters·optional·erlang-nox_27.3+dfsg-1_all.deb28 ·c9ae41019dbc217a22f727159561d6c3·14812·interpreters·optional·erlang-nox_27.3+dfsg-1_all.deb
29 ·d799980c6345ed434f14895744ff4c7e·1028148·interpreters·optional·erlang-observer_27.3+dfsg-1_armhf.deb29 ·d799980c6345ed434f14895744ff4c7e·1028148·interpreters·optional·erlang-observer_27.3+dfsg-1_armhf.deb
30 ·7650e14d0e6aea9a1d6a8345214ef6e9·59872·debug·optional·erlang-odbc-dbgsym_27.3+dfsg-1_armhf.deb30 ·7650e14d0e6aea9a1d6a8345214ef6e9·59872·debug·optional·erlang-odbc-dbgsym_27.3+dfsg-1_armhf.deb
Offset 34, 15 lines modifiedOffset 34, 15 lines modified
34 ·198ddb91a3cec787c9d64b77498e22ac·211268·interpreters·optional·erlang-parsetools_27.3+dfsg-1_armhf.deb34 ·198ddb91a3cec787c9d64b77498e22ac·211268·interpreters·optional·erlang-parsetools_27.3+dfsg-1_armhf.deb
35 ·32779e56cc38370bad52d3d814a1a683·784184·interpreters·optional·erlang-public-key_27.3+dfsg-1_armhf.deb35 ·32779e56cc38370bad52d3d814a1a683·784184·interpreters·optional·erlang-public-key_27.3+dfsg-1_armhf.deb
36 ·3ca1424d3e44c1d9114d49df18acd4be·384464·interpreters·optional·erlang-reltool_27.3+dfsg-1_armhf.deb36 ·3ca1424d3e44c1d9114d49df18acd4be·384464·interpreters·optional·erlang-reltool_27.3+dfsg-1_armhf.deb
37 ·4903349ae4a9f08eac524cb1e4babeb9·25404·debug·optional·erlang-runtime-tools-dbgsym_27.3+dfsg-1_armhf.deb37 ·4903349ae4a9f08eac524cb1e4babeb9·25404·debug·optional·erlang-runtime-tools-dbgsym_27.3+dfsg-1_armhf.deb
38 ·767bb409a3c7f808bff9f44c2d97903a·243296·interpreters·optional·erlang-runtime-tools_27.3+dfsg-1_armhf.deb38 ·767bb409a3c7f808bff9f44c2d97903a·243296·interpreters·optional·erlang-runtime-tools_27.3+dfsg-1_armhf.deb
39 ·ac69e4542c389ab5bf9ba9dd7bff6236·1949760·interpreters·optional·erlang-snmp_27.3+dfsg-1_armhf.deb39 ·ac69e4542c389ab5bf9ba9dd7bff6236·1949760·interpreters·optional·erlang-snmp_27.3+dfsg-1_armhf.deb
40 ·74c327e68c0435308e4fc78e18fdb71f·6105860·interpreters·optional·erlang-src_27.3+dfsg-1_all.deb40 ·74c327e68c0435308e4fc78e18fdb71f·6105860·interpreters·optional·erlang-src_27.3+dfsg-1_all.deb
41 ·e634edfe8283574ee437d6d9cab4e8ae·1008852·interpreters·optional·erlang-ssh_27.3+dfsg-1_armhf.deb41 ·dea67b295337eb129920250b540bb017·1008828·interpreters·optional·erlang-ssh_27.3+dfsg-1_armhf.deb
42 ·ed36cf6e3f824be9940a4fd92a1370e7·1810092·interpreters·optional·erlang-ssl_27.3+dfsg-1_armhf.deb42 ·ed36cf6e3f824be9940a4fd92a1370e7·1810092·interpreters·optional·erlang-ssl_27.3+dfsg-1_armhf.deb
43 ·69669f1dbaec6571c3d54fb517ff76d3·338648·interpreters·optional·erlang-syntax-tools_27.3+dfsg-1_armhf.deb43 ·69669f1dbaec6571c3d54fb517ff76d3·338648·interpreters·optional·erlang-syntax-tools_27.3+dfsg-1_armhf.deb
44 ·c62a686dfc94a95c20e20999d4d6ec75·113192·interpreters·optional·erlang-tftp_27.3+dfsg-1_armhf.deb44 ·c62a686dfc94a95c20e20999d4d6ec75·113192·interpreters·optional·erlang-tftp_27.3+dfsg-1_armhf.deb
45 ·0a3ceb77db1abe9986b86d65a1945304·622396·interpreters·optional·erlang-tools_27.3+dfsg-1_armhf.deb45 ·0a3ceb77db1abe9986b86d65a1945304·622396·interpreters·optional·erlang-tools_27.3+dfsg-1_armhf.deb
46 ·aa0884fdd1fc459eac5489df6448a303·5184188·debug·optional·erlang-wx-dbgsym_27.3+dfsg-1_armhf.deb46 ·aa0884fdd1fc459eac5489df6448a303·5184188·debug·optional·erlang-wx-dbgsym_27.3+dfsg-1_armhf.deb
47 ·41634b4a9ff87646d5822040d30843bc·4437472·interpreters·optional·erlang-wx_27.3+dfsg-1_armhf.deb47 ·41634b4a9ff87646d5822040d30843bc·4437472·interpreters·optional·erlang-wx_27.3+dfsg-1_armhf.deb
48 ·f50f75245c3b5bee0d0f5a867712f707·14768·interpreters·optional·erlang-x11_27.3+dfsg-1_all.deb48 ·f50f75245c3b5bee0d0f5a867712f707·14768·interpreters·optional·erlang-x11_27.3+dfsg-1_all.deb
18.9 KB
erlang-dev_27.3+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-03-11·08:30:48.000000·debian-binary1 -rw-r--r--···0········0········0········4·2025-03-11·08:30:48.000000·debian-binary
2 -rw-r--r--···0········0········0·····3648·2025-03-11·08:30:48.000000·control.tar.xz2 -rw-r--r--···0········0········0·····3648·2025-03-11·08:30:48.000000·control.tar.xz
3 -rw-r--r--···0········0········0···283708·2025-03-11·08:30:48.000000·data.tar.xz3 -rw-r--r--···0········0········0···283680·2025-03-11·08:30:48.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.4 KB
data.tar.xz
18.4 KB
data.tar
18.4 KB
./usr/bin/erlang-depends
    
Offset 7, 308 lines modifiedOffset 7, 308 lines modified
7 -define(VERSION,·"1:27.3+dfsg").7 -define(VERSION,·"1:27.3+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,·[{"systools_relup",·"erlang-base"},13 -define(MODULES,·[{"ets",·"erlang-base"},
14 {"release_handler_1",·"erlang-base"}, 
15 {"sasl_report_file_h",·"erlang-base"}, 
16 {"release_handler",·"erlang-base"}, 
17 {"systools_rc",·"erlang-base"}, 
18 {"sasl_report",·"erlang-base"}, 
19 {"alarm_handler",·"erlang-base"}, 
20 {"misc_supp",·"erlang-base"}, 
21 {"rb",·"erlang-base"}, 
22 {"rb_format_supp",·"erlang-base"}, 
23 {"systools",·"erlang-base"}, 
24 {"sasl",·"erlang-base"}, 
25 {"systools_lib",·"erlang-base"}, 
26 {"format_lib_supp",·"erlang-base"}, 
27 {"systools_make",·"erlang-base"}, 
28 {"sasl_report_tty_h",·"erlang-base"}, 
29 {"erlsrv",·"erlang-base"}, 
30 {"target_system",·"erlang-base"}, 
31 {"application_starter",·"erlang-base"}, 
32 {"raw_file_io",·"erlang-base"}, 
33 {"code_server",·"erlang-base"}, 
34 {"logger_handler",·"erlang-base"}, 
35 {"logger_proxy",·"erlang-base"}, 
36 {"user_sup",·"erlang-base"}, 
37 {"file",·"erlang-base"}, 
38 {"kernel_config",·"erlang-base"}, 
39 {"ram_file",·"erlang-base"}, 
40 {"pg2",·"erlang-base"}, 
41 {"logger_olp",·"erlang-base"}, 
42 {"disk_log_1",·"erlang-base"}, 
43 {"raw_file_io_delayed",·"erlang-base"}, 
44 {"inet_config",·"erlang-base"}, 
45 {"auth",·"erlang-base"},14 {"math",·"erlang-base"},
46 {"logger_std_h",·"erlang-base"}, 
47 {"dist_ac",·"erlang-base"}, 
48 {"raw_file_io_compressed",·"erlang-base"}, 
49 {"local_tcp",·"erlang-base"}, 
50 {"inet_parse",·"erlang-base"}, 
51 {"inet_dns_tsig",·"erlang-base"}, 
52 {"prim_tty",·"erlang-base"}, 
53 {"erts_debug",·"erlang-base"}, 
54 {"rpc",·"erlang-base"}, 
55 {"erl_signal_handler",·"erlang-base"}, 
56 {"gen_udp",·"erlang-base"}, 
57 {"inet_db",·"erlang-base"}, 
58 {"dist_util",·"erlang-base"}, 
59 {"kernel_refc",·"erlang-base"}, 
60 {"socket",·"erlang-base"}, 
61 {"disk_log_sup",·"erlang-base"}, 
62 {"inet6_tcp",·"erlang-base"}, 
63 {"error_logger",·"erlang-base"}, 
64 {"erl_compile_server",·"erlang-base"}, 
65 {"logger_filters",·"erlang-base"}, 
66 {"gen_tcp",·"erlang-base"}, 
67 {"inet6_udp",·"erlang-base"}, 
68 {"raw_file_io_deflate",·"erlang-base"}, 
69 {"trace",·"erlang-base"}, 
70 {"logger_h_common",·"erlang-base"}, 
71 {"group",·"erlang-base"}, 
72 {"erl_kernel_errors",·"erlang-base"}, 
73 {"group_history",·"erlang-base"}, 
74 {"inet_sctp",·"erlang-base"}, 
75 {"erl_erts_errors",·"erlang-base"}, 
76 {"standard_error",·"erlang-base"}, 
77 {"logger_simple_h",·"erlang-base"}, 
78 {"inet6_tcp_dist",·"erlang-base"}, 
79 {"inet_udp",·"erlang-base"}, 
80 {"inet",·"erlang-base"}, 
81 {"erl_ddll",·"erlang-base"}, 
82 {"logger_sup",·"erlang-base"}, 
83 {"logger_formatter",·"erlang-base"}, 
84 {"os",·"erlang-base"},15 {"slave",·"erlang-base"},
85 {"logger_config",·"erlang-base"}, 
86 {"erl_epmd",·"erlang-base"}, 
87 {"inet_tcp_dist",·"erlang-base"}, 
88 {"inet6_sctp",·"erlang-base"}, 
89 {"disk_log",·"erlang-base"}, 
90 {"inet_epmd_dist",·"erlang-base"}, 
91 {"inet_gethost_native",·"erlang-base"}, 
92 {"inet_tcp",·"erlang-base"}, 
93 {"pg",·"erlang-base"}, 
94 {"logger_handler_watcher",·"erlang-base"}, 
95 {"logger_backend",·"erlang-base"}, 
96 {"code",·"erlang-base"}, 
97 {"user_drv",·"erlang-base"}, 
98 {"net",·"erlang-base"}, 
99 {"error_handler",·"erlang-base"}, 
100 {"inet_res",·"erlang-base"}, 
101 {"heart",·"erlang-base"}, 
102 {"erl_reply",·"erlang-base"}, 
103 {"net_adm",·"erlang-base"}, 
104 {"net_kernel",·"erlang-base"}, 
105 {"raw_file_io_list",·"erlang-base"}, 
106 {"raw_file_io_inflate",·"erlang-base"}, 
107 {"global_search",·"erlang-base"}, 
108 {"erpc",·"erlang-base"}, 
109 {"inet_hosts",·"erlang-base"}, 
110 {"local_udp",·"erlang-base"}, 
111 {"logger_server",·"erlang-base"}, 
112 {"file_io_server",·"erlang-base"}, 
113 {"inet_dns",·"erlang-base"}, 
114 {"application_master",·"erlang-base"}, 
115 {"kernel",·"erlang-base"}, 
116 {"wrap_log_reader",·"erlang-base"}, 
117 {"gen_tcp_socket",·"erlang-base"}, 
118 {"application_controller",·"erlang-base"}, 
119 {"erl_distribution",·"erlang-base"}, 
120 {"global",·"erlang-base"}, 
121 {"erl_boot_server",·"erlang-base"}, 
122 {"gen_sctp",·"erlang-base"}, 
123 {"file_server",·"erlang-base"}, 
124 {"logger_disk_log_h",·"erlang-base"}, 
125 {"seq_trace",·"erlang-base"}, 
126 {"logger",·"erlang-base"}, 
127 {"global_group",·"erlang-base"}, 
128 {"gen_udp_socket",·"erlang-base"}, 
129 {"application",·"erlang-base"}, 
130 {"disk_log_server",·"erlang-base"}, 
131 {"inet_epmd_socket",·"erlang-base"}, 
132 {"win32reg",·"erlang-base"}, 
Max diff block lines reached; 14195/18746 bytes (75.72%) of diff not shown.
43.6 MB
erlang-doc_27.3+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-03-11·08:30:48.000000·debian-binary1 -rw-r--r--···0········0········0········4·2025-03-11·08:30:48.000000·debian-binary
2 -rw-r--r--···0········0········0····39580·2025-03-11·08:30:48.000000·control.tar.xz2 -rw-r--r--···0········0········0····39560·2025-03-11·08:30:48.000000·control.tar.xz
3 -rw-r--r--···0········0········0·16729672·2025-03-11·08:30:48.000000·data.tar.xz3 -rw-r--r--···0········0········0·16731304·2025-03-11·08:30:48.000000·data.tar.xz
10.6 KB
control.tar.xz
10.6 KB
control.tar
10.6 KB
./md5sums
30.0 B
./md5sums
Files differ
10.5 KB
line order
Max HTML report size reached
43.6 MB
data.tar.xz
43.6 MB
data.tar
81.0 KB
file list
    
Offset 95, 15 lines modifiedOffset 95, 15 lines modified
95 -rw-r--r--···0·root·········(0)·root·········(0)····23236·2025-03-11·08:30:48.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-03-11·08:30:48.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-03-11·08:30:48.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-03-11·08:30:48.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-03-11·08:30:48.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-03-11·08:30:48.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-03-11·08:30:48.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-03-11·08:30:48.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-03-11·08:30:48.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-03-11·08:30:48.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-03-11·08:30:48.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-03-11·08:30:48.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-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/dist/remixicon-NKANDIL5.woff2101 -rw-r--r--···0·root·········(0)·root·········(0)·····1956·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/dist/remixicon-NKANDIL5.woff2
102 -rw-r--r--···0·root·········(0)·root·········(0)···111494·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/dist/search_data-67BC8981.js102 -rw-r--r--···0·root·········(0)·root·········(0)···111494·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/dist/search_data-A8289C95.js
103 -rw-r--r--···0·root·········(0)·root·········(0)·····5079·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/dist/sidebar_items-E71B297A.js103 -rw-r--r--···0·root·········(0)·root·········(0)·····5079·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/dist/sidebar_items-E71B297A.js
104 -rw-r--r--···0·root·········(0)·root·········(0)······286·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/edoc.html104 -rw-r--r--···0·root·········(0)·root·········(0)······286·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/edoc.html
105 -rw-r--r--···0·root·········(0)·root·········(0)······284·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/efficiency_guide.html105 -rw-r--r--···0·root·········(0)·root·········(0)······284·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/efficiency_guide.html
106 -rw-r--r--···0·root·········(0)·root·········(0)······288·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/eldap.html106 -rw-r--r--···0·root·········(0)·root·········(0)······288·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/eldap.html
107 -rw-r--r--···0·root·········(0)·root·········(0)······276·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/embedded.html107 -rw-r--r--···0·root·········(0)·root·········(0)······276·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/embedded.html
108 -rw-r--r--···0·root·········(0)·root·········(0)······295·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/erl_interface.html108 -rw-r--r--···0·root·········(0)·root·········(0)······295·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/erl_interface.html
109 -rw-r--r--···0·root·········(0)·root·········(0)······283·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/erts.html109 -rw-r--r--···0·root·········(0)·root·········(0)······283·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/erts.html
Offset 137, 15 lines modifiedOffset 137, 15 lines modified
137 -rw-r--r--···0·root·········(0)·root·········(0)······285·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/ssh.html137 -rw-r--r--···0·root·········(0)·root·········(0)······285·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/ssh.html
138 -rw-r--r--···0·root·········(0)·root·········(0)······286·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/ssl.html138 -rw-r--r--···0·root·········(0)·root·········(0)······286·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/ssl.html
139 -rw-r--r--···0·root·········(0)·root·········(0)······288·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/stdlib.html139 -rw-r--r--···0·root·········(0)·root·········(0)······288·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/stdlib.html
140 -rw-r--r--···0·root·········(0)·root·········(0)······294·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/syntax_tools.html140 -rw-r--r--···0·root·········(0)·root·········(0)······294·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/syntax_tools.html
141 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/141 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/
142 -rw-r--r--···0·root·········(0)·root·········(0)·····2286·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/.build142 -rw-r--r--···0·root·········(0)·root·········(0)·····2286·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/.build
143 -rw-r--r--···0·root·········(0)·root·········(0)·····5518·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/404.html143 -rw-r--r--···0·root·········(0)·root·········(0)·····5518·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/404.html
144 -rw-r--r--···0·root·········(0)·root·········(0)···654328·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/Erlang·System·Documentation.epub144 -rw-r--r--···0·root·········(0)·root·········(0)···654314·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/Erlang·System·Documentation.epub
145 -rw-r--r--···0·root·········(0)·root·········(0)····53386·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/applications.html145 -rw-r--r--···0·root·········(0)·root·········(0)····53386·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/applications.html
146 -rw-r--r--···0·root·········(0)·root·········(0)····97343·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/appup_cookbook.html146 -rw-r--r--···0·root·········(0)·root·········(0)····97343·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/appup_cookbook.html
147 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/147 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/
148 -rw-r--r--···0·root·········(0)·root·········(0)·····7982·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/ballpoint-pen.svg148 -rw-r--r--···0·root·········(0)·root·········(0)·····7982·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/ballpoint-pen.svg
149 -rw-r--r--···0·root·········(0)·root·········(0)·····2284·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist1.gif149 -rw-r--r--···0·root·········(0)·root·········(0)·····2284·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist1.gif
150 -rw-r--r--···0·root·········(0)·root·········(0)·····5214·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist2.gif150 -rw-r--r--···0·root·········(0)·root·········(0)·····5214·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist2.gif
151 -rw-r--r--···0·root·········(0)·root·········(0)·····5007·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist3.gif151 -rw-r--r--···0·root·········(0)·root·········(0)·····5007·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/doc/system/assets/dist3.gif
Offset 351, 15 lines modifiedOffset 351, 15 lines modified
351 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/351 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/
352 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/352 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/
353 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/353 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/
354 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/354 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/
355 -rw-r--r--···0·root·········(0)·root·········(0)·····1060·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/.build355 -rw-r--r--···0·root·········(0)·root·········(0)·····1060·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/.build
356 -rw-r--r--···0·root·········(0)·root·········(0)·····5886·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/404.html356 -rw-r--r--···0·root·········(0)·root·········(0)·····5886·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/404.html
357 -rw-r--r--···0·root·········(0)·root·········(0)·····6566·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/api-reference.html357 -rw-r--r--···0·root·········(0)·root·········(0)·····6566·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/api-reference.html
358 -rw-r--r--···0·root·········(0)·root·········(0)····94571·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1.epub358 -rw-r--r--···0·root·········(0)·root·········(0)····94573·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1.epub
359 -rw-r--r--···0·root·········(0)·root·········(0)···134489·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1_getting_started.html359 -rw-r--r--···0·root·········(0)·root·········(0)···134489·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1_getting_started.html
360 -rw-r--r--···0·root·········(0)·root·········(0)·····9204·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1_introduction.html360 -rw-r--r--···0·root·········(0)·root·········(0)·····9204·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1_introduction.html
361 -rw-r--r--···0·root·········(0)·root·········(0)·····7330·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1_overview.html361 -rw-r--r--···0·root·········(0)·root·········(0)·····7330·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1_overview.html
362 -rw-r--r--···0·root·········(0)·root·········(0)····78676·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1_spec.html362 -rw-r--r--···0·root·········(0)·root·········(0)····78676·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1_spec.html
363 -rw-r--r--···0·root·········(0)·root·········(0)····35299·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1ct.html363 -rw-r--r--···0·root·········(0)·root·········(0)····35299·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/asn1ct.html
364 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/assets/364 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/assets/
365 -rw-r--r--···0·root·········(0)·root·········(0)·····1340·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/doc/html/assets/exclusive_Win_But.gif365 -rw-r--r--···0·root·········(0)·root·········(0)·····1340·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/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-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/api-reference.html397 -rw-r--r--···0·root·········(0)·root·········(0)····10554·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/api-reference.html
398 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/assets/398 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/assets/
399 -rw-r--r--···0·root·········(0)·root·········(0)·····4963·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/assets/config.gif399 -rw-r--r--···0·root·········(0)·root·········(0)·····4963·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/assets/config.gif
400 -rw-r--r--···0·root·········(0)·root·········(0)····10726·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/assets/html_logs.gif400 -rw-r--r--···0·root·········(0)·root·········(0)····10726·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/assets/html_logs.gif
401 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/assets/logo.png401 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/assets/logo.png
402 -rw-r--r--···0·root·········(0)·root·········(0)·····9561·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/assets/tc_execution.gif402 -rw-r--r--···0·root·········(0)·root·········(0)·····9561·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/assets/tc_execution.gif
403 -rw-r--r--···0·root·········(0)·root·········(0)····21677·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/basics_chapter.html403 -rw-r--r--···0·root·········(0)·root·········(0)····21677·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/basics_chapter.html
404 -rw-r--r--···0·root·········(0)·root·········(0)···399378·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/common_test.epub404 -rw-r--r--···0·root·········(0)·root·········(0)···399370·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/common_test.epub
405 -rw-r--r--···0·root·········(0)·root·········(0)·····7384·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/common_test_app.html405 -rw-r--r--···0·root·········(0)·root·········(0)·····7384·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/common_test_app.html
406 -rw-r--r--···0·root·········(0)·root·········(0)····59508·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/config_file_chapter.html406 -rw-r--r--···0·root·········(0)·root·········(0)····59508·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/config_file_chapter.html
407 -rw-r--r--···0·root·········(0)·root·········(0)····25423·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/cover_chapter.html407 -rw-r--r--···0·root·········(0)·root·········(0)····25423·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/cover_chapter.html
408 -rw-r--r--···0·root·········(0)·root·········(0)···182088·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/ct.html408 -rw-r--r--···0·root·········(0)·root·········(0)···182088·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/ct.html
409 -rw-r--r--···0·root·········(0)·root·········(0)····12174·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/ct_cover.html409 -rw-r--r--···0·root·········(0)·root·········(0)····12174·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/ct_cover.html
410 -rw-r--r--···0·root·········(0)·root·········(0)····29862·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/ct_ftp.html410 -rw-r--r--···0·root·········(0)·root·········(0)····29862·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/ct_ftp.html
411 -rw-r--r--···0·root·········(0)·root·········(0)····76984·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/ct_hooks.html411 -rw-r--r--···0·root·········(0)·root·········(0)····76984·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/doc/html/ct_hooks.html
Offset 466, 15 lines modifiedOffset 466, 15 lines modified
466 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/assets/466 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/assets/
467 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/assets/logo.png467 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/assets/logo.png
468 -rw-r--r--···0·root·········(0)·root·········(0)····24096·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/beam_ssa.html468 -rw-r--r--···0·root·········(0)·root·········(0)····24096·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/beam_ssa.html
469 -rw-r--r--···0·root·········(0)·root·········(0)···450301·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/cerl.html469 -rw-r--r--···0·root·········(0)·root·········(0)···450301·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/cerl.html
470 -rw-r--r--···0·root·········(0)·root·········(0)····28561·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/cerl_clauses.html470 -rw-r--r--···0·root·········(0)·root·········(0)····28561·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/cerl_clauses.html
471 -rw-r--r--···0·root·········(0)·root·········(0)····28819·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/cerl_trees.html471 -rw-r--r--···0·root·········(0)·root·········(0)····28819·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/cerl_trees.html
472 -rw-r--r--···0·root·········(0)·root·········(0)····84118·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/compile.html472 -rw-r--r--···0·root·········(0)·root·········(0)····84118·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/compile.html
473 -rw-r--r--···0·root·········(0)·root·········(0)···181878·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/compiler.epub473 -rw-r--r--···0·root·········(0)·root·········(0)···181873·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/compiler.epub
474 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/474 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/
475 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/handlebars.runtime-CFQAK6SD.js475 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/handlebars.runtime-CFQAK6SD.js
476 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/handlebars.templates-K7URE6B4.js476 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/handlebars.templates-K7URE6B4.js
477 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/html-55NP3CS6.js477 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/html-55NP3CS6.js
478 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/html-erlang-WGRVP7UZ.css478 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/html-erlang-WGRVP7UZ.css
479 -rw-r--r--···0·root·········(0)·root·········(0)····17732·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/inconsolata-latin-400-normal-OXLHDACS.woff2479 -rw-r--r--···0·root·········(0)·root·········(0)····17732·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/inconsolata-latin-400-normal-OXLHDACS.woff2
480 -rw-r--r--···0·root·········(0)·root·········(0)····17976·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/inconsolata-latin-700-normal-S55P5GAG.woff2480 -rw-r--r--···0·root·········(0)·root·········(0)····17976·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/inconsolata-latin-700-normal-S55P5GAG.woff2
Offset 485, 30 lines modifiedOffset 485, 30 lines modified
485 -rw-r--r--···0·root·········(0)·root·········(0)····23236·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-300-normal-YUMVEFOL.woff2485 -rw-r--r--···0·root·········(0)·root·········(0)····23236·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-300-normal-YUMVEFOL.woff2
486 -rw-r--r--···0·root·········(0)·root·········(0)····23580·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-400-normal-W7754I4D.woff2486 -rw-r--r--···0·root·········(0)·root·········(0)····23580·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-400-normal-W7754I4D.woff2
487 -rw-r--r--···0·root·········(0)·root·········(0)····23040·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-700-normal-2XVSBPG4.woff2487 -rw-r--r--···0·root·········(0)·root·········(0)····23040·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-700-normal-2XVSBPG4.woff2
488 -rw-r--r--···0·root·········(0)·root·········(0)·····5624·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-ext-300-normal-VPGGJKJL.woff2488 -rw-r--r--···0·root·········(0)·root·········(0)·····5624·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
489 -rw-r--r--···0·root·········(0)·root·········(0)·····5472·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-ext-400-normal-N27NCBWW.woff2489 -rw-r--r--···0·root·········(0)·root·········(0)·····5472·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-ext-400-normal-N27NCBWW.woff2
490 -rw-r--r--···0·root·········(0)·root·········(0)·····5368·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2490 -rw-r--r--···0·root·········(0)·root·········(0)·····5368·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
491 -rw-r--r--···0·root·········(0)·root·········(0)·····1956·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/remixicon-NKANDIL5.woff2491 -rw-r--r--···0·root·········(0)·root·········(0)·····1956·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/remixicon-NKANDIL5.woff2
492 -rw-r--r--···0·root·········(0)·root·········(0)···305243·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/search_data-43A9611A.js492 -rw-r--r--···0·root·········(0)·root·········(0)···305243·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/search_data-62F7C547.js
493 -rw-r--r--···0·root·········(0)·root·········(0)····42006·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/sidebar_items-34FC5BF5.js493 -rw-r--r--···0·root·········(0)·root·········(0)····42006·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/sidebar_items-34FC5BF5.js
494 -rw-r--r--···0·root·········(0)·root·········(0)······264·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/index.html494 -rw-r--r--···0·root·········(0)·root·········(0)······264·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/index.html
495 -rw-r--r--···0·root·········(0)·root·········(0)···257280·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/notes.html495 -rw-r--r--···0·root·········(0)·root·········(0)···257280·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/notes.html
496 -rw-r--r--···0·root·········(0)·root·········(0)·····5820·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/search.html496 -rw-r--r--···0·root·········(0)·root·········(0)·····5820·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/search.html
497 -rw-r--r--···0·root·········(0)·root·········(0)····17923·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/ssa_checks.html497 -rw-r--r--···0·root·········(0)·root·········(0)····17923·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/ssa_checks.html
498 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/498 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/
499 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/499 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/
500 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/500 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/
501 -rw-r--r--···0·root·········(0)·root·········(0)······992·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/.build501 -rw-r--r--···0·root·········(0)·root·········(0)······992·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/.build
502 -rw-r--r--···0·root·········(0)·root·········(0)·····5898·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/404.html502 -rw-r--r--···0·root·········(0)·root·········(0)·····5898·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/404.html
503 -rw-r--r--···0·root·········(0)·root·········(0)····35021·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/algorithm_details.html503 -rw-r--r--···0·root·········(0)·root·········(0)····35021·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/algorithm_details.html
504 -rw-r--r--···0·root·········(0)·root·········(0)·····6552·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/api-reference.html504 -rw-r--r--···0·root·········(0)·root·········(0)·····6552·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/api-reference.html
505 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/assets/505 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/assets/
506 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/assets/logo.png506 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/assets/logo.png
507 -rw-r--r--···0·root·········(0)·root·········(0)···127045·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/crypto.epub507 -rw-r--r--···0·root·········(0)·root·········(0)···127047·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/crypto.epub
508 -rw-r--r--···0·root·········(0)·root·········(0)···294347·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/crypto.html508 -rw-r--r--···0·root·········(0)·root·········(0)···294347·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/crypto.html
509 -rw-r--r--···0·root·········(0)·root·········(0)·····9896·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/crypto_app.html509 -rw-r--r--···0·root·········(0)·root·········(0)·····9896·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/crypto_app.html
510 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/dist/510 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/dist/
511 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/dist/handlebars.runtime-CFQAK6SD.js511 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/dist/handlebars.runtime-CFQAK6SD.js
512 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/dist/handlebars.templates-K7URE6B4.js512 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/dist/handlebars.templates-K7URE6B4.js
513 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/dist/html-55NP3CS6.js513 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/dist/html-55NP3CS6.js
514 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/dist/html-erlang-WGRVP7UZ.css514 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/dist/html-erlang-WGRVP7UZ.css
Offset 546, 15 lines modifiedOffset 546, 15 lines modified
546 -rw-r--r--···0·root·········(0)·root·········(0)····21770·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/cond_break_dialog.jpg546 -rw-r--r--···0·root·········(0)·root·········(0)····21770·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/cond_break_dialog.jpg
547 -rw-r--r--···0·root·········(0)·root·········(0)····13532·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/function_break_dialog.jpg547 -rw-r--r--···0·root·········(0)·root·········(0)····13532·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/function_break_dialog.jpg
548 -rw-r--r--···0·root·········(0)·root·········(0)····28924·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/interpret.jpg548 -rw-r--r--···0·root·········(0)·root·········(0)····28924·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/interpret.jpg
549 -rw-r--r--···0·root·········(0)·root·········(0)····14414·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/line_break_dialog.jpg549 -rw-r--r--···0·root·········(0)·root·········(0)····14414·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/line_break_dialog.jpg
550 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/logo.png550 -rw-r--r--···0·root·········(0)·root·········(0)·····5837·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/logo.png
551 -rw-r--r--···0·root·········(0)·root·········(0)····40742·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/monitor.jpg551 -rw-r--r--···0·root·········(0)·root·········(0)····40742·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/monitor.jpg
552 -rw-r--r--···0·root·········(0)·root·········(0)····34504·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/view.jpg552 -rw-r--r--···0·root·········(0)·root·········(0)····34504·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/assets/view.jpg
553 -rw-r--r--···0·root·········(0)·root·········(0)···219256·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/debugger.epub553 -rw-r--r--···0·root·········(0)·root·········(0)···219257·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/debugger.epub
554 -rw-r--r--···0·root·········(0)·root·········(0)····12979·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/debugger.html554 -rw-r--r--···0·root·········(0)·root·········(0)····12979·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/debugger.html
555 -rw-r--r--···0·root·········(0)·root·········(0)····51908·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/debugger_chapter.html555 -rw-r--r--···0·root·········(0)·root·········(0)····51908·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/debugger_chapter.html
556 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/556 drwxr-xr-x···0·root·········(0)·root·········(0)········0·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/
557 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/handlebars.runtime-CFQAK6SD.js557 -rw-r--r--···0·root·········(0)·root·········(0)····20933·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/handlebars.runtime-CFQAK6SD.js
558 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/handlebars.templates-K7URE6B4.js558 -rw-r--r--···0·root·········(0)·root·········(0)····33580·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/handlebars.templates-K7URE6B4.js
559 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/html-55NP3CS6.js559 -rw-r--r--···0·root·········(0)·root·········(0)····70589·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/html-55NP3CS6.js
560 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/html-erlang-WGRVP7UZ.css560 -rw-r--r--···0·root·········(0)·root·········(0)····67213·2025-03-11·08:30:48.000000·./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/html-erlang-WGRVP7UZ.css
Offset 567, 15 lines modifiedOffset 567, 15 lines modified
Max diff block lines reached; 62345/82947 bytes (75.16%) of diff not shown.
589 B
./usr/share/doc/erlang-doc/html/doc/.build
    
Offset 30, 15 lines modifiedOffset 30, 15 lines modified
30 dist/lato-latin-300-normal-YUMVEFOL.woff230 dist/lato-latin-300-normal-YUMVEFOL.woff2
31 dist/lato-latin-400-normal-W7754I4D.woff231 dist/lato-latin-400-normal-W7754I4D.woff2
32 dist/lato-latin-700-normal-2XVSBPG4.woff232 dist/lato-latin-700-normal-2XVSBPG4.woff2
33 dist/lato-latin-ext-300-normal-VPGGJKJL.woff233 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
34 dist/lato-latin-ext-400-normal-N27NCBWW.woff234 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
35 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff235 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
36 dist/remixicon-NKANDIL5.woff236 dist/remixicon-NKANDIL5.woff2
37 dist/search_data-67BC8981.js37 dist/search_data-A8289C95.js
38 dist/sidebar_items-E71B297A.js38 dist/sidebar_items-E71B297A.js
39 edoc.html39 edoc.html
40 edoc.html40 edoc.html
41 efficiency_guide.html41 efficiency_guide.html
42 efficiency_guide.html42 efficiency_guide.html
43 eldap.html43 eldap.html
44 eldap.html44 eldap.html
586 B
./usr/share/doc/erlang-doc/html/doc/search.html
    
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-67BC8981.js"></script>114 <script·src="dist/search_data-A8289C95.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>
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,·Mar·18·2025·07:58: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,·Mar·18·2025·08:53:20,·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="8237935892-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="8237935892-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·c63b10c3b119697b00439e35e3ed0bdd1283194c26afb41f36fbaac42c8a3664·...·]-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="6347080233-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="6347080233-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·efe252205d07188a9cab7a12d3be19fa6e2e26ec971a38b4fa80cc5d95e3e9b2·...·]-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="8237935892-3">(</span><span·class="p"·data-group-id="8237935892-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="6347080233-3">(</span><span·class="p"·data-group-id="6347080233-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="8237935892-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="8237935892-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="6347080233-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="6347080233-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="8237935892-5">(</span><span·class="p"·data-group-id="8237935892-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="6347080233-5">(</span><span·class="p"·data-group-id="6347080233-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="3483569468-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="3483569468-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·9df1bb06a236bd06ef84c58fbd1e13fe619e3fd3804d144502a510e4619e3bba·...·]-2">}</span><span·class="p">.</span><span·class="w">40 4&gt;·</span><span·class="p"·data-group-id="1620305296-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="1620305296-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·b4d2f082fec80d55451e3d22a781943efc6fed436c567c1ee2c5deb1d49940d7·...·]-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="3483569468-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="3483569468-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·0fc04f804c296b0ba6f8fa8c7409f610661728196c0c47bcc96e20726179553d·...·]-4">}</span><span·class="p">.</span><span·class="w">42 5&gt;·</span><span·class="p"·data-group-id="1620305296-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="1620305296-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·68dd6a7d7d686435829cb0bcfbe739cfacea811d77322b6b078093add4f1a2eb·...·]-4">}</span><span·class="p">.</span><span·class="w">
43 </span><span·class="p"·data-group-id="3483569468-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3483569468-5">}</span><span·class="gp·unselectable">43 </span><span·class="p"·data-group-id="1620305296-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1620305296-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="3011611859-1">(</span><span·class="p"·data-group-id="3011611859-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="4755004406-1">(</span><span·class="p"·data-group-id="4755004406-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
    
Offset 27, 24 lines modifiedOffset 27, 24 lines modified
27 ··<span·class="text">Opaque·Type·Aliases</span>27 ··<span·class="text">Opaque·Type·Aliases</span>
28 </h2>28 </h2>
29 <p>The·main·use·case·for·opacity·in·Erlang·is·to·hide·the·implementation·of·a·data29 <p>The·main·use·case·for·opacity·in·Erlang·is·to·hide·the·implementation·of·a·data
30 type,·enabling·evolving·the·API·while·minimizing·the·risk·of·breaking·consumers.30 type,·enabling·evolving·the·API·while·minimizing·the·risk·of·breaking·consumers.
31 The·runtime·does·not·check·opacity.·Dialyzer·provides·some·opacity-checking,·but31 The·runtime·does·not·check·opacity.·Dialyzer·provides·some·opacity-checking,·but
32 the·rest·is·up·to·convention.</p><p>This·document·explains·what·Erlang·opacity·is·(and·the·trade-offs·involved)·via32 the·rest·is·up·to·convention.</p><p>This·document·explains·what·Erlang·opacity·is·(and·the·trade-offs·involved)·via
33 the·example·of·the·<a·href="../../../lib/stdlib/doc/html/sets.html#t:set/0"><code·class="inline">sets:set()</code></a>·data·type.·This·type·<em>was</em>33 the·example·of·the·<a·href="../../../lib/stdlib/doc/html/sets.html#t:set/0"><code·class="inline">sets:set()</code></a>·data·type.·This·type·<em>was</em>
34 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="8498072032-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="8498072032-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><span·class="p"·data-group-id="8498072032-2">{</span><span·class="ss">segs</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">segs</span><span·class="p"·data-group-id="8498072032-3">(</span><span·class="n">Element</span><span·class="p"·data-group-id="8498072032-3">)</span><span·class="p"·data-group-id="8498072032-2">}</span><span·class="p">.</span></code></pre><p>OTP·24·changed·the·definition·to·the·following·in 
35 <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</[·...·truncated·by·diffoscope;·len:·1135,·SHA:·cc883de2991b79c77064b31f81022eb544ea572fc332c296a7cddc46b57d8bc0·...·]34 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="401[·...·truncated·by·diffoscope;·len:·732,·SHA:·c5510cc585ca1921b90e7c931519a8a6a6be5ada339b749ddf984f39848d5b11·...·]
 35 <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="7669266588-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="7669266588-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><span·class="p"·data-group-id="7669266588-2">{</span><span·class="ss">segs</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="nf">segs</span><span·class="p"·data-group-id="7669266588-3">(</span><span·class="n">Element</span><span·class="p"·data-group-id="7669266588-3">)</span><span·class="p"·data-group-id="7669266588-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="7669266588-4">#{</span><span·class="n">Element</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="o">?</span><span·class="n">VALUE</span><span·class="p"·data-group-id="7669266588-4">}</span><span·class="p">.</span></code></pre><p>And·this·change·was·safer·and·more·backwards-compatible·than·if·the·type·had
36 been·defined·with·<code·class="inline">-type</code>·instead·of·<code·class="inline">-opaque</code>.·Here·is·why:·when·a·module36 been·defined·with·<code·class="inline">-type</code>·instead·of·<code·class="inline">-opaque</code>.·Here·is·why:·when·a·module
37 defines·an·<code·class="inline">-opaque</code>,·the·contract·is·that·only·the·defining·module·should·rely37 defines·an·<code·class="inline">-opaque</code>,·the·contract·is·that·only·the·defining·module·should·rely
38 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·technically38 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
39 broke·the·contract,·and·opted·in·to·being·potentially·broken·when·the·definition39 broke·the·contract,·and·opted·in·to·being·potentially·broken·when·the·definition
40 of·<code·class="inline">set()</code>·changed.·Before·OTP·24,·this·code·printed·<code·class="inline">ok</code>.·In·OTP·24·it·may40 of·<code·class="inline">set()</code>·changed.·Before·OTP·24,·this·code·printed·<code·class="inline">ok</code>.·In·OTP·24·it·may
41 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="0226623307-1">(</span><span·class="p"·data-group-id="0226623307-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">41 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="1899317605-1">(</span><span·class="p"·data-group-id="1899317605-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
42 ····</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="0226623307-2">(</span><span·class="n">Set</span><span·class="p"·data-group-id="0226623307-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">42 ····</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="1899317605-2">(</span><span·class="n">Set</span><span·class="p"·data-group-id="1899317605-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
43 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0226623307-3">(</span><span·class="s">&quot;ok&quot;</span><span·class="p"·data-group-id="0226623307-3">)</span><span·class="w">43 ········</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="1899317605-3">(</span><span·class="s">&quot;ok&quot;</span><span·class="p"·data-group-id="1899317605-3">)</span><span·class="w">
44 </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·some44 </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
45 recommendations:</strong></p><ul><li>Don't·examine·the·underlying·type·using·pattern-matching,·guards,·or·functions45 recommendations:</strong></p><ul><li>Don't·examine·the·underlying·type·using·pattern-matching,·guards,·or·functions
46 that·reveal·the·type,·such·as·<a·href="../../../lib/../erts/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.·For46 that·reveal·the·type,·such·as·<a·href="../../../lib/../erts/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
47 example,·<code·class="inline">sets</code>·module·provides·<a·href="../../../lib/stdlib/doc/html/sets.html#new/0"><code·class="inline">sets:new/0</code></a>,·<a·href="../../../lib/stdlib/doc/html/sets.html#add_element/2"><code·class="inline">sets:add_element/2</code></a>,47 example,·<code·class="inline">sets</code>·module·provides·<a·href="../../../lib/stdlib/doc/html/sets.html#new/0"><code·class="inline">sets:new/0</code></a>,·<a·href="../../../lib/stdlib/doc/html/sets.html#add_element/2"><code·class="inline">sets:add_element/2</code></a>,
48 <a·href="../../../lib/stdlib/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/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·the48 <a·href="../../../lib/stdlib/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/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
49 other·way·around.·Generally,·you·can·rely·on·the·property·that·<code·class="inline">the_opaque(T)</code>49 other·way·around.·Generally,·you·can·rely·on·the·property·that·<code·class="inline">the_opaque(T)</code>
50 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,50 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,
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
    
Offset 200, 15 lines modifiedOffset 200, 15 lines modified
200 </span><span·class="gp·unselectable">$·</span><span·class="">cd·erts/emulator200 </span><span·class="gp·unselectable">$·</span><span·class="">cd·erts/emulator
201 </span><span·class="gp·unselectable">$·</span><span·class="">make·debug201 </span><span·class="gp·unselectable">$·</span><span·class="">make·debug
202 </span><span·class="gp·unselectable">$·</span><span·class="">cd·../etc202 </span><span·class="gp·unselectable">$·</span><span·class="">cd·../etc
203 </span><span·class="gp·unselectable">$·</span><span·class="">make·debug203 </span><span·class="gp·unselectable">$·</span><span·class="">make·debug
204 </span></code></pre><p>and·sometimes</p><pre><code·class="makeup·shell"·translate="no"><span·class="gp·unselectable">$·</span><span·class="">cd·$ERL_TOP204 </span></code></pre><p>and·sometimes</p><pre><code·class="makeup·shell"·translate="no"><span·class="gp·unselectable">$·</span><span·class="">cd·$ERL_TOP
205 </span><span·class="gp·unselectable">$·</span><span·class="">make·local_setup205 </span><span·class="gp·unselectable">$·</span><span·class="">make·local_setup
206 </span></code></pre><p>So·now·when·you·run·<code·class="inline">$ERL_TOP/erl.exe</code>,·you·should·have·a·debug·compiled206 </span></code></pre><p>So·now·when·you·run·<code·class="inline">$ERL_TOP/erl.exe</code>,·you·should·have·a·debug·compiled
207 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="0312878804-1">(</span><span·class="ss">system_version</span><span·class="p"·data-group-id="0312878804-1">)</span><span·class="p">.</span></code></pre><p>in·the·erlang·shell.·If·the·returned·string·contains·<code·class="inline">[debug]</code>,·you207 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="4794999693-1">(</span><span·class="ss">system_version</span><span·class="p"·data-group-id="4794999693-1">)</span><span·class="p">.</span></code></pre><p>in·the·erlang·shell.·If·the·returned·string·contains·<code·class="inline">[debug]</code>,·you
208 got·a·debug·compiled·emulator.</p><p>To·hack·the·erlang·libraries,·you·simply·do·a·<code·class="inline">make·opt</code>·in·the208 got·a·debug·compiled·emulator.</p><p>To·hack·the·erlang·libraries,·you·simply·do·a·<code·class="inline">make·opt</code>·in·the
209 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/stdlib209 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
210 </span><span·class="gp·unselectable">$·</span><span·class="">make·opt210 </span><span·class="gp·unselectable">$·</span><span·class="">make·opt
211 </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/src211 </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
212 </span><span·class="gp·unselectable">$·</span><span·class="">make·opt212 </span><span·class="gp·unselectable">$·</span><span·class="">make·opt
213 </span></code></pre><p>Note·that·you're·expected·to·have·a·fresh·Erlang·in·your·path·when213 </span></code></pre><p>Note·that·you're·expected·to·have·a·fresh·Erlang·in·your·path·when
214 doing·this,·preferably·the·plain·27·you·have·built·in·the·previous214 doing·this,·preferably·the·plain·27·you·have·built·in·the·previous
Offset 223, 19 lines modifiedOffset 223, 19 lines modified
223 </span><span·class="">:$ERL_TOP/erts/etc/win32/wsl_tools:$ERL_TOP/bootstrap/bin:$PATH223 </span><span·class="">:$ERL_TOP/erts/etc/win32/wsl_tools:$ERL_TOP/bootstrap/bin:$PATH
224 </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·a224 </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
225 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/stdlib225 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
226 </span><span·class="gp·unselectable">$·</span><span·class="">make·TESTROOT=/tmp/erlang_release·release226 </span><span·class="gp·unselectable">$·</span><span·class="">make·TESTROOT=/tmp/erlang_release·release
227 </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>,227 </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>,
228 <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·the228 <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
229 host·OS·tested·in·<em>runtime</em>,·the·exactly·same·beam·files·should·be229 host·OS·tested·in·<em>runtime</em>,·the·exactly·same·beam·files·should·be
230 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="8227119017-1">(</span><span·class="p"·data-group-id="8227119017-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">230 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="7964676181-1">(</span><span·class="p"·data-group-id="7964676181-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
231 ····</span><span·class="p"·data-group-id="8227119017-2">{</span><span·class="ss">win32</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="8227119017-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 ····</span><span·class="p"·data-group-id="7964676181-2">{</span><span·class="ss">win32</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="7964676181-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ········</span><span·class="nf">do_windows_specific</span><span·class="p"·data-group-id="8227119017-3">(</span><span·class="p"·data-group-id="8227119017-3">)</span><span·class="p">;</span><span·class="w">232 ········</span><span·class="nf">do_windows_specific</span><span·class="p"·data-group-id="7964676181-3">(</span><span·class="p"·data-group-id="7964676181-3">)</span><span·class="p">;</span><span·class="w">
233 ····</span><span·class="n">Other</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">233 ····</span><span·class="n">Other</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
234 ········</span><span·class="nf">do_fallback_or_exit</span><span·class="p"·data-group-id="8227119017-4">(</span><span·class="p"·data-group-id="8227119017-4">)</span><span·class="w">234 ········</span><span·class="nf">do_fallback_or_exit</span><span·class="p"·data-group-id="7964676181-4">(</span><span·class="p"·data-group-id="7964676181-4">)</span><span·class="w">
235 </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">235 </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">
236 ··<a·href="#frequently-asked-questions"·class="hover-link">236 ··<a·href="#frequently-asked-questions"·class="hover-link">
237 ····<i·class="ri-link-m"·aria-hidden="true"></i>237 ····<i·class="ri-link-m"·aria-hidden="true"></i>
238 ··</a>238 ··</a>
239 ··<span·class="text">Frequently·Asked·Questions</span>239 ··<span·class="text">Frequently·Asked·Questions</span>
240 </h2>240 </h2>
241 <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++241 <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++
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="5182874742-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="5182874742-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="7643875362-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="7643875362-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
    
Offset 56, 22 lines modifiedOffset 56, 22 lines modified
56 classes,·with·different·origins.·The·<a·href="expressions.xhtml#try">try</a>·expression·can56 classes,·with·different·origins.·The·<a·href="expressions.xhtml#try">try</a>·expression·can
57 distinguish·between·the·different·classes,·whereas·the57 distinguish·between·the·different·classes,·whereas·the
58 <a·href="expressions.xhtml#catch-and-throw">catch</a>·expression·cannot.·<code·class="inline">try</code>·and·<code·class="inline">catch</code>·are·described58 <a·href="expressions.xhtml#catch-and-throw">catch</a>·expression·cannot.·<code·class="inline">try</code>·and·<code·class="inline">catch</code>·are·described
59 in·<a·href="expressions.xhtml">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="../../../lib/../erts/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="../../../lib/../erts/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="../../../lib/../erts/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="../../../lib/../erts/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·(see59 in·<a·href="expressions.xhtml">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="../../../lib/../erts/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="../../../lib/../erts/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="../../../lib/../erts/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="../../../lib/../erts/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
60 <a·href="errors.xhtml#exit_reasons">Exit·Reason</a>),·and·a·stack·trace·(which·aids·in·finding60 <a·href="errors.xhtml#exit_reasons">Exit·Reason</a>),·and·a·stack·trace·(which·aids·in·finding
61 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·for61 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
62 any·exception·class,·or·as·part·of·the·exit·reason·when·a·run-time·error·is62 any·exception·class,·or·as·part·of·the·exit·reason·when·a·run-time·error·is
63 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="8342312565-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8342312565-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="n">Stacktrace</span><span·class="p"·data-group-id="834[·...·truncated·by·diffoscope;·len:·453,·SHA:·7d61fc96590784a4885b6cc6eeae52f0ab202e5229ea00365ad381bcc0a2b08c·...·]-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stacktrace</span><span·class="p">.</span><span·class="w">63 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="5502542990-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5502542990-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="n">Stacktrace</span><span·class="p"·data-group-id="550[·...·truncated·by·diffoscope;·len:·453,·SHA:·0f4d823e050a92ba5028552a3514a66de844521a16758f0cc5e00775dfdb7c13·...·]-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Stacktrace</span><span·class="p">.</span><span·class="w">
64 </span><span·class="p"·data-group-id="8342312565-5">[</span><span·class="p"·data-group-id="8342312565-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:·f8fc927c6ba41c0e61c6c108db411cf29f4bda9555420ada86d8e7bfd5e1105d·...·]-6">}</span><span·class="p">,</span><span·class="w">64 </span><span·class="p"·data-group-id="5502542990-5">[</span><span·class="p"·data-group-id="5502542990-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:·603bb93f70b42bbd6fe378b15c62af65e0e0a8cc0d6489cb9b83bea65a31d47a·...·]-6">}</span><span·class="p">,</span><span·class="w">
65 ·</span><span·class="p"·data-group-id="8342312565-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="8342312565-9">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·b0f06259e337651f51a5807795428b78d46ea80535e34fd0e6e00e66cfe4f8bc·...·]-8">}</span><span·class="p">,</span><span·class="w">65 ·</span><span·class="p"·data-group-id="5502542990-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="5502542990-9">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·0e84b624af177ada488dcf49a6cfdbe96b5bb5c272b4279e6201c52d0f25656e·...·]-8">}</span><span·class="p">,</span><span·class="w">
66 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8342312565-5">]</span><span·class="gp·unselectable">66 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5502542990-5">]</span><span·class="gp·unselectable">
67 &gt;·</span><span·class="k">try</span><span·class="w">·</span><span·class="nf">throw</span><span·class="p"·data-group-id="8342312565-10">(</span><span·class="ss">test</span><span·class="p"·data-group-id="8342312565-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">67 &gt;·</span><span·class="k">try</span><span·class="w">·</span><span·class="nf">throw</span><span·class="p"·data-group-id="5502542990-10">(</span><span·class="ss">test</span><span·class="p"·data-group-id="5502542990-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">
68 </span><span·class="p"·data-group-id="8342312565-11">[</span><span·class="p"·data-group-id="8342312565-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:·eca08bebb9cee8a011e3529531445b5b09a883058e51e513c4e6605811a572ba·...·]-12">}</span><span·class="p">,</span><span·class="w">68 </span><span·class="p"·data-group-id="5502542990-11">[</span><span·class="p"·data-group-id="5502542990-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:·fd234c23e675a4c32fdb0e0384a3d1021bd9d731f68eee66d32f653bddb520b9·...·]-12">}</span><span·class="p">,</span><span·class="w">
69 ·</span><span·class="p"·data-group-id="8342312565-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="8342312565-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·732c9f8bd27cd99e9f9a2881e6b58a1d6749faef304d8a9581b5df16b23b3424·...·]-14">}</span><span·class="p">,</span><span·class="w">69 ·</span><span·class="p"·data-group-id="5502542990-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="5502542990-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·9efae72b4bb3abaa4f05412ac713271ca9f2bfecd101bb8a6e00f21574855f65·...·]-14">}</span><span·class="p">,</span><span·class="w">
70 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8342312565-11">]</span></code></pre><p><a·href=""·id="stacktrace"></a></p><h3·id="the-call-stack-back-trace-stacktrace"·class="section-heading">70 ·</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5502542990-11">]</span></code></pre><p><a·href=""·id="stacktrace"></a></p><h3·id="the-call-stack-back-trace-stacktrace"·class="section-heading">
71 ··<a·href="#the-call-stack-back-trace-stacktrace"·class="hover-link">71 ··<a·href="#the-call-stack-back-trace-stacktrace"·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">The·call-stack·back·trace·(stacktrace)</span>74 ··<span·class="text">The·call-stack·back·trace·(stacktrace)</span>
75 </h3>75 </h3>
76 <p>The·stack·back-trace·(<a·href="../../../lib/../erts/doc/html/erlang.html#t:stacktrace/0"><em>stacktrace</em></a>)·is·a·list·that76 <p>The·stack·back-trace·(<a·href="../../../lib/../erts/doc/html/erlang.html#t:stacktrace/0"><em>stacktrace</em></a>)·is·a·list·that
77 contains·<code·class="inline">{Module,·Function,·Arity,·ExtraInfo}</code>·and/or·<code·class="inline">{Fun,·Arity,·ExtraInfo}</code>77 contains·<code·class="inline">{Module,·Function,·Arity,·ExtraInfo}</code>·and/or·<code·class="inline">{Fun,·Arity,·ExtraInfo}</code>
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
    
Offset 27, 23 lines modifiedOffset 27, 23 lines modified
27 ··<span·class="text">Drivers·and·Concurrency</span>27 ··<span·class="text">Drivers·and·Concurrency</span>
28 </h2>28 </h2>
29 <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·have29 <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
30 been·opened·to·the·same·driver,·only·code·for·one·port·at·the·same·time·can·be30 been·opened·to·the·same·driver,·only·code·for·one·port·at·the·same·time·can·be
31 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·does31 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
32 some·heavy·calculation·and·returns·a·result),·several·ports·with·registered32 some·heavy·calculation·and·returns·a·result),·several·ports·with·registered
33 names·can·be·opened·beforehand,·and·the·port·to·be·used·can·be·chosen·based·on33 names·can·be·opened·beforehand,·and·the·port·to·be·used·can·be·chosen·based·on
34 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="6418509121-1">(</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="6418509121-2">(</span><span·class="p"·data-group-id="6418509121-2">)</span><span·class="p">,</span><span·class="w">34 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="9598994254-1">(</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="9598994254-2">(</span><span·class="p"·data-group-id="9598994254-2">)</span><span·class="p">,</span><span·class="w">
35 »       </span><span·class="p"·data-group-id="6418509121-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">35 »       </span><span·class="p"·data-group-id="9598994254-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">
36 »       ·</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">36 »       ·</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">
37 »       ·</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">37 »       ·</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">
38 »       ·</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="6418509121-3">}</span><span·class="p"·data-group-id="6418509121-1">)</span><span·class="p">.</span><span·class="w">38 »       ·</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="9598994254-3">}</span><span·class="p"·data-group-id="9598994254-1">)</span><span·class="p">.</span><span·class="w">
  
39 </span><span·class="nf">client_port</span><span·class="p"·data-group-id="6418509121-4">(</span><span·class="p"·data-group-id="6418509121-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">39 </span><span·class="nf">client_port</span><span·class="p"·data-group-id="9598994254-4">(</span><span·class="p"·data-group-id="9598994254-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
40 ····</span><span·class="nf">element</span><span·class="p"·data-group-id="6418509121-5">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="6418509121-6">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="6418509121-6">)</span><sp[·...·truncated·by·diffoscope;·len:·363,·SHA:·2cbfe0d3cd1553be2c9ed7fff7e5c5a3b64389001d3356c8c8c1faa3eb29d460·...·]-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">40 ····</span><span·class="nf">element</span><span·class="p"·data-group-id="9598994254-5">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="9598994254-6">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="9598994254-6">)</span><sp[·...·truncated·by·diffoscope;·len:·363,·SHA:·8cbffd1c652bd55173364b7b5548df9a1abb78325d9d461bf93d5957be095558·...·]-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">
41 »       ····</span><span·class="o">?</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="6418509121-9">(</span><span·class="p"·data-group-id="6418509121-9">)</span><span·class="p"·data-group-id="6418509121-5">)</span><span·class="p">.</span></code></pre><p>As·long·as·there·are·no·more·than·16·schedulers,·there·will·never·be·any·lock41 »       ····</span><span·class="o">?</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="9598994254-9">(</span><span·class="p"·data-group-id="9598994254-9">)</span><span·class="p"·data-group-id="9598994254-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
42 contention·on·the·port·lock·for·the·driver.</p><h2·id="avoiding-copying-binaries-when-calling-a-driver"·class="section-heading">42 contention·on·the·port·lock·for·the·driver.</p><h2·id="avoiding-copying-binaries-when-calling-a-driver"·class="section-heading">
43 ··<a·href="#avoiding-copying-binaries-when-calling-a-driver"·class="hover-link">43 ··<a·href="#avoiding-copying-binaries-when-calling-a-driver"·class="hover-link">
44 ····<i·class="ri-link-m"·aria-hidden="true"></i>44 ····<i·class="ri-link-m"·aria-hidden="true"></i>
45 ··</a>45 ··</a>
46 ··<span·class="text">Avoiding·Copying·Binaries·When·Calling·a·Driver</span>46 ··<span·class="text">Avoiding·Copying·Binaries·When·Calling·a·Driver</span>
47 </h2>47 </h2>
48 <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="../../../lib/../erts/doc/html/erlang.html#port_control/3"><code·class="inline">port_control/3</code></a>·is·a48 <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="../../../lib/../erts/doc/html/erlang.html#port_control/3"><code·class="inline">port_control/3</code></a>·is·a
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="0857374259-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="0857374259-1">)</span><span·class="mi">1</span><span·class="o"[·...·truncated·by·diffoscope;·len:·158,·SHA:·9bb9c99e99da372ef7edb36ca49a30b6e3edac11cd9371ae4295c393775bd056·...·]-2">)</span><span·class="p">.</span><span·class="w">54 </span><span·class="p"·data-group-id="8776772991-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="8776772991-1">)</span><span·class="mi">1</span><span·class="o"[·...·truncated·by·diffoscope;·len:·158,·SHA:·b81a8431881ae369a661a4eb6f61519401bc106cb5d9a6070173b903c02169c3·...·]-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="0857374259-3">(</span><span·class="p"·data-group-id="0857374259-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="8776772991-3">(</span><span·class="p"·data-group-id="8776772991-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="3976946278-1">(</span><span·class="p"·data-group-id="3976946278-1">)</span><span·class="p">.</span><span·class="w">59 1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="1357784675-1">(</span><span·class="p"·data-group-id="1357784675-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="3976946278-2">(</span><span·class="p"·data-group-id="3976946278-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="3976946278-3">]</span><span·class="p"·data-group-id="39769462[·...·truncated·by·diffoscope;·len:·2,·SHA:·349c41201b62db851192665c504b350ff98c6b45fb62a8a2161f78b6534d8de9·...·]-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="1357784675-2">(</span><span·class="p"·data-group-id="1357784675-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="1357784675-3">]</span><span·class="p"·data-group-id="13577846[·...·truncated·by·diffoscope;·len:·2,·SHA:·f369cb89fc627e668987007d121ed1eacdc01db9e28f8bb26f358b7d8c4f08ac·...·]-2">)</span><span·class="p">.</span><span·class="w">
62 </span><span·class="p"·data-group-id="3976946278-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="3976946278-4">}</span><span·class="gp·unselectable">62 </span><span·class="p"·data-group-id="1357784675-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="1357784675-4">}</span><span·class="gp·unselectable">
63 (dilbert@uab)3&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="3976946278-5">(</span><span·class="p"·data-group-id="3976946278-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="1357784675-5">(</span><span·class="p"·data-group-id="1357784675-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
3.1 KB
OEBPS/content.opf
3.07 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="1186505662-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="1186505662-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="9472286544-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="9472286544-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="1186505662-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="1186505662-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="9472286544-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="9472286544-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="2760374383-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="2760374383-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2760374383-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="2760374383-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="2760374383-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="2760374383-3">}</span><span·class="w"> 
143 </span><span·class="nf">stop</span><span·class="p"·data-group-id="2760374383-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="2760374383-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="2982239667-1">(</span><span·class="n">StartType</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·740,·SHA:·5e3f78a9e58c2ee7fa66321011f7be526f8007d471136d88e985fa47317e96d2·...·]
 143 </span><span·class="nf">stop</span><span·class="p"·data-group-id="2982239667-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="2982239667-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="5681840377-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="5681840377-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="3086761755-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="3086761755-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="5681840377-2">(</span><span·class="ss">application</span><span·class="p"·data-group-id="5681840377-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="3086761755-2">(</span><span·class="ss">application</span><span·class="p"·data-group-id="3086761755-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="5681840377-3">(</span><span·class="p"·data-group-id="5681840377-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:·8561bf05f164225303b33a4e4a9fe1c70a0ff83418b84fb565180feb5a3304ce·...·]-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="3086761755-3">(</span><span·class="p"·data-group-id="3086761755-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:·3db505aefdddba81da002aed48535cd2a97320f7c8d2eb248fe1eb2aa6eb067c·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">start</span><span·class="p"·data-group-id="5681840377-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="5681840377-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="3086761755-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="3086761755-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="5681840377-6">(</span><span·class="p"·data-group-id="5681840377-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="3086761755-6">(</span><span·class="p"·data-group-id="3086761755-6">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">stop</span><span·class="p"·data-group-id="5681840377-7">(</span><span·class="p">_</span><span·class="n">State</span><span·class="p"·data-group-id="5681840377-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="3086761755-7">(</span><span·class="p">_</span><span·class="n">State</span><span·class="p"·data-group-id="3086761755-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="9862782253-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="1341239270-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="9862782253-2">[</span><span·class="p"·data-group-id="9862782253-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="9862782253-3">}</span><span·class="p">,</span><span·class="w">181 ·</span><span·class="p"·data-group-id="1341239270-2">[</span><span·class="p"·data-group-id="1341239270-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="1341239270-3">}</span><span·class="p">,</span><span·class="w">
182 ··</span><span·class="p"·data-group-id="9862782253-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="9862782253-4">}</span><span·class="p">,</span><span·class="w">182 ··</span><span·class="p"·data-group-id="1341239270-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="1341239270-4">}</span><span·class="p">,</span><span·class="w">
183 ··</span><span·class="p"·data-group-id="9862782253-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9862782253-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:·7c5a2f958b1b6b71719e2a8dd5969e25956fd903162bcb427e481c9da8449754·...·]-5">}</span><span·class="p">,</span><span·class="w">183 ··</span><span·class="p"·data-group-id="1341239270-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1341239270-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:·8db6dd7925523d41dfb9c14db400eaf357a90859dbc65ca0efce39664673d60e·...·]-5">}</span><span·class="p">,</span><span·class="w">
184 ··</span><span·class="p"·data-group-id="9862782253-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9862782253-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="9862782253-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·3528eaeb631c45a2e3917c612b94ba8fd346df2117eb5dc7e514cf63923db778·...·]-7">}</span><span·class="p">,</span><span·class="w">184 ··</span><span·class="p"·data-group-id="1341239270-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1341239270-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="1341239270-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·f27e7df9462ba04ed3b82c112e737d8d73b2d1c9dac24284905fe23200e55632·...·]-7">}</span><span·class="p">,</span><span·class="w">
185 ··</span><span·class="p"·data-group-id="9862782253-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9862782253-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:·da79bb2ca0950930b6c769452a4c564be19a07d75b7736c2635cf334fbae3d8e·...·]-9">}</span><span·class="p">,</span><span·class="w">185 ··</span><span·class="p"·data-group-id="1341239270-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1341239270-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:·dbca09f5b0736cbf03423ecc1d6f4eba2e7c616a8530dcae24298ad010ef0755·...·]-9">}</span><span·class="p">,</span><span·class="w">
186 ··</span><span·class="p"·data-group-id="9862782253-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9862782253-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="9862782253-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·4ff040def3fe451eff41ee011c1523e014d324de43f843685a2fa5ae0c5918a5·...·]-11">}</span><span·class="w">186 ··</span><span·class="p"·data-group-id="1341239270-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1341239270-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="1341239270-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·545c6a50afe8a6f64b2efbf2e135c81c49656c591f0641405148f860e84339df·...·]-11">}</span><span·class="w">
187 ·</span><span·class="p"·data-group-id="9862782253-2">]</span><span·class="p"·data-group-id="9862782253-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="1341239270-2">]</span><span·class="p"·data-group-id="1341239270-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="9551868218-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="9551868218-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="6360072226-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="6360072226-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="9551868218-2">(</span><span·class="p"·data-group-id="9551868218-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="6360072226-2">(</span><span·class="p"·data-group-id="6360072226-2">)</span><span·class="p">.</span><span·class="w">
310 </span><span·class="p"·data-group-id="9551868218-3">[</span><span·class="p"·data-group-id="9551868218-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:·9467ff5852fe8b8b5e5a0625d6e2455b19e6d02f791cb0038b50976e95f0d3c9·...·]-4">}</span><span·class="p">,</span><span·class="w">310 </span><span·class="p"·data-group-id="6360072226-3">[</span><span·class="p"·data-group-id="6360072226-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:·a11cd03ebf356a00c715e36155d98c4210ccb75648b1b5224bc773018fc4c752·...·]-4">}</span><span·class="p">,</span><span·class="w">
311 ·</span><span·class="p"·data-group-id="9551868218-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="9551868218-5">}</span><span·class="p">,</span><span·class="w">311 ·</span><span·class="p"·data-group-id="6360072226-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="6360072226-5">}</span><span·class="p">,</span><span·class="w">
312 ·</span><span·class="p"·data-group-id="9551868218-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="9551868218-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·392c8fb4ba1710cfaf3afa93766d5cec79dfe020de9516e6edaa73488c03fcae·...·]-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="6360072226-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="6360072226-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·756cdd266a9e433c0014c8fb1e95f19dfc20fb5115ba157f64ef5f00c9ab0f53·...·]-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="6211678553-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="6211678553-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="4949416556-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="4949416556-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="6211678553-2">(</span><span·class="p"·data-group-id="6211678553-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="4949416556-2">(</span><span·class="p"·data-group-id="4949416556-2">)</span><span·class="p">.</span><span·class="w">
317 </span><span·class="p"·data-group-id="6211678553-3">[</span><span·class="p"·data-group-id="6211678553-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:·e9daacfa69b56340a90d56459d7958817abce6ebb7df51635095004014e4489f·...·]-4">}</span><span·class="p">,</span><span·class="w">317 </span><span·class="p"·data-group-id="4949416556-3">[</span><span·class="p"·data-group-id="4949416556-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:·4f3bf3df3675714d4232b2ffa23458561580c37f262830f409d43bdee7987e82·...·]-4">}</span><span·class="p">,</span><span·class="w">
318 ·</span><span·class="p"·data-group-id="6211678553-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="6211678553-5">}</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·143a7e9c079b95d7693d84491e9cf7377cb9c3bcbd8290e91e2762f7b3c3c7d6·...·]-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="4949416556-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="4949416556-5">}</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·bd37eb4adf533f97ee0bd778dde591741d3addb7f0ac875dd02f99899f0333c0·...·]-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="6545427995-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="6545427995-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="2266508862-1">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="2266508862-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="6545427995-2">(</span><span·class="p"·data-group-id="6545427995-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="2266508862-2">(</span><span·class="p"·data-group-id="2266508862-2">)</span><span·class="p">.</span><span·class="w">
328 </span><span·class="p"·data-group-id="6545427995-3">[</span><span·class="p"·data-group-id="6545427995-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:·ccdcf8a3d90ff7550dcd8e293b99d1381aae547fabd7f66ebd73ba5bc4e662da·...·]-4">}</span><span·class="p">,</span><span·class="w">328 </span><span·class="p"·data-group-id="2266508862-3">[</span><span·class="p"·data-group-id="2266508862-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:·1b40ed3a4e58f8517d36d78b026f0576fd329f442fe8eff0419288382edeb8c0·...·]-4">}</span><span·class="p">,</span><span·class="w">
329 ·</span><span·class="p"·data-group-id="6545427995-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="6545427995-5">}</span><span·class="p">,</span><span·class="w">329 ·</span><span·class="p"·data-group-id="2266508862-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="2266508862-5">}</span><span·class="p">,</span><span·class="w">
330 ·</span><span·class="p"·data-group-id="6545427995-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="6545427995-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·d74168dca12596a92b8efbd318c46ea2838486f3bd6e28d7bee0f646ee42777d·...·]-3">]</span></code></pre><p>If·the·application·is·not·already·loaded,·the·application·controller·first·loads330 ·</span><span·class="p"·data-group-id="2266508862-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="2266508862-6">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·15241fbaa7ce122e544f1030df545eb9a4def011d405ae8ee84db52ef429e78d·...·]-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.3/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.3/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.3/doc/html/erlang.html#group_leader/0">group334 the·application.</p><p>The·application·master·establishes·itself·as·the·<a·href="../../erts-15.2.3/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="7438287228-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="3205877097-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="7438287228-2">[</span><span·class="p"·data-group-id="7438287228-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="7438287228-3">}</span><span·class="p">,</span><span·class="w">355 ·</span><span·class="p"·data-group-id="3205877097-2">[</span><span·class="p"·data-group-id="3205877097-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="3205877097-3">}</span><span·class="p">,</span><span·class="w">
356 ··</span><span·class="p"·data-group-id="7438287228-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="7438287228-4">}</span><span·class="p">,</span><span·class="w">356 ··</span><span·class="p"·data-group-id="3205877097-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="3205877097-4">}</span><span·class="p">,</span><span·class="w">
357 ··</span><span·class="p"·data-group-id="7438287228-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7438287228-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:·956fee691327bd0c687d51204d3ea115ec61fe882197d6c599be539859c11742·...·]-5">}</span><span·class="p">,</span><span·class="w">357 ··</span><span·class="p"·data-group-id="3205877097-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3205877097-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:·b0d66cb6becf3d2b8d2e7d21a75aea9a6aef570faf2bf92cfc82cca50d213e70·...·]-5">}</span><span·class="p">,</span><span·class="w">
358 ··</span><span·class="p"·data-group-id="7438287228-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7438287228-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="7438287228-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·5f68f8eb644530929679d1e5dcb0314c6b73fe124069b143731cd2a2e7889b47·...·]-7">}</span><span·class="p">,</span><span·class="w">358 ··</span><span·class="p"·data-group-id="3205877097-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3205877097-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="3205877097-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·9f8eee2d39de525102b1ca453d9e64074c56111c56fff6f7fd640a75b76d146a·...·]-7">}</span><span·class="p">,</span><span·class="w">
359 ··</span><span·class="p"·data-group-id="7438287228-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7438287228-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:·db777f0ba1597339c6cc4a86d4cf17695e0d2e61067a36714e82a931d40fe86c·...·]-9">}</span><span·class="p">,</span><span·class="w">359 ··</span><span·class="p"·data-group-id="3205877097-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3205877097-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:·680091ca2ba2b780a50d5b1b2288acf0e7c1f0b727c4dc1e419940a6e58e3342·...·]-9">}</span><span·class="p">,</span><span·class="w">
360 ··</span><span·class="p"·data-group-id="7438287228-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7438287228-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="7438287228-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·70836e910bfaa613737ce6411d7f945e76339963828ab234c026a654d5958238·...·]-11">}</span><span·class="p">,</span><span·class="w">360 ··</span><span·class="p"·data-group-id="3205877097-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3205877097-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="3205877097-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·8a3ead346dda811207e5af7f639a601d5a13905c91ed3fc23c68d71144b0bed4·...·]-11">}</span><span·class="p">,</span><span·class="w">
361 ··</span><span·class="p"·data-group-id="7438287228-14">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7438287228-15">[</span><span·class="p"·data-group-id="7438287228-16">{</span><span·class="ss">file</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·224,·SHA:·503566d3fa30b54ff8db7057ea0ba99741c960430db860bcea38e99f03b9ac04·...·]-14">}</span><span·class="w">361 ··</span><span·class="p"·data-group-id="3205877097-14">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3205877097-15">[</span><span·class="p"·data-group-id="3205877097-16">{</span><span·class="ss">file</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·224,·SHA:·26f42bb8e571a1bad7513c57e4e32710983a01200c8d90898ddfdfcd8aeb3508·...·]-14">}</span><span·class="w">
362 ·</span><span·class="p"·data-group-id="7438287228-2">]</span><span·class="p"·data-group-id="7438287228-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="3205877097-2">]</span><span·class="p"·data-group-id="3205877097-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.3/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.3/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="6998387474-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="6998387474-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:·a8fa1744a6dc8f6f4b2a8375046c5e19a85ddcd2a9ccad0f76332f9c97c9bd83·...·]-3">]</span><span·class="w">366 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="2516850240-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="2516850240-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:·b7fa039a71bd0629ee7b1a043c3fa16734e63ced34034600c20cd4ea74ae3359·...·]-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="6998387474-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="6998387474-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="2516850240-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="2516850240-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="6998387474-5">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="6998387474-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="2516850240-5">(</span><span·class="ss">ch_app</span><span·class="p"·data-group-id="2516850240-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="6998387474-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="6998387474-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="2516850240-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="2516850240-6">)</span><span·class="p">.</span><span·class="w">
371 </span><span·class="p"·data-group-id="6998387474-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="6998387474-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="2516850240-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="2516850240-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="2787538404-1">[</span><span·class="p"·data-group-id="2787538404-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2787538404-3">[</span><span·class="p"·data-group-id="2787538404-4">{[·...·truncated·by·diffoscope;·len:·330,·SHA:·89ccfa034a9a7929755ab6682b245b3373ac3e30d63830b7a80fa05d563bf529·...·]-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="2180287036-1">[</span><span·class="p"·data-group-id="2180287036-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2180287036-3">[</span><span·class="p"·data-group-id="2180287036-4">{[·...·truncated·by·diffoscope;·len:·330,·SHA:·3d2edc4b9a893459e15101d3f3acd35666e4c54625bbe61d0d4265dad4838e1d·...·]-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="2158787672-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="2715636383-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
128 ·</span><span·class="p"·data-group-id="2158787672-2">[</span><span·class="p"·data-group-id="2158787672-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2158787672-4">[</span><span·class="p"·data-group-id="2158787672-5">[·...·truncated·by·diffoscope;·len:·316,·SHA:·dbf3b0e747ad8df7d7782ee4c9a909bd1f0f4523308efa0544b16db3b7b8911b·...·]-2">]</span><span·class="p">,</span><span·class="w">128 ·</span><span·class="p"·data-group-id="2715636383-2">[</span><span·class="p"·data-group-id="2715636383-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2715636383-4">[</span><span·class="p"·data-group-id="2715636383-5">[·...·truncated·by·diffoscope;·len:·316,·SHA:·902e1dc28d75e851693cf4b6fca662f2b86f23db72e7f38fc2811b312c947d6a·...·]-2">]</span><span·class="p">,</span><span·class="w">
129 ·</span><span·class="p"·data-group-id="2158787672-6">[</span><span·class="p"·data-group-id="2158787672-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2158787672-8">[</span><span·class="p"·data-group-id="2158787672-9">[·...·truncated·by·diffoscope;·len:·316,·SHA:·3e3c1ea3754349ebf99bc8f882cfc74f2772d35f5432daa3fe17b871919af8d4·...·]-6">]</span><span·class="w">129 ·</span><span·class="p"·data-group-id="2715636383-6">[</span><span·class="p"·data-group-id="2715636383-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2715636383-8">[</span><span·class="p"·data-group-id="2715636383-9">[·...·truncated·by·diffoscope;·len:·316,·SHA:·4ebf5c7e76a4d3b0513d722a7aab46359763ef49726feaaa4b17afda68fff9f4·...·]-6">]</span><span·class="w">
130 </span><span·class="p"·data-group-id="2158787672-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="2715636383-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="7911029615-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="2153440644-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
150 ·</span><span·class="p"·data-group-id="7911029615-2">[</span><span·class="p"·data-group-id="7911029615-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7911029615-4">[</span><span·class="p"·data-group-id="7911029615-5"[·...·truncated·by·diffoscope;·len:·319,·SHA:·39d200758091d6576d57dc88fbdac2851bb0ce84af71124d6d16d2344523e819·...·]-2">]</span><span·class="p">,</span><span·class="w">150 ·</span><span·class="p"·data-group-id="2153440644-2">[</span><span·class="p"·data-group-id="2153440644-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2153440644-4">[</span><span·class="p"·data-group-id="2153440644-5"[·...·truncated·by·diffoscope;·len:·319,·SHA:·f9d1df0d1df1065b8f5f676acebc2fa1382407170f2375aeb19d01b5fb685590·...·]-2">]</span><span·class="p">,</span><span·class="w">
151 ·</span><span·class="p"·data-group-id="7911029615-6">[</span><span·class="p"·data-group-id="7911029615-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7911029615-8">[</span><span·class="p"·data-group-id="7911029615-9"[·...·truncated·by·diffoscope;·len:·319,·SHA:·4be51166e86f2fd77c184945c5037f6c4cfccbb3c7f89eb00a35fa1f4b165031·...·]-6">]</span><span·class="w">151 ·</span><span·class="p"·data-group-id="2153440644-6">[</span><span·class="p"·data-group-id="2153440644-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2153440644-8">[</span><span·class="p"·data-group-id="2153440644-9"[·...·truncated·by·diffoscope;·len:·319,·SHA:·1f5ad0c53ff5b10980e466e75bd84670e63d31e59cee72490893261629dff1de·...·]-6">]</span><span·class="w">
152 </span><span·class="p"·data-group-id="7911029615-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="2153440644-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="3866327112-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="8259540562-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
167 ·</span><span·class="p"·data-group-id="3866327112-2">[</span><span·class="p"·data-group-id="3866327112-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3866327112-4">[</span><span·class="p"·data-group-id="3866327112-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="3866327112-6">{</span><span·class="ss">advanced</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3866327112-7">[</span><span·class="p"·data-group-id="3866327112-7">]</span><span·class="p"·data-group-id="3866327112-6">}</span><span·class="p"·data-group-id="3866327112-5">}</span><span·class="p"·data-group-id="3866327112-4">]</span><span·class="p"·data-group-id="3866327112-3">}</span><span·class="p"·data-group-id="3866327112-2">]</span><span·class="p">,</span><span·class="w"> 
168 ·</span><span·class="p"·data-group-id="3866327112-8">[</span><span·class="p"·data-group-id="3866327112-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3866327112-10">[</span><span·class="p"·data-group-id="3866327112-1[·...·truncated·by·diffoscope;·len:·667,·SHA:·e96e1f57a122ba7b22571d18cb785de7526c72b90b4318015125b4fdf44236f1·...·]</span><span·class="w">167 ·</span><span·class="p"·data-group-id="8259540562-2">[</span><span·class="p"·data-group-id="8259540562-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8259540562-4">[</span><span·class="p"·data-group-id="8259540562-5"[·...·truncated·by·diffoscope;·len:·683,·SHA:·2883c9af23b897b047d571968292799265ead88a8c8a2bccdeac84c4e81956b3·...·]</span><span·class="w">
 168 ·</span><span·class="p"·data-group-id="8259540562-8">[</span><span·class="p"·data-group-id="8259540562-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8259540562-10">[</span><span·class="p"·data-group-id="8259540562-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="8259540562-12">{</span><span·class="ss">advanced</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8259540562-13">[</span><span·class="p"·data-group-id="8259540562-13">]</span><span·class="p"·data-group-id="8259540562-12">}</span><span·class="p"·data-group-id="8259540562-11">}</span><span·class="p"·data-group-id="8259540562-10">]</span><span·class="p"·data-group-id="8259540562-9">}</span><span·class="p"·data-group-id="8259540562-8">]</span><span·class="w">
169 </span><span·class="p"·data-group-id="3866327112-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="8259540562-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.1/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.1/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="1571710966-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="1571710966-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="2621152445-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="2621152445-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="1571710966-2">(</span><span·class="p"·data-group-id="1571710966-3">[</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">3</span><span·class="p"·data-group-id="1571710966-3">]</span><span·class="p"·data-group-id="1571710966-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="2621152445-2">(</span><span·class="p"·data-group-id="2621152445-3">[</span><span·class="ss">code_change</span><span·class="p">/</span><span·class="mi">3</span><span·class="p"·data-group-id="2621152445-3">]</span><span·class="p"·data-group-id="2621152445-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="1571710966-4">(</span><span·class="p"·data-group-id="1571710966-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="1571710966-5">}</span><s[·...·truncated·by·diffoscope;·len:·391,·SHA:·7a7183c624504b16dfc64e1aaaae7bf3f6267709f3834cea339ebc7591f73a1b·...·]-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="2621152445-4">(</span><span·class="p"·data-group-id="2621152445-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="2621152445-5">}</span><s[·...·truncated·by·diffoscope;·len:·391,·SHA:·4898e911049abe2234de9d194a6f78fce1f8f965cd05c5440d6cca3d5b9d4a23·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
178 ····</span><span·class="p"·data-group-id="1571710966-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="1571710966-7">}</span><span·class="p">;</span><span·class="w">178 ····</span><span·class="p"·data-group-id="2621152445-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="2621152445-7">}</span><span·class="p">;</span><span·class="w">
179 </span><span·class="nf">code_change</span><span·class="p"·data-group-id="1571710966-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:·75c49fc037b233f85d8a9d50a021292f3dff1289c1df23217ff83974d44d7ce3·...·]-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="2621152445-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:·9042de9c2468add4f528d53ea3fc14ded657f077cc707e2f8ead91a86bdf9201·...·]-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="1571710966-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1571710966-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:·4eae7204b8b3ab5a92573beb6ecc12187ebb6fe15db20841a913e1470e79dafc·...·]-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="2621152445-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2621152445-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:·41091305b20c6e82f45ee8017c34d15c7efb5cdaa6ad83419a64c780e2e6261b·...·]-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="4989942707-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="4989942707-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="6916920932-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="6916920932-1">}</span><span·class="w">
198 </span><span·class="p"·data-group-id="4989942707-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="4989942707-3">{</span><span·class="ss">advanced<[·...·truncated·by·diffoscope;·len:·254,·SHA:·9a658807b7c4536146e4353eb29fbbdc158e7a6989aa3d195427803fe89b1e25·...·]-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="6916920932-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="6916920932-3">{</span><span·class="ss">advanced<[·...·truncated·by·diffoscope;·len:·254,·SHA:·bac453d376ce4f24161e19054df1274b1892c89ede14b55c8d3a82e7d2d41755·...·]-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="3095007944-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">200 </span><span·class="p"·data-group-id="3478352393-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
201 ·</span><span·class="p"·data-group-id="3095007944-2">[</span><span·class="p"·data-group-id="3095007944-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3095007944-4">[</span><span·class="p"·data-group-id="3095007944-5">[·...·truncated·by·diffoscope;·len:·498,·SHA:·e0659bb39c1ee0cbcd4303c61133b6f341b33d6026078bfff9643ff377613fe7·...·]-2">]</span><span·class="p">,</span><span·class="w">201 ·</span><span·class="p"·data-group-id="3478352393-2">[</span><span·class="p"·data-group-id="3478352393-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3478352393-4">[</span><span·class="p"·data-group-id="3478352393-5">[·...·truncated·by·diffoscope;·len:·498,·SHA:·ad452c88cf308071c22d03bc8081cd7b8aea73f10cf1a9152a84db9f8c90e3d6·...·]-2">]</span><span·class="p">,</span><span·class="w">
202 ·</span><span·class="p"·data-group-id="3095007944-7">[</span><span·class="p"·data-group-id="3095007944-8">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3095007944-9">[</span><span·class="p"·data-group-id="3095007944-10"[·...·truncated·by·diffoscope;·len:·502,·SHA:·d574ed728c46cb832ac3a21bc652c8e5fa63ee0671691b1bd6e4bb0917d961ce·...·]-7">]</span><span·class="w">202 ·</span><span·class="p"·data-group-id="3478352393-7">[</span><span·class="p"·data-group-id="3478352393-8">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3478352393-9">[</span><span·class="p"·data-group-id="3478352393-10"[·...·truncated·by·diffoscope;·len:·502,·SHA:·fb2edf607d0d10a3c24dac5236e53adc75c99327c1666aeae329871d54648745·...·]-7">]</span><span·class="w">
203 </span><span·class="p"·data-group-id="3095007944-1">}</span><span·class="p">.</span><span·class="w">203 </span><span·class="p"·data-group-id="3478352393-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="3095007944-12">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">205 </span><span·class="p"·data-group-id="3478352393-12">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
206 ·</span><span·class="p"·data-group-id="3095007944-13">[</span><span·class="p"·data-group-id="3095007944-14">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3095007944-15">[</span><span·class="p"·data-group-id="3095007944-[·...·truncated·by·diffoscope;·len:·325,·SHA:·de148d1fccdd435817fcbb6025aad9fc62128cad77e5296bffd3774c8e5d5b4f·...·]-13">]</span><span·class="p">,</span><span·class="w">206 ·</span><span·class="p"·data-group-id="3478352393-13">[</span><span·class="p"·data-group-id="3478352393-14">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3478352393-15">[</span><span·class="p"·data-group-id="3478352393-[·...·truncated·by·diffoscope;·len:·325,·SHA:·d68fe48215ecca534a5f2e52fbdc003eeacd4af4fe94f1bb14be27d76730f329·...·]-13">]</span><span·class="p">,</span><span·class="w">
207 ·</span><span·class="p"·data-group-id="3095007944-17">[</span><span·class="p"·data-group-id="3095007944-18">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3095007944-19">[</span><span·class="p"·data-group-id="3095007944-[·...·truncated·by·diffoscope;·len:·325,·SHA:·734f02104f66600ed578713fe8239e2b0fb5c10abf99f76402b88df9c291b38e·...·]-17">]</span><span·class="w">207 ·</span><span·class="p"·data-group-id="3478352393-17">[</span><span·class="p"·data-group-id="3478352393-18">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3478352393-19">[</span><span·class="p"·data-group-id="3478352393-[·...·truncated·by·diffoscope;·len:·325,·SHA:·6bcbd227dfa38327e7d38eaf9a8edc7686ebbb31f00d74229a29590abbbf676f·...·]-17">]</span><span·class="w">
208 </span><span·class="p"·data-group-id="3095007944-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="3478352393-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="7980504873-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="0862508498-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
210 ·</span><span·class="p"·data-group-id="7980504873-2">[</span><span·class="p"·data-group-id="7980504873-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">210 ·</span><span·class="p"·data-group-id="0862508498-2">[</span><span·class="p"·data-group-id="0862508498-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">
211 ···</span><span·class="p"·data-group-id="7980504873-4">[</span><span·class="p"·data-group-id="7980504873-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="7980504873-5">}</span><span·class="p">,</span><span·class="w">211 ···</span><span·class="p"·data-group-id="0862508498-4">[</span><span·class="p"·data-group-id="0862508498-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="0862508498-5">}</span><span·class="p">,</span><span·class="w">
212 ····</span><span·class="p"·data-group-id="7980504873-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="7980504873-7">[</span><span·class="ss">ch3</sp[·...·truncated·by·diffoscope;·len:·256,·SHA:·a4e41099d51597bd5682d7285263a05ecda6ef18c52b8c1864d6bdb7c42d19a5·...·]-2">]</span><span·class="p">,</span><span·class="w">212 ····</span><span·class="p"·data-group-id="0862508498-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="0862508498-7">[</span><span·class="ss">ch3</sp[·...·truncated·by·diffoscope;·len:·256,·SHA:·aa150d49af001c33c8a4162cf82b6422e89bc0210d3c4fb0fc6a6a1037d9d289·...·]-2">]</span><span·class="p">,</span><span·class="w">
213 ·</span><span·class="p"·data-group-id="7980504873-8">[</span><span·class="p"·data-group-id="7980504873-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">213 ·</span><span·class="p"·data-group-id="0862508498-8">[</span><span·class="p"·data-group-id="0862508498-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">
214 ···</span><span·class="p"·data-group-id="7980504873-10">[</span><span·class="p"·data-group-id="7980504873-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="7980504873-11">}</span><span·class="p">,</span><span·class="w">214 ···</span><span·class="p"·data-group-id="0862508498-10">[</span><span·class="p"·data-group-id="0862508498-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="0862508498-11">}</span><span·class="p">,</span><span·class="w">
215 ····</span><span·class="p"·data-group-id="7980504873-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="7980504873-13">[</span><span·class="ss">ch3</[·...·truncated·by·diffoscope;·len:·261,·SHA:·f81c48fabe57db5dbe362e9704877364b0de8094d3d3f1840f9b073ef7c2c41d·...·]-8">]</span><span·class="w">215 ····</span><span·class="p"·data-group-id="0862508498-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="0862508498-13">[</span><span·class="ss">ch3</[·...·truncated·by·diffoscope;·len:·261,·SHA:·770896418f4160e08e8a438bb35e16714deeb7ae8f1dae82b8402b824a873302·...·]-8">]</span><span·class="w">
216 </span><span·class="p"·data-group-id="7980504873-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="0862508498-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="5851547701-1">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5851547701-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:·dc4de435d035d6dc80629c3252c9e294dbd52774cd483c8dd23ac2f49c95d303·...·]-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="2608904418-1">{</span><span·class="ss">ch4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2608904418-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:·273150bbc97176a2faac64f717d59b1cfbb93fadd5226bdd21be7666842c5d2f·...·]-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="5851547701-4">[</span><span·class="ss">ch4</span><span·class="p"·data-group-id="5851547701-4">]</span><span·class="p"·data-group-id="5851547701-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="2608904418-4">[</span><span·class="ss">ch4</span><span·class="p"·data-group-id="2608904418-4">]</span><span·class="p"·data-group-id="2608904418-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="7477072347-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="6975483945-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
235 ·</span><span·class="p"·data-group-id="7477072347-2">[</span><span·class="p"·data-group-id="7477072347-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7477072347-4">[</span><span·class="p"·data-group-id="7477072347-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="7477072347-6">{</span><span·class="ss">advanced</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7477072347-7">[</span><span·class="p"·data-group-id="7477072347-7">]</span><span·class="p"·data-group-id="7477072347-6">}</span><span·class="p"·data-group-id="7477072347-5">}</span><span·class="p"·data-group-id="7477072347-4">]</span><span·class="p"·data-group-id="7477072347-3">}</span><span·class="p"·data-group-id="7477072347-2">]</span><span·class="p">,</span><span·class="w"> 
236 ·</span><span·class="p"·data-group-id="7477072347-8">[</span><span·class="p"·data-group-id="7477072347-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7477072347-10">[</span><span·class="p"·data-group-id="7477072347-1[·...·truncated·by·diffoscope;·len:·667,·SHA:·6f316962f9bb23d432487a0a4e194b7e50f745adc20f8e44f111e2492383703c·...·]</span><span·class="w">235 ·</span><span·class="p"·data-group-id="6975483945-2">[</span><span·class="p"·data-group-id="6975483945-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6975483945-4">[</span><span·class="p"·data-group-id="6975483945-5"[·...·truncated·by·diffoscope;·len:·683,·SHA:·06d6242a9d85bbeeaa1f9b18dda374670333adec80017ba4580183b2b7848459·...·]</span><span·class="w">
 236 ·</span><span·class="p"·data-group-id="6975483945-8">[</span><span·class="p"·data-group-id="6975483945-9">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6975483945-10">[</span><span·class="p"·data-group-id="6975483945-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="6975483945-12">{</span><span·class="ss">advanced</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6975483945-13">[</span><span·class="p"·data-group-id="6975483945-13">]</span><span·class="p"·data-group-id="6975483945-12">}</span><span·class="p"·data-group-id="6975483945-11">}</span><span·class="p"·data-group-id="6975483945-10">]</span><span·class="p"·data-group-id="6975483945-9">}</span><span·class="p"·data-group-id="6975483945-8">]</span><span·class="w">
237 </span><span·class="p"·data-group-id="7477072347-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="6975483945-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="6934979689-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="6934979689-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="9366937942-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="9366937942-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="6934979689-2">(</span><span·class="p"·data-group-id="6934979689-3">[</span><span·class="ss">system_code_change</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="6934979689-3">]</span><span·class="p"·data-group-id="693497[·...·truncated·by·diffoscope;·len:·4,·SHA:·f1d7a746feae2dc8c221990d2c3f51f19b41c5e7d0be2f9f061ff97e28792512·...·]-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="9366937942-2">(</span><span·class="p"·data-group-id="9366937942-3">[</span><span·class="ss">system_code_change</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="9366937942-3">]</span><span·class="p"·data-group-id="936693[·...·truncated·by·diffoscope;·len:·4,·SHA:·307fbf6a9dce8cfea50a88c7636ba44021ddb8a75b478b561890eae635a46b92·...·]-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">
  
244 </span><span·class="nf">system_code_change</span><span·class="p"·data-group-id="6934979689-4">(</span><span·class="n">Chs</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">OldVsn</span><span·[·...·truncated·by·diffoscope;·len:·135,·SHA:·4b15d21cb879605feebf43ca3dadc741f5435615de8fc3b712e939e9eaf23b80·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">244 </span><span·class="nf">system_code_change</span><span·class="p"·data-group-id="9366937942-4">(</span><span·class="n">Chs</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Module</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">OldVsn</span><span·[·...·truncated·by·diffoscope;·len:·135,·SHA:·30b153df3fd323c5ecacd45010e995fe35c2e04d93a92cd438e28a0d782fb26a·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
Max diff block lines reached; 101735/152518 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.1/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.1/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="4010376030-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="4010376030-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="0026635922-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="0026635922-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="4010376030-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="4010376030-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.3/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="0026635922-2">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="0026635922-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.3/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.1/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.1/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="7824082566-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="7824082566-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="9715057943-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="9715057943-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="7824082566-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7824082566-3">&lt;&lt;</span><span·class="p"·data-group-id="7824082566-3">&gt;&gt;</span><span·class="p"·data-group-id="78240825[·...·truncated·by·diffoscope;·len:·2,·SHA:·3ada92f28b4ceda38562ebf047c6ff05400d4c572352a1142eedfef67d21e662·...·]-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="9715057943-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9715057943-3">&lt;&lt;</span><span·class="p"·data-group-id="9715057943-3">&gt;&gt;</span><span·class="p"·data-group-id="97150579[·...·truncated·by·diffoscope;·len:·2,·SHA:·44cb730c420480a0477b505ae68af508fb90f96cf0ec54c6ad16949dd427f13a·...·]-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="7824082566-4">(</span><span·class="p"·data-group-id="7824082566-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="7824082566-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·84c3ed1c171eb7a768f38f0811ebbb28dd9ef2be8ba9067a43250223417093bd·...·]-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="9715057943-4">(</span><span·class="p"·data-group-id="9715057943-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9715057943-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·f263c78322f9921f5735084dafac60e9d2f8993e35b54c2196cf9fb7aa6c362e·...·]-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="7824082566-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7824082566-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:·127,·SHA:·b731834dec98f73227d3728ed993d3774f654162e941af70fee9c0bc65c6345d·...·]-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="9715057943-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9715057943-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:·127,·SHA:·2e0abd53aea6d3f6b23bd66d9c59cb98f5b576292dd37178668922801919bb9b·...·]-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="7824082566-8">(</span><span·class="p"·data-group-id="7824082566-9">[</span><span·class="p"·data-group-id="7824082566-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="7824082566-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="9715057943-8">(</span><span·class="p"·data-group-id="9715057943-9">[</span><span·class="p"·data-group-id="9715057943-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="9715057943-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="4799030752-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="4799030752-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="4135350789-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="4135350789-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="4799030752-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4799030752-3">&lt;&lt;</span><span·class="p"·data-group-id="4799030752-3">&gt;&gt;</span><span·class="p"·data-group-id="479903075[·...·truncated·by·diffoscope;·len:·1,·SHA:·d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35·...·]-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="4135350789-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4135350789-3">&lt;&lt;</span><span·class="p"·data-group-id="4135350789-3">&gt;&gt;</span><span·class="p"·data-group-id="413535078[·...·truncated·by·diffoscope;·len:·1,·SHA:·19581e27de7ced00ff1ce50b2047e7a567c76b1cbaebabe5ef03f7c3017bb5b7·...·]-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="4799030752-4">(</span><span·class="p"·data-group-id="4799030752-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4799030752-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·58,·SHA:·d5362b63c28fd6285233f3a7a93828dd9435988b45d312346aa7baba9a6d7d51·...·]-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="4135350789-4">(</span><span·class="p"·data-group-id="4135350789-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4135350789-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·58,·SHA:·aaf4d08003889ae6f24a713d9618daa0b073da47f0b5b74fe0bf98f83f75c821·...·]-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="4799030752-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4799030752-7">&lt;&lt;</span><span·class="n">H</span><span·class="p">,</span><span·class="n">Acc</span><span·class="o">/</span><span[·...·truncated·by·diffoscope;·len:·126,·SHA:·2b1d8f2a4ffe100e72a53a507f3bb0b7d2f4fb82eeec64a15ac2af5ff2c6a263·...·]-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="4135350789-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4135350789-7">&lt;&lt;</span><span·class="n">H</span><span·class="p">,</span><span·class="n">Acc</span><span·class="o">/</span><span[·...·truncated·by·diffoscope;·len:·126,·SHA:·99014d953d517959f4fb98dc20a00c02c2e769a37300b47a00ca0b5bfb7c03b3·...·]-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="4799030752-8">(</span><span·class="p"·data-group-id="4799030752-9">[</span><span·class="p"·data-group-id="4799030752-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="4799030752-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="4135350789-8">(</span><span·class="p"·data-group-id="4135350789-9">[</span><span·class="p"·data-group-id="4135350789-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="4135350789-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="0003541398-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="0003541398-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="6963893871-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="6963893871-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="0003541398-2">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="0003541398-3">(</span><span·class="n">List</span><span·class="p"·data-group-id="0003541398-3">)</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·192,·SHA:·cecb5eeede9e66c68b9bbdbbc98d99ea0b6ba5253a04d508bed33ede250fc2cb·...·]-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="6963893871-2">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="6963893871-3">(</span><span·class="n">List</span><span·class="p"·data-group-id="6963893871-3">)</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·192,·SHA:·9c2dc514b6454236c9074f76d6e86ec8b0145e917bf82ceb2868b4ad6049164d·...·]-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="0003541398-5">(</span><span·class="p"·data-group-id="0003541398-6">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="0003541398-6">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·1904d8552d52b7c78c544464f35e41fd33f924b323d7239952a875280614ad7b·...·]-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="6963893871-5">(</span><span·class="p"·data-group-id="6963893871-6">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6963893871-6">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·eb1c1bda4883754e242949d50369d41bd4e49eb739b6317326eb2a24548cc2c2·...·]-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="0003541398-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0003541398-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:·6a1f8ddad7933edf295b1a1131f33b99ff70443866f11ebae983b7f1e3f352aa·...·]-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="6963893871-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6963893871-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:·1137dfb1732ed23ae29a06266fbc64c854b19f0d405623371b8edaecb0446baf·...·]-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="0003541398-9">(</span><span·class="p"·data-group-id="0003541398-10">[</span><span·class="p"·data-group-id="0003541398-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="0003541398-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="6963893871-9">(</span><span·class="p"·data-group-id="6963893871-10">[</span><span·class="p"·data-group-id="6963893871-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="6963893871-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="1958130573-1">(</span><span·class="p"·data-group-id="1958130573-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1958130573-2">]</span><span·class="p"·data-group-id="1958130573-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="0115170577-1">(</span><span·class="p"·data-group-id="0115170577-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="0115170577-2">]</span><span·class="p"·data-group-id="0115170577-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="1958130573-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="1958130573-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="0115170577-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="0115170577-3">)</span><span·class="p">,</span><span·class="w">
139 ····</span><span·class="p"·data-group-id="1958130573-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="1958130573-4">&gt;&gt;</span><span·class="p">;</span><span·class="w">139 ····</span><span·class="p"·data-group-id="0115170577-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="0115170577-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="1958130573-5">(</span><span·class="p"·data-group-id="1958130573-6">[</span><span·class="p"·data-group-id="1958130573-6">]</span><span·class="p"·data-group-id="1958130573-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="0115170577-5">(</span><span·class="p"·data-group-id="0115170577-6">[</span><span·class="p"·data-group-id="0115170577-6">]</span><span·class="p"·data-group-id="0115170577-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
141 ····</span><span·class="p"·data-group-id="1958130573-7">&lt;&lt;</span><span·class="p"·data-group-id="1958130573-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="0115170577-7">&lt;&lt;</span><span·class="p"·data-group-id="0115170577-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="2156249069-1">(</span><span·class="p"·data-group-id="2156249069-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="2156249069-2">&gt[·...·truncated·by·diffoscope;·len:·53,·SHA:·1aeddcd7bd7ac33c98892255770f8d6ccc11c8dfcbc0bbdb7e3ceb3e896531e5·...·]-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="6532617151-1">(</span><span·class="p"·data-group-id="6532617151-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="6532617151-2">&gt[·...·truncated·by·diffoscope;·len:·53,·SHA:·bb67021ee6dc4bb1ca2cae452d11d018118f9cac3967ad06668a878261b34322·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
143 ····</span><span·class="p"·data-group-id="2156249069-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="2156249069-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="2156249069-4">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·bd05e32d011e60742d9e5adab9d56f975a904d965419276e675a429a8eb8bf53·...·]-3">]</span><span·class="p">;</span><span·class="w">143 ····</span><span·class="p"·data-group-id="6532617151-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="6532617151-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="6532617151-4">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·f8f97aaaf817c2816f0be74b31d357cd8e60b09a61f0d9ae6ce46b9dcaac88ff·...·]-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="2156249069-5">(</span><span·class="p"·data-group-id="2156249069-6">&lt;&lt;</span><span·class="p"·data-group-id="2156249069-6">&gt;&gt;</span><span·class="p"·data-group-id="2156249069-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·cla[·...·truncated·by·diffoscope;·len:·109,·SHA:·09b5ccd1ac0218617259cca51eaacd2521aee927f52e53eeb49a56513a18d551·...·]-7">]</span><span·class="p">.</span></code></pre><h2·id="how-binaries-are-implemented"·class="section-heading">144 </span><span·class="nf">my_binary_to_list</span><span·class="p"·data-group-id="6532617151-5">(</span><span·class="p"·data-group-id="6532617151-6">&lt;&lt;</span><span·class="p"·data-group-id="6532617151-6">&gt;&gt;</span><span·class="p"·data-group-id="6532617151-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·cla[·...·truncated·by·diffoscope;·len:·109,·SHA:·e315fdf67bae966d69004ce74a17fa532a44ea3f60473990f999188cd01e18af·...·]-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="2806024003-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:·61aaa06b140e7f20cc73bfcb4d9fa0a4ac73bd6b870dec072487b4e992094e18·...·]-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="8099954401-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:·b76be9cf6c72f033be0b369e3a3101d8d773a271d9c517b4850d98b6b5190d9e·...·]-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="2806024003-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:·d8a51195ef35e9bfdb11a9b00428127b048486be82d981a123d98fc7bfbb6564·...·]-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="8099954401-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:·6abe22e4d5299d6ad8aef5dde7d707aae35568370b9602311c7228d4093b6697·...·]-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="4724171956-1">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="4724171956-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="4665561020-1">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="4665561020-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="4724171956-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:·41,·SHA:·aaa0074fa04834ee71180cb7a262d8cce342e41bec9f15f616d345420366c622·...·]-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="4665561020-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:·41,·SHA:·21318d4b38a68003e4c2feea0daf233d8c86f1c094ea56e1b6f759283914a387·...·]-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="4724171956-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:·41,·SHA:·aaa0074fa04834ee71180cb7a262d8cce342e41bec9f15f616d345420366c622·...·]-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="4665561020-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:·41,·SHA:·21318d4b38a68003e4c2feea0daf233d8c86f1c094ea56e1b6f759283914a387·...·]-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="4724171956-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:·41,·SHA:·aaa0074fa04834ee71180cb7a262d8cce342e41bec9f15f616d345420366c622·...·]-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="4665561020-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:·41,·SHA:·21318d4b38a68003e4c2feea0daf233d8c86f1c094ea56e1b6f759283914a387·...·]-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="4724171956-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="4724171956-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="4665561020-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="4665561020-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="4724171956-6">{</span><span·class="n">Bin4</span><span·class="p">,</span><span·class="n">Bin3</span><span·class="p"·data-group-id="4724171956-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="4665561020-6">{</span><span·class="n">Bin4</span><span·class="p">,</span><span·class="n">Bin3</span><span·class="p"·data-group-id="4665561020-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="2502532030-1">(</span><span·class="ss">repack</span><span·class="p"·data-group-id="2502532030-1">)</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="5548549617-1">(</span><span·class="ss">repack</span><span·class="p"·data-group-id="5548549617-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="2502532030-2">(</span><span·class="p"·data-group-id="2502532030-3">[</span><span·class="ss">repack</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="2502532030-3">]</span><span·class="p"·data-group-id="2502532030-2">)</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="5548549617-2">(</span><span·class="p"·data-group-id="5548549617-3">[</span><span·class="ss">repack</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5548549617-3">]</span><span·class="p"·data-group-id="5548549617-2">)</span><span·class="p">.</span><span·class="w">
  
262 </span><span·class="nf">repack</span><span·class="p"·data-group-id="2502532030-4">(</span><span·class="n">Bin</span><span·class="p"·data-group-id="2502532030-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="2502532030-5">(<[·...·truncated·by·diffoscope;·len:·73,·SHA:·37772341a2623ec2a2488a985c6a96cfb22ea13e6b08ce51b9f546bd18dace49·...·]-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="5548549617-4">(</span><span·class="n">Bin</span><span·class="p"·data-group-id="5548549617-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="5548549617-5">(<[·...·truncated·by·diffoscope;·len:·73,·SHA:·cc5ebe66cf9e60df5fff375d155d6c963720f60dd9443081b7accb536165f1ef·...·]-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="2502532030-6">(</span><span·class="n">Bin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2502532030-7">&lt;&lt;</span><span·class="p"·data-group-id="2502532030-7">&gt;&gt;</span><span·class="p"·data-group-id="250253203[·...·truncated·by·diffoscope;·len:·1,·SHA:·5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9·...·]-6">)</span><span·class="p">.</span><span·class="w">263 ····</span><span·class="nf">repack</span><span·class="p"·data-group-id="5548549617-6">(</span><span·class="n">Bin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5548549617-7">&lt;&lt;</span><span·class="p"·data-group-id="5548549617-7">&gt;&gt;</span><span·class="p"·data-group-id="554854961[·...·truncated·by·diffoscope;·len:·1,·SHA:·7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451·...·]-6">)</span><span·class="p">.</span><span·class="w">
  
264 </span><span·class="nf">repack</span><span·class="p"·data-group-id="2502532030-8">(</span><span·class="p"·data-group-id="2502532030-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:·2b21357ba43b97bd6ea9c43233d9f4a5f8d7a8edfb926fc6bcb9ddf9d5e63f62·...·]-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="5548549617-8">(</span><span·class="p"·data-group-id="5548549617-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:·c014d5f7eea0d509420ba76d4d9fc7b5903078943af9780e05fb985349d9da80·...·]-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="2502532030-10">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2502532030-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:·fc20878d89607fe88db2bebdba2ccc4ea60c4b972fc439f1f30ba8555d93beb2·...·]-10">)</span><span·class="p">;</span><span·class="w">265 ····</span><span·class="nf">repack</span><span·class="p"·data-group-id="5548549617-10">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5548549617-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:·14bc2bbe81fa326573bb9e829c2ea58381c0cf77206b47ba4e6b75a2ab0bb4c5·...·]-10">)</span><span·class="p">;</span><span·class="w">
266 </span><span·class="nf">repack</span><span·class="p"·data-group-id="2502532030-12">(</span><span·class="p"·data-group-id="2502532030-13">&lt;&lt;</span><span·class="p"·data-group-id="2502532030-13">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="250[·...·truncated·by·diffoscope;·len:·7,·SHA:·abe719ffac7ee7c1dd527a16c057b72c554fc016ff075dd56b5c181bafe63f95·...·]-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="5548549617-12">(</span><span·class="p"·data-group-id="5548549617-13">&lt;&lt;</span><span·class="p"·data-group-id="5548549617-13">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Result</span><span·class="p"·data-group-id="554[·...·truncated·by·diffoscope;·len:·7,·SHA:·8fd5e0107df155c0698b37071a85d4e83a8a3d01ba47dd805b540d9f8f7825b1·...·]-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="4848234097-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="4848234097-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="8608962431-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="8608962431-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="1971260716-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="1971260716-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="8334411090-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="8334411090-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="1971260716-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="1971260716-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="8334411090-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="8334411090-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.3/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.3/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.3/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.3/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="4582979072-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="4582979072-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="4428287239-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="4428287239-1">&gt;&gt;</span><span·class="p">,</span><span·class="w">
299 </span><span·class="p"·data-group-id="4582979072-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:·35,·SHA:·c5ddce05239c44de838e1ccd097eeaf6bcf8dec70e699b5701de468c8f0f0018·...·]-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="4428287239-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:·35,·SHA:·f048b2e795dc4105d98c8d7e315cc7a70d4424dab048a0fae106c9fd99ef2773·...·]-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="4582979072-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="4582979072-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="4428287239-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="4428287239-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>
308 ··</a>308 ··</a>
309 ··<span·class="text">Matching·Binaries</span>309 ··<span·class="text">Matching·Binaries</span>
Max diff block lines reached; 34321/81178 bytes (42.28%) 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="9534652757-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:·fcf3aacfa8144886facb970c72667addbcb98f04765e5d51845d40fe15138d00·...·]-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="8214196851-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:·737e4b61b86a495489fa38c9ba74a1a0eb99594e108b2506cd67cc69de0b89ed·...·]-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="4348801892-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:·ae2f1d0d259144fba016d2d39cb68ebf6159c0483475d2eee967224ce6795c36·...·]-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="1760365688-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:·200a6b425aacc2ae159bae32c02e9730624acb517ffb212e981bd976d57757ac·...·]-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="0105805587-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="0105805587-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="0498019869-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="0498019869-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="0105805587-2">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="0105805587-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.3/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.3/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="0498019869-2">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="0498019869-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.3/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.3/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="6908860846-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:·463bfdfebe8062e4b6c6603b5f59f244770e96552d287d16fb2610431ef924df·...·]-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="1131799853-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:·a9acf34a446a5c04b7fa66bbd91e53920045635666ef38718063a3d78ab3f6ff·...·]-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.3/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.3/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="7443469802-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:·b5a8a4560c5c876668d3b83bac765ddf75ee4060159e794820e83666c3df9704·...·]-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="9770213697-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:·e97bdf0b01b67ed7a0d2c25e02741410849614bb41181379eff02bde73d20888·...·]-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="5592484825-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="5592484825-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="4035449309-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="4035449309-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="5592484825-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="5592484825-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="4035449309-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="4035449309-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="5592484825-3">(</span><span·class="n">Dgram</span><span·class="p"·data-group-id="5592484825-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="4035449309-3">(</span><span·class="n">Dgram</span><span·class="p"·data-group-id="4035449309-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="5592484825-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="4035449309-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="5592484825-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="4035449309-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="5592484825-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="5592484825-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="4035449309-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="4035449309-5">)</span><span·class="p">,</span><span·class="w">
158 ········</span><span·class="p"·data-group-id="5592484825-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:·816368a0223fad4d9e55f8f958e1d257854092bf2f3990ae11397f9c28ed9c9f·...·]-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="4035449309-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:·c86ffde5b838d442d1ced6d558c4d77f50a61beb64efddf79d909d4936054943·...·]-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="5019871576-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="501[·...·truncated·by·diffoscope;·len:·7,·SHA:·ebfdbfe2d5c4391d569bb81a86f2f92cdd5eaf2f5455cdc1d8e9e7a8982c6e1b·...·]-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="6912285098-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="691[·...·truncated·by·diffoscope;·len:·7,·SHA:·0014159967cbf5d51560d282b97f9860b301d6da7df5cf6679c4479da3dc6c9b·...·]-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="1229207538-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="1229207538-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="8044963981-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="8044963981-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="8389291889-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="8389291889-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="4506235260-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="4506235260-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="9736402094-1">&lt;&lt;</span><span·class="p"·data-group-id="9736402094-2">(</span><span·class="n">X</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="9736402094-2">)</span><span·class="p">:</span><span·class="mi">8</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·6fd362100810561f97348d25a66052eab26ade061b6477708762e520f903dcbe·...·]-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="1318564889-1">&lt;&lt;</span><span·class="p"·data-group-id="1318564889-2">(</span><span·class="n">X</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="1318564889-2">)</span><span·class="p">:</span><span·class="mi">8</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·aaa646dae4f6adf124d0f292b97049a9fe271ba57782d739e0ed3a7fbdc7bcef·...·]-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="1320560868-1">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="1320560868-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:·fdec2181e6802f6323908049fc04f1995fc9bcc95f87ef25e6c7d4d30067702e·...·]-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="0030295283-1">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="0030295283-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:·42177f7104fa479190486c31ec10a4b3ae2b01702736324dd2d55b1ddcf04c0c·...·]-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="0877689539-1">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0877689539-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:·120ff697b5cd859d73ba861ad4489795b4aaae9aef567710535bff9ca09a3559·...·]-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="3299574070-1">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3299574070-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:·6138435c081c8ac477c54a87852098b91890d690786aaab2d435288ebb1c32ef·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
257 ···</span><span·class="p"·data-group-id="0877689539-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="0877689539-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="9954236068-1">(</span><span·[·...·truncated·by·diffoscope;·len:·213,·SHA:·5c0365b7e739175855d35ab84c7c1d7bff8ed87217f21f859804ac0168b32a23·...·]257 ···</span><span·class="p"·data-group-id="3299574070-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="3299574070-3">}</span><span·class="p">.</span></code></pre><p>The·two·occurrences·of·<code[·...·truncated·by·diffoscope;·len:·77,·SHA:·b79cd7a1b3a5d65635c58ed8a311bdfe1e6d3c335245d3f0a149a77a129ced39·...·]
 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="4329037273-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="4329037273-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
259 ···</span><span·class="p"·data-group-id="9954236068-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="9954236068-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="4329037273-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="4329037273-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="9954236068-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="9954236068-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="4329037273-3">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">T</span><span·class="p"·data-group-id="4329037273-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="3814618256-1">(</span><span·class="p"·data-group-id="3814618256-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:·39f7da91f9dd30fbaec0c5fd1637d3b5007232aad190e7a9e38fe937624bb971·...·]-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="7374325462-1">(</span><span·class="p"·data-group-id="7374325462-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:·4e9f0f93f6d491f556d9a4f74bbb756ef2d4cc65a174ddfda0a6b3164001a3a5·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 270 ···</span><span·class="p"·data-group-id="7374325462-3">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="7374325462-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="8153193544-1">(</span><span·class="p"·data-group-id="8153193544-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="8153193544-3">(</span><span·class="p"·data-group-id="8153193544-4">(</span><span·class="n">Sz</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="8153193544-4">)</span><span·class="o">*</span><span·class="mi">8</span><span·class="p"·data-group-id="8153193544-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="8153193544-2">&gt;&gt;</span><span·class="p"·data-group-id="8153193544-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
270 ···</span><span·class="p"·data-group-id="3814618256-3">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="3814618256-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·...·]272 ···</span><span·class="p"·data-group-id="8153193544-5">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="8153193544-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·...·]
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="2708874570-1">(</span><span·class="p"·data-group-id="2708874570-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="2708874570-3">(</span><span·class="p"·data-group-id="2708874570-4">(</span><span·class="n">Sz</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="2708874570-4">)</span><span·class="o">*</span><span·class="mi">8</span><span·class="p"·data-group-id="2708874570-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="2708874570-2">&gt;&gt;</span><span·class="p"·data-group-id="2708874570-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
272 ···</span><span·class="p"·data-group-id="2708874570-5">{</span><span·class="n">Payload</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="2708874570-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="6778047744-1">(</span><span·class="p"·data-group-id="6778047744-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:·4027c52ebf44cfaea5c5d1f8edb40de966962cb74659bc5de442d0b6de012ae3·...·]-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="4848141201-1">(</span><span·class="p"·data-group-id="4848141201-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:·d484351e13a967e7d729279e80cf01b26a246e5d6f275a00c22912475114d82d·...·]-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="2650965020-1">(</span><span·class="n">T</span><span·class="p"·data-group-id="2650965020-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="4641405555-1">(</span><span·class="n">T</span><span·class="p"·data-group-id="4641405555-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="2650965020-2">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2650965020-3">&lt;&lt;</span><span·class="p"·data-group-id="2650965020-3">&gt;&gt;</span><span·class="p"·data-group-id="2650965020-2">)</span><span·class="p">.</span><span·class="w">286 ····</span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="4641405555-2">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4641405555-3">&lt;&lt;</span><span·class="p"·data-group-id="4641405555-3">&gt;&gt;</span><span·class="p"·data-group-id="4641405555-2">)</span><span·class="p">.</span><span·class="w">
  
287 </span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="2650965020-4">(</span><span·class="p"·data-group-id="2650965020-5">[</span><span·class="p"·data-group-id="2650965020-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:·5ce40c82ad7d9fe4daf3f4aa8d5c2e3b72b71b558a11da1d7aa960721f3d280c·...·]-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="4641405555-4">(</span><span·class="p"·data-group-id="4641405555-5">[</span><span·class="p"·data-group-id="4641405555-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:·ca55292a27d5cf3c13b589a2ef6d8e182f1a1a5f34d7d5b57f09822827181b93·...·]-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="2650965020-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2650965020-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:·b241f192d966e004bddae1319b891515d4a81cb211cc0aa24aac242578472db3·...·]-7">)</span><span·class="p">;</span><span·class="w">288 ····</span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="4641405555-7">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4641405555-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:·0ef4a0d71f0745cd060c55577937ed166470b053a79b974fb958623400324d12·...·]-7">)</span><span·class="p">;</span><span·class="w">
289 </span><span·class="nf">triples_to_bin</span><span·class="p"·data-group-id="2650965020-9">(</span><span·class="p"·data-group-id="2650965020-10">[</span><span·class="p"·data-group-id="2650965020-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="2650965020-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="4641405555-9">(</span><span·class="p"·data-group-id="4641405555-10">[</span><span·class="p"·data-group-id="4641405555-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="4641405555-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; 173/49198 bytes (0.35%) 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.3/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.3/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="5714967595-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="5714967595-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="6342411522-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="6342411522-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="5714967595-2">(</span><span·class="p"·data-group-id="5714967595-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:·8c6ffeb5a28541d1260f6e6d61b3d202a5caa2e09f711c56381508aa224a5ab1·...·]-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="6342411522-2">(</span><span·class="p"·data-group-id="6342411522-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:·7db673eb55ab17364f7052f3ef733ba59ee7509ea48637642c0680535a09f95a·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">start</span><span·class="p"·data-group-id="5714967595-4">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="5714967595-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="6342411522-4">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="6342411522-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="5714967595-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="5714967595-6">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·81d550beda13ae1fe28dc35182c82160c13e7428c11d0d67a42b17c5d732f06e·...·]-5">)</span><span·class="p">.</span><span·class="w">158 ··</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6342411522-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="6342411522-6">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·115a7c181d680064e2e1f2980bb39b245b54e399d11b6bc4979f83851c7b0196·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">init</span><span·class="p"·data-group-id="5714967595-7">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="5714967595-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="6342411522-7">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="6342411522-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="5714967595-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="5714967595-9">(</span><span·class="p"·data-group-id="5714967595-9">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·c17b81cece622aeea8ede0dc4f41d78e99ce3f5e8374fbb46c6f81e67b67ddee·...·]-8">)</span><span·class="p">,</span><span·class="w">160 ··</span><span·class="nf">register</span><span·class="p"·data-group-id="6342411522-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="6342411522-9">(</span><span·class="p"·data-group-id="6342411522-9">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·52c1803760c33a696368b3fd74c37f5d54f5ef13566070563d8de07f1753aedd·...·]-8">)</span><span·class="p">,</span><span·class="w">
161 ··</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="5714967595-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="5714967595-10">)</span><span·class="p">,</span><span·class="w">161 ··</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="6342411522-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="6342411522-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="5714967595-11">(</span><span·class="p"·data-group-id="5714967595-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="5714967595-12">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5714967595-13">[</span><span·class="p"·data-group-id="5714967595-14">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="5714967595-14">}</span><span·class="p"·data-group-id="5714967595-13">]</span><span·class="p"·data-group-id="5714967595-11">)</span><span·class="p">,</span><span·class="w"> 
163 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="5714967595-15">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5714967595-15">)</span><span·class="p">.</span></code></pre><p>Now·<code·class="inline">complex1:foo/1</code>·and·<code·class="inl[·...·truncated·by·diffoscope;·len:·58,·SHA:·3117d01f7bd68ff4689794ef31e2a9077a76513598f83716c3d6401703233deb·...·]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="6342411522-11">(</span><span·class="p"·data-group-id="6342411522-12">{</span><span·class="nb">spawn</span><[·...·truncated·by·diffoscope;·len:·591,·SHA:·9fc0a9732c554a0dfdc5a3bb6380f378a1f2cc8d65e1189e3f1f7c1e6f3651b1·...·]
 163 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="6342411522-15">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6342411522-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="7491113227-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="7491113227-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="9889576020-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="9889576020-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="7491113227-2">(</span><span·class="p"·data-group-id="7491113227-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="7491113227-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·1dd6b7a8c1849cab6710449bdd868f6b55533c1fc957123272452b76dd3bccd7·...·]-2">)</span><span·class="p">.</span><span·class="w">165 ··</span><span·class="nf">call_port</span><span·class="p"·data-group-id="9889576020-2">(</span><span·class="p"·data-group-id="9889576020-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="9889576020-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·0235b70a0b791cadc49835806d09209aab0ed8b9da9c1e08296407e3f51ad90c·...·]-2">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="nf">bar</span><span·class="p"·data-group-id="7491113227-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="7491113227-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="9889576020-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="9889576020-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="7491113227-5">(</span><span·class="p"·data-group-id="7491113227-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="7491113227-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·1dd6b7a8c1849cab6710449bdd868f6b55533c1fc957123272452b76dd3bccd7·...·]-5">)</span><span·class="p">.</span><span·class="w">167 ··</span><span·class="nf">call_port</span><span·class="p"·data-group-id="9889576020-5">(</span><span·class="p"·data-group-id="9889576020-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="9889576020-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·0235b70a0b791cadc49835806d09209aab0ed8b9da9c1e08296407e3f51ad90c·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
168 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="7491113227-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7491113227-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="9889576020-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="9889576020-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="7491113227-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="7491113227-9">(</span><span·class="p"·data-group-id="7491113227-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·9d041cf321ec684892ac401782f909a4fb4d31465bd1d2c4ebb5669943509dd5·...·]-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="9889576020-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="9889576020-9">(</span><span·class="p"·data-group-id="9889576020-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·4ec6734344b2bc180dedf14980a15df4b9ccecb18b684e951f7c4ac383daf844·...·]-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="7491113227-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="7491113227-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">171 ····</span><span·class="p"·data-group-id="9889576020-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="9889576020-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="7571140375-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7571140375-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="9428133622-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9428133622-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="7571140375-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="7571140375-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 ····</span><span·class="p"·data-group-id="9428133622-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="9428133622-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="7571140375-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7571140375-4">(</span><span·class="p"·data-group-id="7571140375-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7571140375-5">{</span[·...·truncated·by·diffoscope;·len:·336,·SHA:·93c0641e2f0c995417601cfe92939a8177601e2b1e5d8b4d7b9e3ea8c6a46cb7·...·]-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="9428133622-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9428133622-4">(</span><span·class="p"·data-group-id="9428133622-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9428133622-5">{</span[·...·truncated·by·diffoscope;·len:·336,·SHA:·6d4f51af7285cced1138a81abe89c852224e3ec3fba9ded5e707732510084fd3·...·]-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="7571140375-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7571140375-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:·14b231a3388ae00bb53a1bab2f9f7c205e4b08cfe463e9dd9ba25e56ed6f2999·...·]-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 ········</span><span·class="p"·data-group-id="9428133622-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9428133622-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:·495f8b641d52c71aa4a4bee7c34a38df967a3bdb61c6675e21261b1472b66c45·...·]-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="7571140375-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="7571140375-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="7571140375-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·39d6f326e6d94080e5726900671e0d7d7efdfdee0a6f912fba1ff56b9128d660·...·]-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="9428133622-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="9428133622-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="9428133622-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·caf8515b0e7143ac9bd0cec9db644dfb7c082bc4fd028e3ceeb40f53c101fb49·...·]-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="7571140375-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7571140375-11">)</span><span·class="w">181 ······</span><span·class="nf">loop</span><span·class="p"·data-group-id="9428133622-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9428133622-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="8704291993-1">(</span><span·class="p"·data-group-id="8704291993-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="8704291993-2">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·290,·SHA:·89248637e40aa227cef234eb3ee34abb715152c5d09fed108ec1bf4d326343fc·...·]-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="8005837789-1">(</span><span·class="p"·data-group-id="8005837789-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="8005837789-2">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·290,·SHA:·b23668e9b0858e3ada79309b2d0f409ddd2c131c89cb03da1f40d7ed1476794a·...·]-3">]</span><span·class="p">;</span><span·class="w">
186 </span><span·class="nf">encode</span><span·class="p"·data-group-id="8704291993-4">(</span><span·class="p"·data-group-id="8704291993-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="8704291993-5">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·290,·SHA:·d4b8a24cb480e20127bd7a8401a37f9be1eb541cb09aaf74d974d34bb45fb019·...·]-6">]</span><span·class="p">.</span><span·class="w">186 </span><span·class="nf">encode</span><span·class="p"·data-group-id="8005837789-4">(</span><span·class="p"·data-group-id="8005837789-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="8005837789-5">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·290,·SHA:·ea142537ee8618be2b5bb7b335a6e5758cf41210b663c7af5a818ce8187e2f4f·...·]-6">]</span><span·class="p">.</span><span·class="w">
  
187 </span><span·class="nf">decode</span><span·class="p"·data-group-id="8704291993-7">(</span><span·class="p"·data-group-id="8704291993-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="8704291993-8">]</span><span·class="p"·data-group-id="8704291993-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="3433985529-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·67,·SHA:·9384db10adef8c047cbcd5fb7a345ebeeda765a1ab37e2ce715ec3c1230d7fab·...·]187 </span><span·class="nf">decode</span><span·class="p"·data-group-id="8005837789-7">(</span><span·class="p"·data-group-id="8005837789-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="8005837789-8">]</span><span·class="p"·data-group-id="800[·...·truncated·by·diffoscope;·len:·240,·SHA:·93e244258aa46dad9581636be8cd84547165a6d67f8c20106f7586adbc362ee6·...·]
 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="8343179239-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="8343179239-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="3433985529-2">(</span><span·class="p"·data-group-id="3433985529-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:·240,·SHA:·471bea5967d40f12c712d52de670c232e91421273917a5e915089dc7591c5f4a·...·]9-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="8343179239-2">(</span><span·class="p"·data-group-id="8343179239-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:·240,·SHA:·d09e975ca6361e7fd549305b37eceb42cf2d3c2b259959e18a46c9efb359d672·...·]9-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="3433985529-4">(</span><span·class="p"·data-group-id="3433985529-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:·112,·SHA:·4283be7d7bec7aca3eea9fbc9dd43ba84605e85736f6163084a04ebfee937d63·...·]9-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="8343179239-4">(</span><span·class="p"·data-group-id="8343179239-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:·112,·SHA:·91b6528d227fd5aa224e834d273d301b868626d52c57165fe5360e4edab2e575·...·]9-4">)</span><span·class="p">.</span><span·class="w">
  
191 </span><span·class="nf">start</span><span·class="p"·data-group-id="3433985529-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="3433985529-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="8343179239-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="8343179239-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="3433985529-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="3433985529-8">[</span><spa[·...·truncated·by·diffoscope;·len:·118,·SHA:·97d2cb5e85ca911c9484f9fa0b5edd17ac684c64f62099fad286cc2bea7ca2be·...·]9-7">)</span><span·class="p">.</span><span·class="w">192 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8343179239-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="8343179239-8">[</span><spa[·...·truncated·by·diffoscope;·len:·118,·SHA:·a500c6f286b4f5441b5df56ff2adf24646ed282353d968f381a9d9174f0dc11d·...·]9-7">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="nf">stop</span><span·class="p"·data-group-id="3433985529-9">(</span><span·class="p"·data-group-id="3433985529-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="8343179239-9">(</span><span·class="p"·data-group-id="8343179239-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="3433985529-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="3433985529-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="8343179239-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="8343179239-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="3433985529-11">(</span><span·class="p"·data-group-id="3433985529-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="3433985529-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·14,·SHA:·bbc31f1298dbd0ff1ed39d9b6f7af445a69d0f0a73e679d2969d45ef26339f5c·...·]9-11">)</span><span·class="p">.</span><span·class="w">196 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="8343179239-11">(</span><span·class="p"·data-group-id="8343179239-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="8343179239-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·14,·SHA:·1e7ea466af222666fe4364ee28b1c28a42449741b3ebfc1f20d028cae9509315·...·]9-11">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="nf">bar</span><span·class="p"·data-group-id="3433985529-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="3433985529-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="8343179239-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="8343179239-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="3433985529-14">(</span><span·class="p"·data-group-id="3433985529-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="3433985529-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·14,·SHA:·bbc31f1298dbd0ff1ed39d9b6f7af445a69d0f0a73e679d2969d45ef26339f5c·...·]9-14">)</span><span·class="p">.</span><span·class="w">198 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="8343179239-14">(</span><span·class="p"·data-group-id="8343179239-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="8343179239-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·14,·SHA:·1e7ea466af222666fe4364ee28b1c28a42449741b3ebfc1f20d028cae9509315·...·]9-14">)</span><span·class="p">.</span><span·class="w">
  
199 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="3433985529-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="3433985529-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="8343179239-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="8343179239-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="3433985529-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="3433985529-18">(</span><span·class="p"·data-group-id="3433985529-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·93,·SHA:·8dad0ad5476ab8f7156504696b7f1d0bf0d77af9340e0a529b4fc5c3af92ef8a·...·]9-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="8343179239-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="8343179239-18">(</span><span·class="p"·data-group-id="8343179239-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·93,·SHA:·718f01ef1f19273c3ca6ac21eb283799360eb72acbf8db8ed73f2e07a8e66c31·...·]9-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="3433985529-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="3433985529-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">202 »       </span><span·class="p"·data-group-id="8343179239-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="8343179239-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="3433985529-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="3433985529-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="8343179239-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="8343179239-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="3433985529-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="3433985529-22">(</span><span·class="p"·data-group-id="3433985529-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·22,·SHA:·c783b1fdbd94257c6c4c8500dfcd05ca562768d48613cefdf5339bf8f34a94aa·...·]9-21">)</span><span·class="p">,</span><span·class="w">206 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="8343179239-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="8343179239-22">(</span><span·class="p"·data-group-id="8343179239-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·22,·SHA:·6eedb86f4b11cf42da86622f0feddb5d444f42195c100bc8ccdffca5e2e1af36·...·]9-21">)</span><span·class="p">,</span><span·class="w">
207 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="3433985529-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="3433985529-23">)</span><span·class="p">,</span><span·class="w">207 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="8343179239-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="8343179239-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="3433985529-24">(</span><span·class="p"·data-group-id="3433985529-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="3433985529-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·388,·SHA:·46bbb45ba37de52b9a32f9a254334a98839bab5a48796f94f1bf8a65ca24c7e9·...·]9-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="8343179239-24">(</span><span·class="p"·data-group-id="8343179239-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="8343179239-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·388,·SHA:·5dbed25b26bee5f1c4ee976ac9bfe5b28c713614a95c11753691565913a2dca2·...·]9-24">)</span><span·class="p">,</span><span·class="w">
209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="3433985529-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3433985529-28">)</span><span·class="p">.</span><span·class="w">209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="8343179239-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8343179239-28">)</span><span·class="p">.</span><span·class="w">
  
210 </span><span·class="nf">loop</span><span·class="p"·data-group-id="3433985529-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3433985529-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="8343179239-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8343179239-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="3433985529-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="3433985529-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 »       </span><span·class="p"·data-group-id="8343179239-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="8343179239-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="3433985529-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="3433985529-32">(</span><span·class="p"·data-group-id="3433985529-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3433985529-33">{</[·...·truncated·by·diffoscope;·len:·342,·SHA:·44a2f534e628d2de176510f94580a85a0406ff2d311dee464df81611eb3a70fe·...·]9-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="8343179239-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8343179239-32">(</span><span·class="p"·data-group-id="8343179239-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8343179239-33">{</[·...·truncated·by·diffoscope;·len:·342,·SHA:·a7d90b9c240cd9a00372b939eb53beed7b6340bb8d21d3cedcce1f5d18219455·...·]9-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="3433985529-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3433985529-36">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·7e0ab6386530b160db55db2394e66476b3eb50d550c7b9586dde74397b9f7c49·...·]9-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">215 »       »       </span><span·class="p"·data-group-id="8343179239-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8343179239-36">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·e54eb27cdebd51e9c3522f6d078eda38385178df142f8b5b66073b90651f4168·...·]9-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="3433985529-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="3433985529-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="3433985529-3[·...·truncated·by·diffoscope;·len:·51,·SHA:·ba4b264b0da2144cfe860266dee1c3115459e52bfcf565e63428ef03ddf75d37·...·]9-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="8343179239-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="8343179239-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="8343179239-3[·...·truncated·by·diffoscope;·len:·51,·SHA:·adf29b164ac8e39d57b0e09376e5e90de11e38be8228f81e0fc904639f017349·...·]9-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="3433985529-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3433985529-39">)</span><span·class="p">;</span><span·class="w">218 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="8343179239-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8343179239-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="3433985529-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="3433985529-41">(</span><span·class="p"·data-group-id="3433985529-41">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·20,·SHA:·c961e7a34f1ded6d42ca850428b0c40812871fe94066e94d8305b073baab742f·...·]9-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="8343179239-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8343179239-41">(</span><span·class="p"·data-group-id="8343179239-41">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·20,·SHA:·51914e59d6806aa929b748119df917d9176fa8d09c61f297d29b77ba638be5af·...·]9-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="3433985529-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="3433985529-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 »       »       </span><span·class="p"·data-group-id="8343179239-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="8343179239-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="3433985529-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="3433985529-43">)</span><span·class="w">223 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="8343179239-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="8343179239-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="3433985529-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="3433985529-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">225 »       </span><span·class="p"·data-group-id="8343179239-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="8343179239-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="3433985529-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="3433985529-45">)</span><span·class="w">226 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="8343179239-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="8343179239-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="3433985529-46">(</span><span·class="p"·data-group-id="3433985529-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="3433985529-47">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·295,·SHA:·5e5b7ce6812bd31d87f40009b5068d83b65ca6cbc09a098c49e3e8381df55946·...·]9-48">]</span><span·class="p">;</span><span·class="w">228 </span><span·class="nf">encode</span><span·class="p"·data-group-id="8343179239-46">(</span><span·class="p"·data-group-id="8343179239-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="8343179239-47">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·295,·SHA:·b4996a7c144a223b82172ef54dd46c5760bc95a59938b5b5da5b65cb086f75ae·...·]9-48">]</span><span·class="p">;</span><span·class="w">
229 </span><span·class="nf">encode</span><span·class="p"·data-group-id="3433985529-49">(</span><span·class="p"·data-group-id="3433985529-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="3433985529-50">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·295,·SHA:·22d6cd8ab2a8cc68bbf63e514fcb1a1065e45c46a56d0de4df3c37495d65fa63·...·]9-51">]</span><span·class="p">.</span><span·class="w">229 </span><span·class="nf">encode</span><span·class="p"·data-group-id="8343179239-49">(</span><span·class="p"·data-group-id="8343179239-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="8343179239-50">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·295,·SHA:·69310c1485b9c2ba13a374f181c97b322ee03fd38b605dfaba8d667ed275d0d2·...·]9-51">]</span><span·class="p">.</span><span·class="w">
  
230 </span><span·class="nf">decode</span><span·class="p"·data-group-id="3433985529-52">(</span><span·class="p"·data-group-id="3433985529-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="3433985529-53">]</span><span·class="p"·data-group-id="3433985529-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="8343179239-52">(</span><span·class="p"·data-group-id="8343179239-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="8343179239-53">]</span><span·class="p"·data-group-id="8343179239-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="2057955850-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="2057955850-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="2057955850-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·c61a24cc1333c6b331f7ced9da76ffd2a80655f3ff6e8f3b5fabed807592c256·...·]-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="7076114672-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="7076114672-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="7076114672-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·168d3c3dc6db777a8922b20f13560bb5420c36eccd02980ca0d566707057873f·...·]-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="2057955850-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:·a8f759f5d6eb87a46de91fd75037beb1b0fb1789046e66727e952356371fed6e·...·]-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="7076114672-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:·2d39dc97d913b3f052c00e4fc8e981a8618e103d529e8e2894a102045326345d·...·]-8">)</span><span·class="gp·unselectable">
342 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="2057955850-10">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="2057955850-10">)</span><span·class="p">.</span><span·class="w">342 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="7076114672-10">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="7076114672-10">)</span><span·class="p">.</span><span·class="w">
343 </span><span·class="p"·data-group-id="2057955850-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex1</span><span·class="p"·data-group-id="2057955850-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:·2656ec45ee5bc105736f3858ec4b0031700547c7c727072f272d87df7ea3639e·...·]-1">)</span><span·class="p">.</span><span·class="w">343 </span><span·class="p"·data-group-id="7076114672-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex1</span><span·class="p"·data-group-id="7076114672-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:·912939ec00a0ea464b0dd9bf8e1af376acb3838238f6e0ba50a406f751b20e4c·...·]-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="0978951633-2">(</span><span·class="mi">3</span><span·class="p"·data-group-id="0978951633-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="3013437937-2">(</span><span·class="mi">3</span><span·class="p"·data-group-id="3013437937-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="0978951633-3">(</span><span·class="mi">5</span><span·class="p"·data-group-id="0978951633-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="3013437937-3">(</span><span·class="mi">5</span><span·class="p"·data-group-id="3013437937-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="0978951633-4">(</span><span·class="p"·data-group-id="0978951633-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="3013437937-4">(</span><span·class="p"·data-group-id="3013437937-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">
Max diff block lines reached; 72/60004 bytes (0.12%) 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.3/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.3/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.3/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.3/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="9979382106-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="9979382106-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="2441403949-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="2441403949-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="9979382106-2">(</span><span·class="p"·data-group-id="9979382106-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:·0c79383233f3e2cb86a604f61f80ce7b8fe552cf292ae74d71e3827708cdb520·...·]-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="2441403949-2">(</span><span·class="p"·data-group-id="2441403949-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:·78623b76d54779187899846d14747ca4fa01afa93ab4d96c8b9b178e167dc975·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
160 </span><span·class="nf">start</span><span·class="p"·data-group-id="9979382106-4">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="9979382106-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="2441403949-4">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="2441403949-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="9979382106-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="9979382106-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="2441403949-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="2441403949-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="9979382106-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="9979382106-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="2441403949-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="2441403949-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="9979382106-7">(</span><span·class="p"·data-group-id="9979382106-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="9979382106-8">}</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·4d651fb629df32b2fb7f8ea546a4ec4f573b8c87cf4890038703520909a1d313·...·]-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="2441403949-7">(</span><span·class="p"·data-group-id="2441403949-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="2441403949-8">}</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·575ebd24bd2c00313d1179308928560d7ae644f673ae0236a3d67129b16c33f4·...·]-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="9979382106-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="9979382106-10">[</span><sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·a99c327e369972c257babe158ebc05c545064fc0a5743c4ebeec37121c9bc4d9·...·]-9">)</span><span·class="p">.</span><span·class="w">166 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2441403949-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="2441403949-10">[</span><sp[·...·truncated·by·diffoscope;·len:·124,·SHA:·60aaf5e0fd411c91408a6a9761fc0f28f06d8b2b1c47c8df6a44d55c20c4fb24·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
167 </span><span·class="nf">init</span><span·class="p"·data-group-id="9979382106-11">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="9979382106-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="2441403949-11">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="2441403949-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="9979382106-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="9979382106-13">(</span><span·class="p"·data-group-id="9979382106-13">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·3c938e540f74c83df7117198f3f3de3b22aa163ef19e96872318484ce4633885·...·]-12">)</span><span·class="p">,</span><span·class="w">168 ··</span><span·class="nf">register</span><span·class="p"·data-group-id="2441403949-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="2441403949-13">(</span><span·class="p"·data-group-id="2441403949-13">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·467c6370c8349f0abfc6a502a35ed68abfe50c8d77b9505367fb53b4d16de988·...·]-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="9979382106-14">(</span><span·class="p"·data-group-id="9979382106-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="9979382106-15">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9979382106-16">[</span><span·class="p"·data-group-id="9979382106-16">]</span><span·class="p"·data-group-id="9979382106-14">)</span><span·class="p">,</span><span·class="w"> 
170 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="9979382106-17">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9979382106-17">)</span><span·class="p">.</span></code></pre><p>Now·<code·class="inline">complex5:foo/1</code>·and·<code·class="inl[·...·truncated·by·diffoscope;·len:·58,·SHA:·45e7c70a754fdc59e37b2c30e2b6adee52e89d4e295d5ab50d0fe0d96c96f8f3·...·]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="2441403949-14">(</span><span·class="p"·data-group-id="2441403949-15">{</span><span·class="nb">spawn</span><[·...·truncated·by·diffoscope;·len:·383,·SHA:·0d8741256b33a4b9a67a1134ac631e6959274b3886e2e277feff92b01d20d1a5·...·]
 170 ··</span><span·class="nf">loop</span><span·class="p"·data-group-id="2441403949-17">(</span><span·class="n">Port</span><span·class="p"·data-group-id="2441403949-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="2992642165-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="2992642165-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="1094689125-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="1094689125-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="2992642165-2">(</span><span·class="p"·data-group-id="2992642165-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="2992642165-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·11,·SHA:·5cdc92325d4039e68a8a5dc0a6c233a2d64dde0206f8ad6efdf3635c0475bf85·...·]5-2">)</span><span·class="p">.</span><span·class="w">172 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="1094689125-2">(</span><span·class="p"·data-group-id="1094689125-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="1094689125-3">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·11,·SHA:·598f03e60ee5a3296c25fb7fce84071db6034dbf212b65d6994492873f1695b6·...·]5-2">)</span><span·class="p">.</span><span·class="w">
173 </span><span·class="nf">bar</span><span·class="p"·data-group-id="2992642165-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="2992642165-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="1094689125-4">(</span><span·class="n">Y</span><span·class="p"·data-group-id="1094689125-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="2992642165-5">(</span><span·class="p"·data-group-id="2992642165-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="2992642165-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·11,·SHA:·5cdc92325d4039e68a8a5dc0a6c233a2d64dde0206f8ad6efdf3635c0475bf85·...·]5-5">)</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="1094689125-5">(</span><span·class="p"·data-group-id="1094689125-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="1094689125-6">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·11,·SHA:·598f03e60ee5a3296c25fb7fce84071db6034dbf212b65d6994492873f1695b6·...·]5-5">)</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="2992642165-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="2992642165-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="1094689125-7">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="1094689125-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="2992642165-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="2992642165-9">(</span><span·class="p"·data-group-id="2992642165-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·90,·SHA:·4e90a409b3940c37ddd00e0dfc1688c542425a5ccda32cb6e04d165371333300·...·]5-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="1094689125-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="1094689125-9">(</span><span·class="p"·data-group-id="1094689125-9">)</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·90,·SHA:·fab7997407b20fd4730babe21ee1f21e8ea0549d588414f1a52eb5749e575ec6·...·]5-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="2992642165-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="2992642165-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 ········</span><span·class="p"·data-group-id="1094689125-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="1094689125-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="5198279877-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5198279877-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="7592866909-1">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7592866909-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="5198279877-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="5198279877-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">182 ········</span><span·class="p"·data-group-id="7592866909-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="7592866909-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="5198279877-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="5198279877-4">(</span><span·class="p"·data-group-id="5198279877-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5198279877-5">{</span[·...·truncated·by·diffoscope;·len:·336,·SHA:·99d8e3a419002674b0153a679dedabb8f53d13824f53a5460f23690ae51945ed·...·]-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="7592866909-3">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7592866909-4">(</span><span·class="p"·data-group-id="7592866909-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7592866909-5">{</span[·...·truncated·by·diffoscope;·len:·336,·SHA:·66d7a5e997d07ac321505c759def7768abd0b15dde51adf06cc202494bac21ae·...·]-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="5198279877-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5198279877-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:·172c4f12d334c6a851054ea49bd84181105b5833e0830f7994d22c421e9ddb95·...·]-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">185 ················</span><span·class="p"·data-group-id="7592866909-7">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7592866909-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:·83a60a3637f56ccd97f0d0409e939df6ea6cebb10f5569bccd1482c67b6b9029·...·]-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="5198279877-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="5198279877-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="5198279877-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·65c3dba0af5922bb955ccacf63c94db6996791c3794d40950280e8e15547869e·...·]-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="7592866909-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="7592866909-10">(</span><span·class="n">Data</span><span·class="p"·data-group-id="7592866909-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·1b05f6b2b6baa7ccea9aa46d25ac84b857e3b28a413a60d1119cbcf24bf8f262·...·]-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="5198279877-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="5198279877-11">)</span><span·class="w">188 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="7592866909-11">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7592866909-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="1515557782-1">(</span><span·class="p"·data-group-id="1515557782-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="1515557782-2">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·a5498c8f03d31722ec7c730377d0cef2ff6af8265191dac59a9ba7161586b56f·...·]-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="8702690443-1">(</span><span·class="p"·data-group-id="8702690443-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="8702690443-2">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·19f758a598691afba9888259423375aff101cd7a43210dd86cd26e55b6ddf526·...·]-3">]</span><span·class="p">;</span><span·class="w">
193 </span><span·class="nf">encode</span><span·class="p"·data-group-id="1515557782-4">(</span><span·class="p"·data-group-id="1515557782-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="1515557782-5">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·5ed9e6ad051df93f94ec368c9c5493b94bb9a82c7e6f3c923fa97a489a1d3c79·...·]-6">]</span><span·class="p">.</span><span·class="w">193 </span><span·class="nf">encode</span><span·class="p"·data-group-id="8702690443-4">(</span><span·class="p"·data-group-id="8702690443-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="8702690443-5">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·291,·SHA:·1ddb4afc48af7a251d0367f7ece0fd5c20b3184432d87d443f5adbe5d7283320·...·]-6">]</span><span·class="p">.</span><span·class="w">
  
194 </span><span·class="nf">decode</span><span·class="p"·data-group-id="1515557782-7">(</span><span·class="p"·data-group-id="1515557782-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="1515557782-8">]</span><span·class="p"·data-group-id="1515557782-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="8702690443-7">(</span><span·class="p"·data-group-id="8702690443-8">[</span><span·class="n">Int</span><span·class="p"·data-group-id="8702690443-8">]</span><span·class="p"·data-group-id="8702690443-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="3715401460-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="3715401460-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="8739128408-1">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="8739128408-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="3715401460-2">(</span><span·class="p"·data-group-id="3715401460-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:·4c6eac723e87872a82bdaa2176dabd33f48a775f1b362adcda1129b4f0b5ce24·...·]-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="8739128408-2">(</span><span·class="p"·data-group-id="8739128408-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:·0998a08bf565bb7e8ca8939de24163769fb1d41020fe4ca8a6cc0de0f6fbaf95·...·]-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="3715401460-4">(</span><span·class="p"·data-group-id="3715401460-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:·bd26b223fbbe458791034298aa882568ffbc9ca700fbf844481b27514bf329e2·...·]-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="8739128408-4">(</span><span·class="p"·data-group-id="8739128408-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:·d2384d0bee0a3af4fc4bc2c9b2995b507ea0c07e57f818e6bbc34506c7bfa1b0·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
199 </span><span·class="nf">start</span><span·class="p"·data-group-id="3715401460-6">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="3715401460-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="8739128408-6">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="8739128408-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="3715401460-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="3715401460-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="8739128408-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="8739128408-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="3715401460-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="3715401460-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="8739128408-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="8739128408-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="3715401460-9">(</span><span·class="p"·data-group-id="3715401460-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="3715401460-10">}</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·a97d41a73ac336d3b2e3e97e78894bba1b81e991f9265adfb1dfe1b57b3704f4·...·]-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="8739128408-9">(</span><span·class="p"·data-group-id="8739128408-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="8739128408-10">}</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·1ceddf5f1e856d5ac1f865e17f2fe91a5afdd85585bb86a4b3fcdf0b20df6d5f·...·]-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="3715401460-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="3715401460-12">[</span><s[·...·truncated·by·diffoscope;·len:·125,·SHA:·1badb4f4665341310067c1e0ae0f68f4bc5b55e8e2a945ec99425d275fc48b95·...·]-11">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8739128408-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="8739128408-12">[</span><s[·...·truncated·by·diffoscope;·len:·125,·SHA:·af1daee1f9de5dd6ff2c8da052e2a3c428170c65e4206be29b4f7678576c5235·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">init</span><span·class="p"·data-group-id="3715401460-13">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="3715401460-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="8739128408-13">(</span><span·class="n">SharedLib</span><span·class="p"·data-group-id="8739128408-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="3715401460-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="3715401460-15">(</span><span·class="p"·data-group-id="3715401460-15">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·6cd5ea85bc1379d3af61e2c6b54331a53f2a657d98187287ed4c2f260c841a3c·...·]-14">)</span><span·class="p">,</span><span·class="w">207 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="8739128408-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="8739128408-15">(</span><span·class="p"·data-group-id="8739128408-15">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·ca62996980b2dc5c2678f2918541aafad6b748f7f5d309f48bb65ca385436be7·...·]-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="3715401460-16">(</span><span·class="p"·data-group-id="3715401460-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="3715401460-17">}</span><span·class="p">[·...·truncated·by·diffoscope;·len:·181,·SHA:·5dd6ab9b0c9a2b3e81065a92f1fb27ec3148a4c6e4b1da825e47d6e7e1c7f7c9·...·]-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="8739128408-16">(</span><span·class="p"·data-group-id="8739128408-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="8739128408-17">}</span><span·class="p">[·...·truncated·by·diffoscope;·len:·181,·SHA:·30828a6b7a3df2b94e3d877aeadd3bc4ebb6964a306c3f4ad02a259c50e83608·...·]-16">)</span><span·class="p">,</span><span·class="w">
209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="3715401460-19">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3715401460-19">)</span><span·class="p">.</span><span·class="w">209 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="8739128408-19">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8739128408-19">)</span><span·class="p">.</span><span·class="w">
  
210 </span><span·class="nf">stop</span><span·class="p"·data-group-id="3715401460-20">(</span><span·class="p"·data-group-id="3715401460-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="8739128408-20">(</span><span·class="p"·data-group-id="8739128408-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="3715401460-21">(</span><span·class="n">X</span><span·class="p"·data-group-id="3715401460-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="8739128408-21">(</span><span·class="n">X</span><span·class="p"·data-group-id="8739128408-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="3715401460-22">(</span><span·class="p"·data-group-id="3715401460-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="3715401460-23">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·06d835882ea15761c0548e0a31d67ba4f54a396d94ed58a100222cfad2e9d705·...·]-22">)</span><span·class="p">.</span><span·class="w">213 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="8739128408-22">(</span><span·class="p"·data-group-id="8739128408-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="8739128408-23">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·ae50dd8fc51f793e00838b30fa255cfd1cb8a18b06d2990ff01f55d3b676bbeb·...·]-22">)</span><span·class="p">.</span><span·class="w">
214 </span><span·class="nf">bar</span><span·class="p"·data-group-id="3715401460-24">(</span><span·class="n">Y</span><span·class="p"·data-group-id="3715401460-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="8739128408-24">(</span><span·class="n">Y</span><span·class="p"·data-group-id="8739128408-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="3715401460-25">(</span><span·class="p"·data-group-id="3715401460-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="3715401460-26">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·06d835882ea15761c0548e0a31d67ba4f54a396d94ed58a100222cfad2e9d705·...·]-25">)</span><span·class="p">.</span><span·class="w">215 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="8739128408-25">(</span><span·class="p"·data-group-id="8739128408-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="8739128408-26">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·ae50dd8fc51f793e00838b30fa255cfd1cb8a18b06d2990ff01f55d3b676bbeb·...·]-25">)</span><span·class="p">.</span><span·class="w">
  
216 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="3715401460-27">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="3715401460-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="8739128408-27">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="8739128408-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="3715401460-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="3715401460-29">(</span><span·class="p"·data-group-id="3715401460-29">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·cec6557ed196aa602e72038a85a3b7fd04f2daf21180b82fbef6efbc1a9d0b23·...·]-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="8739128408-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="8739128408-29">(</span><span·class="p"·data-group-id="8739128408-29">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·7d7e8d2aa1f6ac661649393142063c1afa6ec295cf4f14185880b8922bb341cc·...·]-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="3715401460-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="3715401460-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 »       </span><span·class="p"·data-group-id="8739128408-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="8739128408-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="3715401460-31">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3715401460-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="8739128408-31">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8739128408-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="3715401460-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="3715401460-32">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 »       </span><span·class="p"·data-group-id="8739128408-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="8739128408-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="3715401460-33">{</span><span·class="nf">self</span><span·class="p"·data-group-id="3715401460-34">(</span><span·class="p"·data-group-id="3715401460-34">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3715401460-35">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·093d287d4dfdb7b804a77ae06e86b07865eeeb60d4ad1ee9b298b8c6be34f1bc·...·]-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="8739128408-33">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8739128408-34">(</span><span·class="p"·data-group-id="8739128408-34">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8739128408-35">{</[·...·truncated·by·diffoscope;·len:·343,·SHA:·4b7d139a1b06ec0a531978c7eeed368ed8972f29ebe97e5044550ed264daf560·...·]-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="3715401460-37">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3715401460-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:·1da86675b6beca6e4e77f29a8041546961cabab0e8929563736d0b31a4f293ed·...·]-37">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 »       »       </span><span·class="p"·data-group-id="8739128408-37">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8739128408-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:·203308fbb9510e1a82d1ebd61e23dd4936aea67c0acb92d1762fa67ac4993602·...·]-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="3715401460-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="3715401460-40">(</span><span·class="n">Data</span><span·class="p"·data-group-id="3715401460-4[·...·truncated·by·diffoscope;·len:·52,·SHA:·afcd1d114ab7396807c9fb01128cb09e60ebcea637c6a58e3fef59c1bcedf277·...·]-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="8739128408-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="8739128408-40">(</span><span·class="n">Data</span><span·class="p"·data-group-id="8739128408-4[·...·truncated·by·diffoscope;·len:·52,·SHA:·ab41168d22d13003f6d3f3241d91e28a5f59ac61b6e94620a0025e312fafb109·...·]-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="3715401460-41">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3715401460-41">)</span><span·class="p">;</span><span·class="w">230 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="8739128408-41">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8739128408-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="3715401460-42">{</span><span·class="nf">self</span><span·class="p"·data-group-id="3715401460-43">(</span><span·class="p"·data-group-id="3715401460-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:·6c75892727d22a45ab8f11bd8b092834c7e64488a6eb311202b1572e993a56a5·...·]-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="8739128408-42">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8739128408-43">(</span><span·class="p"·data-group-id="8739128408-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:·6acd7aa4b6d23407dd68a0635292a1b856d42537f82ecc7eeeb31845202fea53·...·]-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="3715401460-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="3715401460-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">234 »       »       </span><span·class="p"·data-group-id="8739128408-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="8739128408-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="3715401460-45">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="3715401460-45">)</span><span·class="w">235 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="8739128408-45">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="8739128408-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="3715401460-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="3715401460-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">237 »       </span><span·class="p"·data-group-id="8739128408-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="8739128408-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="3715401460-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="3715401460-48">[</sp[·...·truncated·by·diffoscope;·len:·127,·SHA:·874b7f71a00d87e7feab6bb7f6c242b54c339e8ad0c9bf7819b8ab979b01488d·...·]-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="8739128408-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="8739128408-48">[</sp[·...·truncated·by·diffoscope;·len:·127,·SHA:·daa1c5977ddae275a71b635c4daa11ae4e569fec777b6d34fe446079a9797a8b·...·]-47">)</span><span·class="p">,</span><span·class="w">
239 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="3715401460-49">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="3715401460-49">)</span><span·class="w">239 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="8739128408-49">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="8739128408-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="3715401460-50">(</span><span·class="p"·data-group-id="3715401460-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="3715401460-51">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·a1e6f270a6b359ea77d60325a0468f59810a2fdb90a1cefaec7ee15b8453747c·...·]-52">]</span><span·class="p">;</span><span·class="w">241 </span><span·class="nf">encode</span><span·class="p"·data-group-id="8739128408-50">(</span><span·class="p"·data-group-id="8739128408-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="8739128408-51">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·00917524cf6a52ac03ebc4539f3526e56de723000fd747406a907383b52ff866·...·]-52">]</span><span·class="p">;</span><span·class="w">
242 </span><span·class="nf">encode</span><span·class="p"·data-group-id="3715401460-53">(</span><span·class="p"·data-group-id="3715401460-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="3715401460-54">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·0c9c24a659230d187763d36564878987d9028fa4cd4d1007306e8fe3d3f47433·...·]-55">]</span><span·class="p">.</span><span·class="w">242 </span><span·class="nf">encode</span><span·class="p"·data-group-id="8739128408-53">(</span><span·class="p"·data-group-id="8739128408-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="8739128408-54">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·296,·SHA:·5a26ac5178359c75da59509ae24913473b61ff46ab82d1858cd8745adba112bc·...·]-55">]</span><span·class="p">.</span><span·class="w">
  
243 </span><span·class="nf">decode</span><span·class="p"·data-group-id="3715401460-56">(</span><span·class="p"·data-group-id="3715401460-57">[</span><span·class="n">Int</span><span·class="p"·data-group-id="3715401460-57">]</span><span·class="p"·data-group-id="3715401460-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="8739128408-56">(</span><span·class="p"·data-group-id="8739128408-57">[</span><span·class="n">Int</span><span·class="p"·data-group-id="8739128408-57">]</span><span·class="p"·data-group-id="8739128408-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="6429408850-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="6429408850-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="6429408850-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·ae674e4d572c7a48a35881c943a90a393e3c258f3d7a17bcaf5cf35cbf2edb3b·...·]-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="2696677914-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">14.2</span><span·class="p"·data-group-id="2696677914-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="2696677914-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1283,·SHA:·cdca71f28e9edacb58e105c0a09b1151a51f85f92220cc67dc2198397265d637·...·]-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="6429408850-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:·7c3bab17f77c33b1415bbdd89392cc0ca8b476ca633ad8ab4333df5ce279aa47·...·]-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="2696677914-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:·bc24b65609c254caaaccbf85e928fc9c89b67b0ad617b9a059a3b8b223d24e85·...·]-8">)</span><span·class="gp·unselectable">
356 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="6429408850-10">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="6429408850-10">)</span><span·class="p">.</span><span·class="w">356 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="2696677914-10">(</span><span·class="ss">complex5</span><span·class="p"·data-group-id="2696677914-10">)</span><span·class="p">.</span><span·class="w">
357 </span><span·class="p"·data-group-id="6429408850-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex5</span><span·class="p"·data-group-id="6429408850-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:·dd7d5910bfc5ce3f4a056c2ca8492b9f12e31b7a2d60b70c8a4200737285151b·...·]-1">)</span><span·class="p">.</span><span·class="w">357 </span><span·class="p"·data-group-id="2696677914-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex5</span><span·class="p"·data-group-id="2696677914-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:·3ff25367143a918b708da6ea55e4f3506b8f8af18ca118d083b0bfefaf4a54a7·...·]-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">
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.6/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="1404354152-1">(</span><span·class="n">Module</span><span·class="p"·data-group-id="1404354152-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.6/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="0377897339-1">(</span><span·class="n">Module</span><span·class="p"·data-group-id="0377897339-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="1404354152-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="1404354152-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="0377897339-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="0377897339-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.3/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.3/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.3/doc/html/erlc_cmd.html">erlc</a>·executable·in·ERTS.·It135 shell,·see·the·<a·href="../../erts-15.2.3/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="9683827871-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="9683827871-1">)</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="3363826712-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="3363826712-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="9683827871-2">(</span><span·class="p"·data-group-id="9683827871-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9683827871-3">]</span><span·class="p"·data-group-id="9683827871-2">)</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="3363826712-2">(</span><span·class="p"·data-group-id="3363826712-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3363826712-3">]</span><span·class="p"·data-group-id="3363826712-2">)</span><span·class="p">.</span><span·class="w">
  
165 </span><span·class="nf">loop</span><span·class="p"·data-group-id="9683827871-4">(</span><span·class="p"·data-group-id="9683827871-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="3363826712-4">(</span><span·class="p"·data-group-id="3363826712-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="9683827871-5">(</span><span·class="p"·data-group-id="9683827871-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="3363826712-5">(</span><span·class="p"·data-group-id="3363826712-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="9683827871-6">(</span><span·class="p"·data-group-id="9683827871-6">)</span><span·class="w">171 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="3363826712-6">(</span><span·class="p"·data-group-id="3363826712-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="2643999282-1">(</span><span·class="n">Name</span><span·class="o">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2643999282-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="6948056275-1">(</span><span·class="n">Name</span><span·class="o">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6948056275-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="5892978189-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="5892978189-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="8314377812-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="8314377812-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="5892978189-2">(</span><span·class="ss">load_my_nifs</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5892978189-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="8314377812-2">(</span><span·class="ss">load_my_nifs</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8314377812-2">)</span><span·class="p">.</span><span·class="w">
  
197 </span><span·class="nf">load_my_nifs</span><span·class="p"·data-group-id="5892978189-3">(</span><span·class="p"·data-group-id="5892978189-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="8314377812-3">(</span><span·class="p"·data-group-id="8314377812-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="5892978189-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="5892978189-4">)</span><span·class="p">.</span></code></pre><p>If·the·call·to·<a·href="../../erts-15.2.3/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="8314377812-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="8314377812-4">)</span><span·class="p">.</span></code></pre><p>If·the·call·to·<a·href="../../erts-15.2.3/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="6145677005-1">(</span><span·class="p"·data-group-id="6145677005-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6145677005-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·60,·SHA:·1e9f693ded03e04511c3bb677653844cb1caf9cec59d0e404b14a725e78474b7·...·]-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="3414625948-1">(</span><span·class="p"·data-group-id="3414625948-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="3414625948-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·60,·SHA:·004d7cca86e62c0a01d20b7cbcd7d387efb741d8414bfe105d202485e1352b8c·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
126 ····</span><span·class="p"·data-group-id="6145677005-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="6145677005-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:·49d8404e26dbe1ba40193863e7e218bfcabc79e89a8c136d7b0c7d8297bc41df·...·]-3">]</span><span·class="p">;</span><span·class="w">126 ····</span><span·class="p"·data-group-id="3414625948-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="3414625948-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:·37997aebc0d7ca78e3a779a6d72650e6982e9c63025f23620017e06a599cb830·...·]-3">]</span><span·class="p">;</span><span·class="w">
127 </span><span·class="nf">my_plus_plus</span><span·class="p"·data-group-id="6145677005-5">(</span><span·class="p"·data-group-id="6145677005-6">[</span><span·class="p"·data-group-id="6145677005-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="6145677005-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="3414625948-5">(</span><span·class="p"·data-group-id="3414625948-6">[</span><span·class="p"·data-group-id="3414625948-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="3414625948-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="5392518556-1">(</span><span·class="p"·data-group-id="5392518556-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="5392518556-2">]</span><span·class="p"·data-group-id="5392518556-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="3846162408-1">(</span><span·class="p"·data-group-id="3846162408-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="3846162408-2">]</span><span·class="p"·data-group-id="3846162408-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="5392518556-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="5392518556-3">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="5392518556-4">[</span><span·class="n">H</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·956d2fd9b3fa6be28194a09e06c484553ecf5782d7b36497cb9f7e9e4dc16ca1·...·]-4">]</span><span·class="p">;</span><span·class="w">129 ····</span><span·class="nf">naive_reverse</span><span·class="p"·data-group-id="3846162408-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="3846162408-3">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="p"·data-group-id="3846162408-4">[</span><span·class="n">H</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·5a370756edff8a6e846806a94c84b4713118d7269f6f508d5c253d8fac8fdfbf·...·]-4">]</span><span·class="p">;</span><span·class="w">
130 </span><span·class="nf">naive_reverse</span><span·class="p"·data-group-id="5392518556-5">(</span><span·class="p"·data-group-id="5392518556-6">[</span><span·class="p"·data-group-id="5392518556-6">]</span><span·class="p"·data-group-id="5392518556-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="3846162408-5">(</span><span·class="p"·data-group-id="3846162408-6">[</span><span·class="p"·data-group-id="3846162408-6">]</span><span·class="p"·data-group-id="3846162408-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
131 ····</span><span·class="p"·data-group-id="5392518556-7">[</span><span·class="p"·data-group-id="5392518556-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="3846162408-7">[</span><span·class="p"·data-group-id="3846162408-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="9798852701-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="9798852701-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="2415725110-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="2415725110-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="9798852701-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9798852701-3">[</span><span·class="p"·data-group-id="9798852701-3">]</span><span·class="p"·data-group-id="9798852701-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="2415725110-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2415725110-3">[</span><span·class="p"·data-group-id="2415725110-3">]</span><span·class="p"·data-group-id="2415725110-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="9798852701-4">(</span><span·class="p"·data-group-id="9798852701-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9798852701-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·5a04a8a57231f85e5cb625880102ef32d4683cd922b244b1e5b68fd36f806155·...·]-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="2415725110-4">(</span><span·class="p"·data-group-id="2415725110-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2415725110-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·c6a0d996a19d7650626829e72195a43ca2fb351d0d61d02969a8a42712c49cc7·...·]-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="9798852701-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9798852701-7">[</span><span·class="n">H</span><span·class="p"·data-group-id="9798852701-7">]</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·108,·SHA:·d73086e39e74eaf48bd781f3f427c667217dfa05580c8820c125cde578531505·...·]-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="2415725110-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2415725110-7">[</span><span·class="n">H</span><span·class="p"·data-group-id="2415725110-7">]</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·108,·SHA:·3d7808c7d28057da6bd4eac900bb8b2fe942a3431d713aa23817dd7624341b37·...·]-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="9798852701-8">(</span><span·class="p"·data-group-id="9798852701-9">[</span><span·class="p"·data-group-id="9798852701-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="9798852701-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="2415725110-8">(</span><span·class="p"·data-group-id="2415725110-9">[</span><span·class="p"·data-group-id="2415725110-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="2415725110-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="8816024379-1">(</span><span·class="p"·data-group-id="8816024379-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="8816024379-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·3bf7915cdeef44b171131cae2c06d9ea3431b122590d1127b8659824b5888e76·...·]-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="9493257482-1">(</span><span·class="p"·data-group-id="9493257482-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9493257482-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·bb15da0772f0f743b4e58e9fc014a6c2f70ff8796ebf728f053b33465d17e795·...·]-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="8816024379-3">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8816024379-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="8816[·...·truncated·by·diffoscope;·len:·59,·SHA:·e8e6b0af6a358658a7e094032110ab478423fbe60cd2cabec2205f25abc56f23·...·]-3">)</span><span·class="p">;</span><span·class="w">139 ····</span><span·class="nf">vanilla_reverse</span><span·class="p"·data-group-id="9493257482-3">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9493257482-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="9493[·...·truncated·by·diffoscope;·len:·59,·SHA:·eeab517dd10ce0c55804eb3632c0b410dc877141f19f4491a6da61de9fa6e63b·...·]-3">)</span><span·class="p">;</span><span·class="w">
140 </span><span·class="nf">vanilla_reverse</span><span·class="p"·data-group-id="8816024379-5">(</span><span·class="p"·data-group-id="8816024379-6">[</span><span·class="p"·data-group-id="8816024379-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="8816024379-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="9493257482-5">(</span><span·class="p"·data-group-id="9493257482-6">[</span><span·class="p"·data-group-id="9493257482-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="9493257482-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="6930042135-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="6930042135-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="5612472085-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="5612472085-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="6930042135-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6930042135-3">(</span><span·class="p"·data-group-id="6930042135-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="5612472085-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5612472085-3">(</span><span·class="p"·data-group-id="5612472085-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="6930042135-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="6930042135-5">[</span><span·class="n">State</span><span·class="o">#</[·...·truncated·by·diffoscope;·len:·179,·SHA:·b99cd512a1fa245a06aec30bccceae119b942c56383c84abed0ed89c258d8ea8·...·]5-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="5612472085-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="5612472085-5">[</span><span·class="n">State</span><span·class="o">#</[·...·truncated·by·diffoscope;·len:·179,·SHA:·8ff7030bfc87ba05a8b7261e5814feede03a705c82628d3d89d19dc5110c69aa·...·]5-4">)</span><span·class="w">
170 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="6930042135-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="5612472085-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.3/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.3/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="3140626739-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="3140626739-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="1088869105-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="1088869105-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="3140626739-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3140626739-3">(</span><span·class="p"·data-group-id="3140626739-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="1088869105-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1088869105-3">(</span><span·class="p"·data-group-id="1088869105-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="3140626739-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="3140626739-5">[</span><span·class="nf">map_get</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·288,·SHA:·f851890891ca64750a95e47105e5655f04c23522d72c3d38a7f5d4c71d3eecd1·...·]-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="1088869105-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="1088869105-5">[</span><span·class="nf">map_get</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·288,·SHA:·60786a525ce774d6e8c98ab9e1a0ceea43672f46fb654dad289f88542439cb56·...·]-4">)</span><span·class="w">
175 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="3140626739-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.1/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="1088869105-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.1/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="6817948877-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:·f9565aca2417368b688a419d083191aeb8cd27872cdc7d2c573d4d6d7a6b4655·...·]-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="8240455949-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:·b4bd1701a07f2916be7a4c1a7362b4ae7653729634059c2b9b7e1cbb2434b007·...·]-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="6817948877-2">(</span><span·class="p"·data-group-id="6817948877-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="8240455949-2">(</span><span·class="p"·data-group-id="8240455949-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="6817948877-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="6817948877-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="8240455949-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="8240455949-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="4852005565-1">(</span><span·class="p"·data-group-id="4852005565-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="4879000013-1">(</span><span·class="p"·data-group-id="4879000013-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="4852005565-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="4852005565-3">(</span><span·class="mi">1</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·145,·SHA:·28ce8bfec1da30092ee56a873f39aa5def409b0a20485e3b615993eaba7a1c99·...·]-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="4879000013-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="4879000013-3">(</span><span·class="mi">1</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·145,·SHA:·48cdefb14ae28deb2be07d044c177f0fbbeed82a90a002f3e33c18d27f2c122f·...·]-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="2444786370-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="2444786370-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="5761500167-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="5761500167-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="7864049119-1">(</span><span·class="p"·data-group-id="7864049119-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="1782295539-1">(</span><span·class="p"·data-group-id="1782295539-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="7864049119-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7864049119-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="7864049119-3">)</span><span[·...·truncated·by·diffoscope;·len:·851,·SHA:·cc8d8f7a4a96673490a45623f8972a5196cf2a21b13204ce42d6f0ec32e953fc·...·]9-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="1782295539-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1782295539-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="1782295539-3">)</span><span[·...·truncated·by·diffoscope;·len:·851,·SHA:·8c4723e68069d82f3ec55fab80d7469775c64bc474882531ca1a919affcc1a8a·...·]9-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="7864049119-7">{</span><span·class="ss">data</span><span·class="o">=</span><span·class="n">Shared</span><span·class="p"·data-group-id="7864049119-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="1782295539-7">{</span><span·class="ss">data</span><span·class="o">=</span><span·class="n">Shared</span><span·class="p"·data-group-id="1782295539-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="3748564675-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="3748564675-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="3688345662-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="3688345662-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="3748564675-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3748564675-3">(</span><span·class="p"·data-group-id="3748564675-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="3688345662-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3688345662-3">(</span><span·class="p"·data-group-id="3688345662-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="3748564675-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="3748564675-5">[</span><span·class="n">Info</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·73,·SHA:·42deedb5326a92711ba7f2cf552f1e6e6456388a9ba136af2b678361fc13739b·...·]-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="3688345662-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="3688345662-5">[</span><span·class="n">Info</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·73,·SHA:·697dd16d6518b3b6e90f1df4a6c71cb23505d26c81b8fce285fe121eff5f9e24·...·]-4">)</span><span·class="w">
196 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="3748564675-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="3688345662-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="2705589998-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="2705589998-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="6876642597-1">(</span><span·class="n">State</span><span·class="p"·data-group-id="6876642597-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="2705589998-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="2705589998-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="6876642597-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="6876642597-2">)</span><span·class="p">,</span><span·class="w">
199 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2705589998-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2705589998-4">(</span><span·class="p"·data-group-id="2705589998-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="6876642597-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6876642597-4">(</span><span·class="p"·data-group-id="6876642597-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="2705589998-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="2705589998-6">[</span><span·class="n">Info</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·008151bd02144cdd8aab4537c5baee20f2b890a0d14011f88d0006337df8a0c2·...·]-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="6876642597-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="6876642597-6">[</span><span·class="n">Info</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·0409be8a0638906fbb47df5ab4f6ea80b36eebb0d77a985517725084ed8794d2·...·]-5">)</span><span·class="w">
201 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="2705589998-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="6876642597-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.3/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.3/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.3/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.3/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.3/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.3/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.3/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="0039061531-1">(</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="0039061531-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="0039061531-2">)</[·...·truncated·by·diffoscope;·len:·196,·SHA:·287b748260f0697825271383d75d9bdac374e8e57df205b536d1774422b85727·...·]-1">)</span></code></pre><h2·id="length-1"·class="section-heading">216 is·passed·to·<a·href="../../erts-15.2.3/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="9661674770-1">(</span><span·class="nf">list_to_atom</span><span·class="p"·data-group-id="9661674770-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="9661674770-2">)</[·...·truncated·by·diffoscope;·len:·196,·SHA:·2fce5b78ad6d553af8b191f00c63a5f14688b4a9464dbdda2def7c79a1e5f37a·...·]-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.3/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.3/doc/html/erlang.html#tuple_size/1"><code·class="inline">tuple_size/1</code></a>,
224 <a·href="../../erts-15.2.3/doc/html/erlang.html#byte_size/1"><code·class="inline">byte_size/1</code></a>,·and·<a·href="../../erts-15.2.3/doc/html/erlang.html#bit_size/1"><code·class="inline">bit_size/1</code></a>,·which·all224 <a·href="../../erts-15.2.3/doc/html/erlang.html#byte_size/1"><code·class="inline">byte_size/1</code></a>,·and·<a·href="../../erts-15.2.3/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.3/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.3/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.3/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.3/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="2949171436-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="2949171436-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="2949171436-2">(</span[·...·truncated·by·diffoscope;·len:·66,·SHA:·f7a92409bcf706e7e761344c47c0416a54287a9a5a31f78ab69ebd6b788e86f8·...·]-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="7829771100-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="7829771100-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="7829771100-2">(</span[·...·truncated·by·diffoscope;·len:·66,·SHA:·20e8054fa5ea2fc6371e4f0e3519125b629f1b6c8cf8edb9975ed79bae5990ae·...·]-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="2953563161-1">(</span><span·class="p"·data-group-id="2953563161-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="[·...·truncated·by·diffoscope;·len:·129,·SHA:·8647f72b0cd25c3dcf7200f2afdb7528aacddd83eb6506884b289ebbe6dedb98·...·]-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="1354313873-1">(</span><span·class="p"·data-group-id="1354313873-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="[·...·truncated·by·diffoscope;·len:·129,·SHA:·7954509a4af9856a413f74f6685713a4325003118256ea4ba1a23c46bb66bdcf·...·]-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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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="2046863809-1">(</span><span·class="n">T0</span><span·class="p"·data-group-id="2046863809-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="2046863809-2">(<[·...·truncated·by·diffoscope;·len:·72,·SHA:·11ec9e829c5f6f86ca2dd9b0bdb8d5623f60f953674fb4242039c4c72e833bf7·...·]-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="0440440485-1">(</span><span·class="n">T0</span><span·class="p"·data-group-id="0440440485-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="0440440485-2">(<[·...·truncated·by·diffoscope;·len:·72,·SHA:·05ab5e34dd977ac91b1d53ca0960b67805fa41f89c1aa4bdec23d7cf83228a1d·...·]-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="2046863809-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="2046863809-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="0440440485-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="0440440485-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="2046863809-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="2046863809-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="0440440485-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="0440440485-4">)</span><span·class="p">,</span><span·class="w">
248 ····</span><span·class="nf">setelement</span><span·class="p"·data-group-id="2046863809-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="2046863809-5">)</span><span·class="p">.</span></code></pre><p>The·two·following·<a·href="../../erts-15.2.3/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="0440440485-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="0440440485-5">)</span><span·class="p">.</span></code></pre><p>The·two·following·<a·href="../../erts-15.2.3/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.3/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.3/doc/html/erlang.html#setelement/3"><code·class="inline">setelement/3</code></a>·call·must·only·be250 <a·href="../../erts-15.2.3/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.3/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.3/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.3/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/52582 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="6809146854-1">(</span><span·class="ss">tut14</span><span·class="p"·data-group-id="6809146854-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="7162486197-1">(</span><span·class="ss">tut14</span><span·class="p"·data-group-id="7162486197-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="6809146854-2">(</span><span·class="p"·data-group-id="6809146854-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:·3ff345abbed269815bc28e484b82165e971dfc77d447db5b9313955afd6828f6·...·]-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="7162486197-2">(</span><span·class="p"·data-group-id="7162486197-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:·d58434b11116d0619c76dc9faacd8d54aab8055ebd6c1c1badf18968ee4183ef·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
142 </span><span·class="nf">say_something</span><span·class="p"·data-group-id="6809146854-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="6809146854-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="7162486197-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="7162486197-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="6809146854-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="6809146854-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="7162486197-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="7162486197-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="6809146854-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="6809146854-7">[</span><span·class="n">What</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·bd306fec57463879c66fca7f06ece9598123b91f199a8496c74912d8adead336·...·]-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="7162486197-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="7162486197-7">[</span><span·class="n">What</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·2f620ad7589541993bfaa431abcb5132411abc2369bab34eec60e3f32f90f998·...·]-6">)</span><span·class="p">,</span><span·class="w">
146 ····</span><span·class="nf">say_something</span><span·class="p"·data-group-id="6809146854-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="680[·...·truncated·by·diffoscope;·len:·7,·SHA:·5721d41318fd0809892a5eaadb9c0060225493dc187c1bdbfcf597fb2a3c91f9·...·]-8">)</span><span·class="p">.</span><span·class="w">146 ····</span><span·class="nf">say_something</span><span·class="p"·data-group-id="7162486197-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="716[·...·truncated·by·diffoscope;·len:·7,·SHA:·cae7a2ca9f862e0873188d581841ec80549010ff5b6ba2e4125f01190cdddcca·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
147 </span><span·class="nf">start</span><span·class="p"·data-group-id="6809146854-9">(</span><span·class="p"·data-group-id="6809146854-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="7162486197-9">(</span><span·class="p"·data-group-id="7162486197-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="6809146854-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="6809146854-11">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·180,·SHA:·974c7b04db19cf0f2e956620fe0ae6160a0546b682f97ccf95c2a434a57ccbe0·...·]-10">)</span><span·class="p">,</span><span·class="w">148 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="7162486197-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="7162486197-11">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·180,·SHA:·c1e7cb92adc2d636741fd8f8bf09efac2f84e8b0cd2317c85ce96a3b4a762d90·...·]-10">)</span><span·class="p">,</span><span·class="w">
149 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6809146854-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="6809146854-13">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·471,·SHA:·0b0ffd5985157419710b989672ccf9085db7bd3d9a9b8d3b0d9cbcdcc948312f·...·]-1">)</span><span·class="p">.</span><span·class="w">149 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="7162486197-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="7162486197-13">[</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·471,·SHA:·a2eb7632cfaa656b819639fbc8feabf25eabbc1beb34035da80612e9aa79ec80·...·]-1">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="p"·data-group-id="7379656224-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut14</span><span·class="p"·data-group-id="7379656224-2">}</span><span·class="gp·unselectable">150 </span><span·class="p"·data-group-id="4280113877-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut14</span><span·class="p"·data-group-id="4280113877-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="7379656224-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="7379656224-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="4280113877-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="4280113877-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="5215270236-1">(</span><span·class="p"·data-group-id="5215270236-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="8100890097-1">(</span><span·class="p"·data-group-id="8100890097-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="9549506089-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="9549506089-2">[</span><span·class="ss">go[·...·truncated·by·diffoscope;·len:·179,·SHA:·30a904ed4190bb02a4333907ec49cc77a25d36d5b34f789d0fa121f161e6f98e·...·]-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="5963006126-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="5963006126-2">[</span><span·class="ss">go[·...·truncated·by·diffoscope;·len:·179,·SHA:·089ae42eb2c139e3453e820fe4592ba015f4dc63578c6bc4be8adb89899a1e80·...·]-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.1/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>.·To·quote·<a·href="../../lib/stdlib-6.2.1/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.1/doc/html/io.html#format/2"><code·class="inline">io:format/2</code></a>.·To·quote·<a·href="../../lib/stdlib-6.2.1/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="0137912969-1">(</span><span·class="ss">tut15</span><span·class="p"·data-group-id="0137912969-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="5594081788-1">(</span><span·class="ss">tut15</span><span·class="p"·data-group-id="5594081788-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="0137912969-2">(</span><span·class="p"·data-group-id="0137912969-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:·c806501ee5821feac9efd14ad21625452303f872e44ea1860f401b449d706377·...·]-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="5594081788-2">(</span><span·class="p"·data-group-id="5594081788-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:·4052fe4fe911b3c45c6f3089545dcb2df006d2d1fed08906671041ac67444c24·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
186 </span><span·class="nf">ping</span><span·class="p"·data-group-id="0137912969-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="0137912969-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="5594081788-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="5594081788-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="0137912969-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="0137912969-6">[</span><span·class="p"·data-group-id="01379[·...·truncated·by·diffoscope;·len:·58,·SHA:·29d56f7daa0c3380d0d96128a9e69afb47c4c15c790f2015e02061ba72031d43·...·]-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="5594081788-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="5594081788-6">[</span><span·class="p"·data-group-id="55940[·...·truncated·by·diffoscope;·len:·58,·SHA:·764753f50d4b665366e1f6dcd3eac2090a235e7305134e2730397def2e9f1894·...·]-5">)</span><span·class="p">;</span><span·class="w">
  
189 </span><span·class="nf">ping</span><span·class="p"·data-group-id="0137912969-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="0137912969-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="5594081788-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="5594081788-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="0137912969-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="0137912969-9">(</span><span·class="p"·data-group-id="0137912969-9">)</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·fe3124227da5896a0639ca1d66d2511d2b9d31ded21ccc3bd0caf05ceaaa0e32·...·]-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="5594081788-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="5594081788-9">(</span><span·class="p"·data-group-id="5594081788-9">)</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·5f16634c61f59720660152571671b6da82594a903eb0da39e8220e62e8701b7b·...·]-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="0137912969-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="0137912969-11">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·46bf434347998b15162218932f0e2b596da32cf58c863be9a26f8b1cc27e9cba·...·]-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="5594081788-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="5594081788-11">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·dde410a685fd010c25b2af31c4be9c413f955f41355c600c1dad1c6dde1c0186·...·]-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="0137912969-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="01[·...·truncated·by·diffoscope;·len:·8,·SHA:·ea114645b90783167a489c55a041db5e8746826311b87462013b5b0a6b6eefe3·...·]-12">)</span><span·class="p">.</span><span·class="w">195 ····</span><span·class="nf">ping</span><span·class="p"·data-group-id="5594081788-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="55[·...·truncated·by·diffoscope;·len:·8,·SHA:·aca0c296af62af6fc17179af97b7d99ad1bdf5d673f5645b0b50d0c997088ab1·...·]-12">)</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="nf">pong</span><span·class="p"·data-group-id="0137912969-13">(</span><span·class="p"·data-group-id="0137912969-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="5594081788-13">(</span><span·class="p"·data-group-id="5594081788-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="0137912969-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="0137912969-15">[</span><span·class="p"·data-group-id="013[·...·truncated·by·diffoscope;·len:·61,·SHA:·54275e33564411a19a37bed71b238f8758486324e36743ef907f84fa539e0b9b·...·]-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="5594081788-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="5594081788-15">[</span><span·class="p"·data-group-id="559[·...·truncated·by·diffoscope;·len:·61,·SHA:·4d1abdc5b8ed953acdb3eaa9695d7aa1389e2a06baa03b230d64671d8b868a1b·...·]-14">)</span><span·class="p">;</span><span·class="w">
200 ········</span><span·class="p"·data-group-id="0137912969-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="0137912969-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">200 ········</span><span·class="p"·data-group-id="5594081788-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="5594081788-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="0137912969-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="0137912969-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·f2dee8c7ad3af224857432adf62ddcc80ba368d2ccc939676ec801c436978de4·...·]-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="5594081788-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="5594081788-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·3aeb2b34fa9d9fabdcb742312bb25a0ee04145908d8f9bdb42798e80b094d91b·...·]-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="0137912969-19">(</span><span·class="p"·data-group-id="0137912969-19">)</span><span·class="w">203 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="5594081788-19">(</span><span·class="p"·data-group-id="5594081788-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="0137912969-20">(</span><span·class="p"·data-group-id="0137912969-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="5594081788-20">(</span><span·class="p"·data-group-id="5594081788-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="0137912969-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="0137912969-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·92c6ecedf72f4a2f8b251478c690e92712d756d0fb46a2f80fa8d12ad5750ae1·...·]-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="5594081788-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="5594081788-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·21523c79449145f885a3d95a7bc04a12bfc85d6b6d032ec87806532f0c9d9558·...·]-21">)</span><span·class="p">,</span><span·class="w">
207 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0137912969-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="0137912969-24">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·462,·SHA:·7f200ec1c6202b539f6c57b2653d3a919724f1956a205f6367dcb70de51dccc0·...·]-1">)</span><span·class="p">.</span><span·class="w">207 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5594081788-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="5594081788-24">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·462,·SHA:·2875af1933bd401e95f87c55c8f38fffb76c33949ffc8c16744e84521f5f1872·...·]-1">)</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p"·data-group-id="9099067650-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut15</span><span·class="p"·data-group-id="9099067650-2">}</span><span·class="gp·unselectable">208 </span><span·class="p"·data-group-id="9732978846-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut15</span><span·class="p"·data-group-id="9732978846-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="9099067650-3">(</span><span·class="p"·data-group-id="9099067650-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="9732978846-3">(</span><span·class="p"·data-group-id="9732978846-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="7353055173-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="7353055173-2">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·66,·SHA:·6d4dd87b77d3012edcb60aa5aa50a4e20d23fb51d9acab07af4be2a68564d0ed·...·]-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="6732128922-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="6732128922-2">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·66,·SHA:·3f32b2e71c5dca0cab51378a2738a19a9c9275c2b36ac2dd96d05327942f4817·...·]-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="6083035642-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="6083035642-2">[</span><span·class="mi">3</span><spa[·...·truncated·by·diffoscope;·len:·574,·SHA:·1eb877399352c82330e53fc8537cee501d893fb2262af5aec073742bff23f8c7·...·]-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="6839670081-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="6839670081-2">[</span><span·class="mi">3</span><spa[·...·truncated·by·diffoscope;·len:·574,·SHA:·43821f6d3efa4365d99e19ea631f5d29fb7a337e6cd3999f2f87f592141b1441·...·]-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="2953179629-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="2953179629-2">[</span><span·class="p"·data-group-id="29531[·...·truncated·by·diffoscope;·len:·58,·SHA:·4ac0e74a7cce13fd9905433349f277cf9ff1b16c129b8ae9ab6bb65bca132e72·...·]-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="6240112426-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="6240112426-2">[</span><span·class="p"·data-group-id="62401[·...·truncated·by·diffoscope;·len:·58,·SHA:·fb0f6bc1bff0b68741640d2c9df2fb1aa67edc46b3de69d8f7a58a12fae8579d·...·]-1">)</span><span·class="p">;</span><span·class="w">
222 ····</span><span·class="p"·data-group-id="2953179629-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="2953179629-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 ····</span><span·class="p"·data-group-id="6240112426-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="6240112426-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="2953179629-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="2953179629-5">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·be36c97d12b126614c9cc829c4f5732832f15fa1ebf1602133f24b7cb2263a77·...·]-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="6240112426-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="6240112426-5">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·e76f06d3d0bd02ab15d1fcac0c764d641429b6bcdaceb643738b54a2b8b9b584·...·]-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="2953179629-6">(</span><span·class="p"·data-group-id="2953179629-6">)</span><span·class="w">225 ········</span><span·class="nf">pong</span><span·class="p"·data-group-id="6240112426-6">(</span><span·class="p"·data-group-id="6240112426-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="5704780316-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="5704780316-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="2019693806-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="2019693806-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="8385949977-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="8385949977-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="1506198690-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="1506198690-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="6670283541-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="6670283541-2">(</span><span·class="p"·data-group-id="6670283541-2">)</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·879e3e7009336aee9078a56bbc8eb6646ddee0d2cb86487d505aa7ef862b6e30·...·]-1">}</span><span·class="p">,</span></code></pre><p><a·href="../../erts-15.2.3/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.3/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="6735486046-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="6735486046-2">(</span><span·class="p"·data-group-id="6735486046-2">)</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·c257529dba9090212eccde589bb2b8e1ceb02e31facf876a19f95f5b681ca922·...·]-1">}</span><span·class="p">,</span></code></pre><p><a·href="../../erts-15.2.3/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.3/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="0338281096-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="0338281096-2">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·ef775d935a6e513141887602e9657d5429798fc80749c9f3bac1e1795353bfae·...·]-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="8148251785-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="8148251785-2">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·2acb914fdcddec0c2b0565543c1884580f1a4c056dbe9bff19f5e848d44a6a61·...·]-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="8785731854-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="8785[·...·truncated·by·diffoscope;·len:·6,·SHA:·d7e0ac044909c8a58473124207126d71f061b221b9fe11997883c182a9adfd7b·...·]-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="8646416562-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="8646[·...·truncated·by·diffoscope;·len:·6,·SHA:·7b5010246868786afdc4192bc3a982c99ffebb2868a69e626e67631c159c14b8·...·]-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/213243 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="7259945498-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">145 </span><span·class="p"·data-group-id="9002833791-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
146 ·</span><span·class="p"·data-group-id="7259945498-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="7259945498-2">}</span><span·class="p">,</span><span·class="w">146 ·</span><span·class="p"·data-group-id="9002833791-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="9002833791-2">}</span><span·class="p">,</span><span·class="w">
147 ·</span><span·class="p"·data-group-id="7259945498-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="7259945498-3">}</span><span·class="p">,</span><span·class="w">147 ·</span><span·class="p"·data-group-id="9002833791-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="9002833791-3">}</span><span·class="p">,</span><span·class="w">
148 ·</span><span·class="p"·data-group-id="7259945498-4">[</span><span·class="p"·data-group-id="7259945498-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="7259945498-5">}</span><span·class="p">,</span><span·class="w">148 ·</span><span·class="p"·data-group-id="9002833791-4">[</span><span·class="p"·data-group-id="9002833791-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="9002833791-5">}</span><span·class="p">,</span><span·class="w">
149 ··</span><span·class="p"·data-group-id="7259945498-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="7259945498-6">}</span><span·class="p">,</span><span·class="w">149 ··</span><span·class="p"·data-group-id="9002833791-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="9002833791-6">}</span><span·class="p">,</span><span·class="w">
150 ··</span><span·class="p"·data-group-id="7259945498-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="7259945498-7">}</span><span·class="p">,</span><span·class="w">150 ··</span><span·class="p"·data-group-id="9002833791-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="9002833791-7">}</span><span·class="p">,</span><span·class="w">
151 ··</span><span·class="p"·data-group-id="7259945498-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="7259945498-8">}</span><span·class="p"·data-group-id="7259945498-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·8eda843d700690798fd49b275c44ee4571ba3b9bb08cc4867b280e946ee14e78·...·]-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="9002833791-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="9002833791-8">}</span><span·class="p"·data-group-id="9002833791-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·5e3ed1277b8e2d58dd066bc137aaaa04ce1a82df9afdab440d35f8743129c529·...·]-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="8339770141-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">249 </span><span·class="p"·data-group-id="1750482775-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
250 ·</span><span·class="p"·data-group-id="8339770141-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="8339770141-2">}</span><span·class="p">,</span><span·class="w">250 ·</span><span·class="p"·data-group-id="1750482775-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="1750482775-2">}</span><span·class="p">,</span><span·class="w">
251 ·</span><span·class="p"·data-group-id="8339770141-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="8339770141-3">}</span><span·class="p">,</span><span·class="w">251 ·</span><span·class="p"·data-group-id="1750482775-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="1750482775-3">}</span><span·class="p">,</span><span·class="w">
252 ·</span><span·class="p"·data-group-id="8339770141-4">[</span><span·class="p"·data-group-id="8339770141-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="8339770141-5">}</span><span·class="p">,</span><span·class="w">252 ·</span><span·class="p"·data-group-id="1750482775-4">[</span><span·class="p"·data-group-id="1750482775-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="1750482775-5">}</span><span·class="p">,</span><span·class="w">
253 ··</span><span·class="p"·data-group-id="8339770141-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="8339770141-6">}</span><span·class="p">,</span><span·class="w">253 ··</span><span·class="p"·data-group-id="1750482775-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="1750482775-6">}</span><span·class="p">,</span><span·class="w">
254 ··</span><span·class="p"·data-group-id="8339770141-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="8339770141-7">}</span><span·class="p">,</span><span·class="w">254 ··</span><span·class="p"·data-group-id="1750482775-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="1750482775-7">}</span><span·class="p">,</span><span·class="w">
255 ··</span><span·class="p"·data-group-id="8339770141-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="8339770141-8">}</span><span·class="p"·data-group-id="8339770141-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·ce42f219785c316b8a0e82d0b24706f268243ff04ad012adc03a719d33bdbe21·...·]-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="1750482775-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="1750482775-8">}</span><span·class="p"·data-group-id="1750482775-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·d498a6edf91b83d1f832843512f2c585f1c092b1aa0e7edb4ac62d7887e07193·...·]-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="8204014514-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="5833921059-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="8204014514-2">[</span><span·class="p"·data-group-id="8204014514-3">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8204014514-4">[</span><span·class="p"·data-group-id="8204014514-5">{</span><span·class="[·...·truncated·by·diffoscope;·len:·277,·SHA:·b4114ef346216443acb3357f001b8b9a011031e4167619433a928ca7ee65aa6e·...·]-2">]</span><span·class="p">,</span><span·class="w">258 ·</span><span·class="p"·data-group-id="5833921059-2">[</span><span·class="p"·data-group-id="5833921059-3">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5833921059-4">[</span><span·class="p"·data-group-id="5833921059-5">{</span><span·class="[·...·truncated·by·diffoscope;·len:·277,·SHA:·84a1b5879ae783b47750abce5ad6c79a796563cb12415d94e1ce1b988cd8a6c3·...·]-2">]</span><span·class="p">,</span><span·class="w">
259 ·</span><span·class="p"·data-group-id="8204014514-6">[</span><span·class="p"·data-group-id="8204014514-7">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8204014514-8">[</span><span·class="p"·data-group-id="8204014514-9">{</span><span·class="[·...·truncated·by·diffoscope;·len:·330,·SHA:·c603edd67773b0a22a49b36c0d526716ad3749045b037ab597f112ad5280d5ea·...·]-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="5833921059-6">[</span><span·class="p"·data-group-id="5833921059-7">{</span><span·class="s">&quot;1.0&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5833921059-8">[</span><span·class="p"·data-group-id="5833921059-9">{</span><span·class="[·...·truncated·by·diffoscope;·len:·330,·SHA:·3b41f6dfbbee0770f8f95b168fddcc03dd664737bac0962a962da3b85c948075·...·]-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="3758446340-1">(</span><span·class="p"·data-group-id="3758446340-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="1469048181-1">(</span><span·class="p"·data-group-id="1469048181-1">)</span><span·class="p">.</span><span·class="w">
300 </span><span·class="p"·data-group-id="3758446340-2">[</span><span·class="p"·data-group-id="3758446340-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="1469048181-2">[</span><span·class="p"·data-group-id="1469048181-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="3758446340-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:·aa13fd0c849d5e402443508afa7dd0689c3a47b8c66ddb7bdbdff5d84bd43afe·...·]-4">]</span><span·class="p">,</span><span·class="w">301 ··</span><span·class="p"·data-group-id="1469048181-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:·d1681dc089f4c54dfbb0cb64886d6aa25a1279d4750b128efbd0605c06c64572·...·]-4">]</span><span·class="p">,</span><span·class="w">
302 ··</span><span·class="ss">current</span><span·class="p"·data-group-id="3758446340-3">}</span><span·class="p">,</span><span·class="w">302 ··</span><span·class="ss">current</span><span·class="p"·data-group-id="1469048181-3">}</span><span·class="p">,</span><span·class="w">
303 ·</span><span·class="p"·data-group-id="3758446340-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="1469048181-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="3758446340-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:·158cf397eb3d86a792101617cb8004100b3aec365eafd2f27c3ff4fef304cf84·...·]-6">]</span><span·class="p">,</span><span·class="w">304 ··</span><span·class="p"·data-group-id="1469048181-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:·1038919afaa5175db390b029ed3ad1c9a17d59513b33daa3fec668d4113cfa06·...·]-6">]</span><span·class="p">,</span><span·class="w">
305 ··</span><span·class="ss">permanent</span><span·class="p"·data-group-id="3758446340-5">}</span><span·class="p"·data-group-id="3758446340-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="1469048181-5">}</span><span·class="p"·data-group-id="1469048181-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="1473677663-1">(</span><span·class="ss">target_system</span><span·class="p"·data-group-id="1473677663-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="6728893661-1">(</span><span·class="ss">target_system</span><span·class="p"·data-group-id="6728893661-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="1473677663-2">(</span><span·class="p"·data-group-id="1473677663-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:·5f9095099900e6d9760c2aa0f5f816306a4e9533d975d87a5814d3f73a5a845b·...·]-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="6728893661-2">(</span><span·class="p"·data-group-id="6728893661-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:·531281e295a6d6b04be2cf436f10346c9178a9c2c87bb1d5a4589252bb6d80b3·...·]-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="1473677663-4">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="1473677663-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="6728893661-4">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="6728893661-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="1473677663-5">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="p"·data-group-id="1473677663-6">[</span><span·class="p"·data-group-id="1473677663-6">]</span><span·class="p"·data-group-id="1473677663-5">)</span><span·class="p">.</span><span·class="w">330 ····</span><span·class="nf">create</span><span·class="p"·data-group-id="6728893661-5">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="p"·data-group-id="6728893661-6">[</span><span·class="p"·data-group-id="6728893661-6">]</span><span·class="p"·data-group-id="6728893661-5">)</span><span·class="p">.</span><span·class="w">
  
331 </span><span·class="nf">create</span><span·class="p"·data-group-id="1473677663-7">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="1473677663-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="6728893661-7">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="6728893661-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="1473677663-8">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="1473677663-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="6728893661-8">(</span><span·class="n">RelFileName</span><span·class="p"·data-group-id="6728893661-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="1473677663-9">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="s">&quot;plain&quot;</span><span·class="p"·data-group-id="1473677663-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="6728893661-9">(</span><span·class="n">Dir</span><span·class="p">,</span><span·class="s">&quot;plain&quot;</span><span·class="p"·data-group-id="6728893661-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="1473677663-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="1473677663-11">[</span><span·class="n">RelFile</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·ea1f47cb49986922077d1509b1e9172cae1fe19ca3b4822cbad92e62b870f82f·...·]-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="6728893661-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="6728893661-11">[</span><span·class="n">RelFile</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·93d8b9d6b63bf32164a705490a9f68fad0a22915d1d70bd25ebf6fcba3fe875f·...·]-10">)</span><span·class="p">,</span><span·class="w">
337 ····</span><span·class="p"·data-group-id="1473677663-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1473677663-13">[</span><span·class="n">RelSpec</span><span·class="p"·data-group-id="1473677663-13">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·313,·SHA:·5aa00f72e2f9d9e145fd02568fe18196055a573eb72955db21d528c0eb00f81b·...·]-14">)</span><span·class="p">,</span><span·class="w">337 ····</span><span·class="p"·data-group-id="6728893661-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6728893661-13">[</span><span·class="n">RelSpec</span><span·class="p"·data-group-id="6728893661-13">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·313,·SHA:·9d53eef6f7bb3f25129afc4522f7b4af61e87c159971237acd520737cef02700·...·]-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="1473677663-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="6728893661-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="1473677663-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="1473677663-16">]</span><span·class="p"·data-group-id="1473677663-15">)</span><span·class="p">,</span><span·class="w">339 ··············</span><span·class="p"·data-group-id="6728893661-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="6728893661-16">]</span><span·class="p"·data-group-id="6728893661-15">)</span><span·class="p">,</span><span·class="w">
340 ····</span><span·class="p"·data-group-id="1473677663-17">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">340 ····</span><span·class="p"·data-group-id="6728893661-17">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
341 ·····</span><span·class="p"·data-group-id="1473677663-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="1473677663-18">}</span><span·class="p">,</span><span·class="w">341 ·····</span><span·class="p"·data-group-id="6728893661-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="6728893661-18">}</span><span·class="p">,</span><span·class="w">
342 ·····</span><span·class="p"·data-group-id="1473677663-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="1473677663-19">}</span><span·class="p">,</span><span·class="w">342 ·····</span><span·class="p"·data-group-id="6728893661-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="6728893661-19">}</span><span·class="p">,</span><span·class="w">
343 ·····</span><span·class="n">AppVsns</span><span·class="p"·data-group-id="1473677663-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="6728893661-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="1473677663-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="6728893661-20">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
345 ····················</span><span·class="p"·data-group-id="1473677663-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="1473677663-21">}</span><span·class="p">,</span><span·class="w">345 ····················</span><span·class="p"·data-group-id="6728893661-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="6728893661-21">}</span><span·class="p">,</span><span·class="w">
346 ····················</span><span·class="p"·data-group-id="1473677663-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="1473677663-22">}</span><span·class="p">,</span><span·class="w">346 ····················</span><span·class="p"·data-group-id="6728893661-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="6728893661-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="1473677663-23">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1473677663-24">(</span><span·class="p"·data-group-id="1473677663-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:·66ce20b5e3cddea03e38a64409af5e27695c09d8aa76d5edf5ae52e2c65186b6·...·]-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="6728893661-23">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6728893661-24">(</span><span·class="p"·data-group-id="6728893661-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:·572739be0a4298bd216d1c7cdee2ae5dec8ede4e788748e80d0917fb64ef0c75·...·]-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="1473677663-26">(</span><span·class="p"·data-group-id="1473677663-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="1473677663-27">}</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·114f2682435cf7f22eeb5b7a499948a4cf44eac8c81e8cd0073edebb22c43ea9·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">349 ····································</span><span·class="p"·data-group-id="6728893661-26">(</span><span·class="p"·data-group-id="6728893661-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="6728893661-27">}</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·a6f47713c54566f0d502547f0c77b63b6c61d2be18eb65a86c8aa759470de717·...·]-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="1473677663-28">(</span><span·class="p">_</span><span·class="p"·data-group-id="1473677663-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">351 ····································</span><span·class="p"·data-group-id="6728893661-28">(</span><span·class="p">_</span><span·class="p"·data-group-id="6728893661-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="1473677663-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="6728893661-23">)</span><span·class="w">
354 ···················</span><span·class="p"·data-group-id="1473677663-20">}</span><span·class="p">,</span><span·class="w">354 ···················</span><span·class="p"·data-group-id="6728893661-20">}</span><span·class="p">,</span><span·class="w">
355 ····</span><span·class="p"·data-group-id="1473677663-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="1473677663-29">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·387,·SHA:·e3720247d4be442fb7a228069e9aafdbcdca174725481d706c4cbf14d1fa8dfa·...·]-30">)</span><span·class="p">,</span><span·class="w">355 ····</span><span·class="p"·data-group-id="6728893661-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="6728893661-29">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·387,·SHA:·de073bbdb73cf3cea9d77ce04b549e360695c462178d7f2922dc1cfda80b5226·...·]-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="1473677663-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:·009eb2c1cfae712fc4802627912a2840f8ae67441469796bab3ffb2955e1ee43·...·]-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="6728893661-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:·caec1ad58d1af01b3482920782223c5dcbcd9598a9853197270cd04d1cafaf12·...·]-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="1473677663-34">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="1473677663-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="6728893661-34">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="6728893661-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="1473677663-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="6728893661-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="1473677663-36">[</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">PlainRelFileName</span><span·class="p"·data-group-id="1473677663-36">]</span><span·class="p"·data-group-id="1473677663-35">)</span><span·class="p">,</span><span·class="w">359 »       ······</span><span·class="p"·data-group-id="6728893661-36">[</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">PlainRelFileName</span><span·class="p"·data-group-id="6728893661-36">]</span><span·class="p"·data-group-id="6728893661-35">)</span><span·class="p">,</span><span·class="w">
360 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="1473677663-37">(</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="1473677663-37">)</span><span·class="p">,</span><span·class="w">360 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="6728893661-37">(</span><span·class="n">PlainRelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="6728893661-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="1473677663-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="6728893661-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="1473677663-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="1473677663-39">]</span><span·class="p"·data-group-id="1473677663-38">)</span><span·class="p">,</span><span·class="w">362 ··············</span><span·class="p"·data-group-id="6728893661-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="6728893661-39">]</span><span·class="p"·data-group-id="6728893661-38">)</span><span·class="p">,</span><span·class="w">
363 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="1473677663-40">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="1473677663-40">)</span><span·class="p">,</span><span·class="w">363 ····</span><span·class="nf">make_script</span><span·class="p"·data-group-id="6728893661-40">(</span><span·class="n">RelFileName</span><span·class="p">,</span><span·class="n">SystoolsOpts</span><span·class="p"·data-group-id="6728893661-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="1473677663-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="1473677663-42">[</span><span·class="n">TarFil[·...·truncated·by·diffoscope;·len:·107,·SHA:·c895e24389dfb14d8a24b719a1779483eb74c9ec7001a40a8c7266f916d87707·...·]-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="6728893661-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="6728893661-42">[</span><span·class="n">TarFil[·...·truncated·by·diffoscope;·len:·107,·SHA:·79500d17ad393c13e13ddfd15e6dd4ed9b0371ee90ec67213f7338b10843e0a9·...·]-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="9813544841-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="3540964034-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="9813544841-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="3540964034-1">}</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="9813544841-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="3540964034-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="9813544841-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="3540964034-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.3/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.3/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.3/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.3/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="6140140188-1">(</span><span·class="p"·data-group-id="6140140188-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="6140140188-2">&gt;&gt;</span><span·class="p"·data-group-id="614014018[·...·truncated·by·diffoscope;·len:·1,·SHA:·2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3·...·]-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="2458168610-1">(</span><span·class="p"·data-group-id="2458168610-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="2458168610-2">&gt;&gt;</span><span·class="p"·data-group-id="245816861[·...·truncated·by·diffoscope;·len:·1,·SHA:·5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9·...·]-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="6140140188-3">(</span><span·class="p"·data-group-id="6140140188-4">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="6140140188-4">&gt;&gt;</span><span·class="p"·data-group-id="614014018[·...·truncated·by·diffoscope;·len:·1,·SHA:·2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3·...·]-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="2458168610-3">(</span><span·class="p"·data-group-id="2458168610-4">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">1</span><span·class="p"·data-group-id="2458168610-4">&gt;&gt;</span><span·class="p"·data-group-id="245816861[·...·truncated·by·diffoscope;·len:·1,·SHA:·5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9·...·]-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="6140140188-5">(</span><span·class="p"·data-group-id="6140140188-6">&lt;&lt;</span><span·class="mi">42</span><span·class="p"·data-group-id="6140140188-6">&gt;&gt;</span><span·class="p"·data-group-id="6140140188-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="2458168610-5">(</span><span·class="p"·data-group-id="2458168610-6">&lt;&lt;</span><span·class="mi">42</span><span·class="p"·data-group-id="2458168610-6">&gt;&gt;</span><span·class="p"·data-group-id="2458168610-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.3/doc/html/erlang.html#make_ref/0"><code·class="inline">make_ref/0</code></a>·BIF.·The258 <a·href="../../erts-15.2.3/doc/html/erlang.html#make_ref/0"><code·class="inline">make_ref/0</code></a>·BIF.·The
259 <a·href="../../erts-15.2.3/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.3/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="5617653906-1">(</span><span·class="p"·data-group-id="5617653906-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="8798104980-1">(</span><span·class="p"·data-group-id="8798104980-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="5617653906-2">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="5617653906-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="8798104980-2">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="8798104980-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="4555009116-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="4555009116-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="5446875551-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="5446875551-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="4555009116-2">(</span><span·class="mi">2</span><span·class="p"·data-group-id="4555009116-2">)</span><span·class="p">.</span><span·class="w">273 2&gt;·</span><span·class="n">Fun1</span><span·class="p"·data-group-id="5446875551-2">(</span><span·class="mi">2</span><span·class="p"·data-group-id="5446875551-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.3/doc/html/erlang.html#is_function/1"><code·class="inline">is_function/1</code></a>·and·<a·href="../../erts-15.2.3/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.3/doc/html/erlang.html#is_function/1"><code·class="inline">is_function/1</code></a>·and·<a·href="../../erts-15.2.3/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="5888907652-1">(</span><span·class="p"·data-group-id="5888907652-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="1006610217-1">(</span><span·class="p"·data-group-id="1006610217-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="5888907652-2">(</span><span·class="n">F</span><span·class="p"·data-group-id="5888907652-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="1006610217-2">(</span><span·class="n">F</span><span·class="p"·data-group-id="1006610217-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="5888907652-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="5888907652-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="1006610217-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="1006610217-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="5888907652-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="5888907652-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="1006610217-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="1006610217-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.3/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.3/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.3/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.3/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.3/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.3/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.3/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="0108629666-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="0108629666-1">)</span><span·class="p">.</span><span·class="w">307 <a·href="../../erts-15.2.3/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="1520785498-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="1520785498-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="0108629666-2">(</span><span·class="p"·data-group-id="0108629666-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0108629666-3">]</span><span·class="p"·data-group-id="0108629666-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="1520785498-2">(</span><span·class="p"·data-group-id="1520785498-3">[</span><span·class="ss">loop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1520785498-3">]</span><span·class="p"·data-group-id="1520785498-2">)</span><span·class="p">.</span><span·class="w">
  
309 </span><span·class="nf">loop</span><span·class="p"·data-group-id="0108629666-4">(</span><span·class="p"·data-group-id="0108629666-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="1520785498-4">(</span><span·class="p"·data-group-id="1520785498-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="0108629666-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="0108629666-6">[</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·210,·SHA:·33410d8be4e3d65e6f602c03780842cb51322e875795ec6dba36483a25897707·...·]-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="1520785498-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="1520785498-6">[</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·210,·SHA:·abe4a20c11a85901ea8b45b58fca9d380f8de36735db156c440031ab34a6c8cd·...·]-5">)</span><span·class="p">,</span><span·class="w">
313 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="0108629666-8">(</span><span·class="p"·data-group-id="0108629666-8">)</span><span·class="w">313 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="1520785498-8">(</span><span·class="p"·data-group-id="1520785498-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="0108629666-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="0108629666-10">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·64,·SHA:·133d0ca8198766a6dd47aae588bd8025d7a0ea476d11d7aa9d517a7d7199cda2·...·]-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="1520785498-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="1520785498-10">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·64,·SHA:·6874449877ef65a71f17d39e8d06edc0de36dd7b2c4c248e9d94ad9c68031bd9·...·]-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="5999225430-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="5999225430-2">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·13f9ca5461744d0f270dbb3e25b7ec71c5f846669b14e850d6db5a9b05454eb9·...·]-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="6324692187-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="6324692187-2">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·56b9fbc15376ee3afca6995065e29a1b39efd946e1ce47db88899fcade66d14b·...·]-1">}</span><span·class="p">.</span><span·class="w">
327 </span><span·class="p"·data-group-id="5999225430-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="5999225430-4">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·46cc73a2af8ab60153a1e3eec8f2ac2bc51cdd363f49a9b70c90c3a9ff8a0f8d·...·]-3">}</span><span·class="gp·unselectable">327 </span><span·class="p"·data-group-id="6324692187-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="6324692187-4">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·31c16d4eaa7944223db49e92520a18f9e02ca1a920e9eb7af73fe64aa11627a7·...·]-3">}</span><span·class="gp·unselectable">
328 2&gt;·</span><span·class="nf">element</span><span·class="p"·data-group-id="5999225430-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="5999225430-5">)</span><span·class="p">.</span><span·class="w">328 2&gt;·</span><span·class="nf">element</span><span·class="p"·data-group-id="6324692187-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="6324692187-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="5999225430-6">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="5999225430-6">)</span><span·class="p">.</span><span·class="w">330 3&gt;·</span><span·class="nf">element</span><span·class="p"·data-group-id="6324692187-6">(</span><span·class="mi">3</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="6324692187-6">)</span><span·class="p">.</span><span·class="w">
331 </span><span·class="p"·data-group-id="5999225430-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="5999225430-7">}</span><span·class="gp·unselectable">331 </span><span·class="p"·data-group-id="6324692187-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="6324692187-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="5999225430-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="5999225430-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="6324692187-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="6324692187-8">)</span><span·class="p">.</span><span·class="w">
333 </span><span·class="p"·data-group-id="5999225430-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="5999225430-10">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span>[·...·truncated·by·diffoscope;·len:·95,·SHA:·18538ecd1a3f5231124b0d14c2d367a436dc5516f97c340eded242300280afb7·...·]-9">}</span><span·class="gp·unselectable">333 </span><span·class="p"·data-group-id="6324692187-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="6324692187-10">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span>[·...·truncated·by·diffoscope;·len:·95,·SHA:·b68e264253344a388dc6e8bec013adec2f09151b842966b17c11a2af1c0803f0·...·]-9">}</span><span·class="gp·unselectable">
334 5&gt;·</span><span·class="nf">tuple_size</span><span·class="p"·data-group-id="5999225430-11">(</span><span·class="n">P</span><span·class="p"·data-group-id="5999225430-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="6324692187-11">(</span><span·class="n">P</span><span·class="p"·data-group-id="6324692187-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="5999225430-12">(</span><span·class="p"·data-group-id="5999225430-13">{</span><span·class="p"·data-group-id="5999225430-13">}</span><span·class="p"·data-group-id="5999225430-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="6324692187-12">(</span><span·class="p"·data-group-id="6324692187-13">{</span><span·class="p"·data-group-id="6324692187-13">}</span><span·class="p"·data-group-id="6324692187-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="5999225430-14">(</span><span·class="p"·data-group-id="5999225430-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="5999225430-15">}</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·93863b7330cab892c627b2e0e6c2c925bbc6df657ee26f625b6bb743848e7790·...·]-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="6324692187-14">(</span><span·class="p"·data-group-id="6324692187-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="6324692187-15">}</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·948cb1c87829f1a9dfb806e71c0696ebf10e85869fde3ae8eb25526599d43c11·...·]-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="6633037621-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><s[·...·truncated·by·diffoscope;·len:·453,·SHA:·20d26ea179bc3efea89abc248362ee8e0ab6bf0c3df0a557bf37bea114ca9192·...·]-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="8584659540-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><s[·...·truncated·by·diffoscope;·len:·453,·SHA:·e8eb8beb0d24aeccee3a2e681085b15bc18d499eb4e11dcbff8dfbb98e4b4779·...·]-1">}</span><span·class="p">.</span><span·class="w">
348 </span><span·class="p"·data-group-id="6633037621-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:·405,·SHA:·ed07b1c666b988e64df9926e9f00b9d3abcd053c5a7600eed7923eff51b3dc7a·...·]-3">}</span><span·class="gp·unselectable">348 </span><span·class="p"·data-group-id="8584659540-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:·405,·SHA:·c077e1cffdccc7deff2a004b0be8c5fd4bee217dccdfdef5a4603ab295445a00·...·]-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="6633037621-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="6633037621-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="8584659540-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="8584659540-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="6633037621-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="6633037621-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="8584659540-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="8584659540-6">)</span><span·class="p">.</span><span·class="w">
352 </span><span·class="p"·data-group-id="6633037621-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="6633037621-7">}</span><span·class="gp·unselectable">352 </span><span·class="p"·data-group-id="8584659540-7">{</span><span·class="ss">july</span><span·class="p">,</span><span·class="mi">29</span><span·class="p"·data-group-id="8584659540-7">}</span><span·class="gp·unselectable">
Max diff block lines reached; 38254/78830 bytes (48.53%) 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="7285173030-1">(</span><span·class="ss">ch1</span><span·class="p"·data-group-id="7285173030-1">)</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="9072358945-1">(</span><span·class="ss">ch1</span><span·class="p"·data-group-id="9072358945-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="7285173030-2">(</span><span·class="p"·data-group-id="7285173030-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="7285173030-3">]</span><span·class="p"·data-group-id="7285173030-2">)</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="9072358945-2">(</span><span·class="p"·data-group-id="9072358945-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9072358945-3">]</span><span·class="p"·data-group-id="9072358945-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="7285173030-4">(</span><span·class="p"·data-group-id="7285173030-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:·12753ffa2cf4267a5d24c634151318c74cfdf9c346b48a9fb7c88b8bd5f2b35a·...·]-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="9072358945-4">(</span><span·class="p"·data-group-id="9072358945-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:·db25e2dc12833aa354e0d087630eaaee4cc65b552f577851f10fe69e47c73627·...·]-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="7285173030-6">(</span><span·class="p"·data-group-id="7285173030-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="7285173030-7">]</span><span·class="p"·data-group-id="7285173030-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="9072358945-6">(</span><span·class="p"·data-group-id="9072358945-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9072358945-7">]</span><span·class="p"·data-group-id="9072358945-6">)</span><span·class="p">.</span><span·class="w">
  
163 </span><span·class="nf">start</span><span·class="p"·data-group-id="7285173030-8">(</span><span·class="p"·data-group-id="7285173030-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="9072358945-8">(</span><span·class="p"·data-group-id="9072358945-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="7285173030-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="7285173030-10">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·5e3b6da9aee18416e103937fc9e401a4a5a5f2ab6a1519f9775836afc1461159·...·]-9">)</span><span·class="p">.</span><span·class="w">164 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="9072358945-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="9072358945-10">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·021ff8dc7c66e867b993ae62ca707d7e38cdbb1a95214fe31dccff5704726f0e·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
165 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="7285173030-11">(</span><span·class="p"·data-group-id="7285173030-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="9072358945-11">(</span><span·class="p"·data-group-id="9072358945-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="7285173030-12">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7285173030-13">(</span><span·class="p"·data-group-id="7285173030-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:·7da52e630b946fa3e6b43fef4f9d92a52c62364ed9e98da8489ad96ee5c75409·...·]-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="9072358945-12">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9072358945-13">(</span><span·class="p"·data-group-id="9072358945-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:·6cf314bcec25684678ff02ccd6a6d6924711a99c79680f8a658b7a719b60f0c4·...·]-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="7285173030-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="7285173030-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">168 ········</span><span·class="p"·data-group-id="9072358945-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="9072358945-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="7285173030-15">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="7285173030-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="9072358945-15">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="9072358945-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="7285173030-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="7285173030-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="9072358945-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="9072358945-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="7285173030-17">(</span><span·class="p"·data-group-id="7285173030-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="9072358945-17">(</span><span·class="p"·data-group-id="9072358945-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="7285173030-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="7285173030-19">(</span><span·class="p"·data-group-id="7285173030-19">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·e28e066445e5af96e06e8360f94a62ab20c22a1cac69f4a8c7c2d41ddf4ed8f9·...·]-18">)</span><span·class="p">,</span><span·class="w">175 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="9072358945-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="9072358945-19">(</span><span·class="p"·data-group-id="9072358945-19">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·53a94670e029203e88ce3bba27e421abe382a9611de4cd49b38d5da3cbcf60d9·...·]-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="7285173030-20">(</span><span·class="p"·data-group-id="7285173030-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="9072358945-20">(</span><span·class="p"·data-group-id="9072358945-20">)</span><span·class="p">,</span><span·class="w">
177 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="7285173030-21">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="7285173030-21">)</span><span·class="p">.</span><span·class="w">177 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="9072358945-21">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="9072358945-21">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">loop</span><span·class="p"·data-group-id="7285173030-22">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="7285173030-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="9072358945-22">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="9072358945-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="7285173030-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="7285173030-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 ········</span><span·class="p"·data-group-id="9072358945-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="9072358945-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ············</span><span·class="p"·data-group-id="7285173030-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="7285173030-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·cef059489e18dc85dbc1a61438f5e13cf0a3b77e33fe055a27968ddf941f6f71·...·]-25">)</span><span·class="p">,</span><span·class="w">181 ············</span><span·class="p"·data-group-id="9072358945-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="9072358945-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·cb338e2b62fc6aea79f95ab6f2789a57dd428dd3edd9820ea6fcdb76aa9bd30a·...·]-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="7285173030-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="7285173030-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="9072358945-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="9072358945-26">}</span><span·class="p">,</span><span·class="w">
183 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="7285173030-27">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="7285173030-27">)</span><span·class="p">;</span><span·class="w">183 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="9072358945-27">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="9072358945-27">)</span><span·class="p">;</span><span·class="w">
184 ········</span><span·class="p"·data-group-id="7285173030-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="7285173030-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 ········</span><span·class="p"·data-group-id="9072358945-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="9072358945-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="7285173030-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="7285173030-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="9072358945-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="9072358945-29">)</span><span·class="p">,</span><span·class="w">
186 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="7285173030-30">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="7285173030-30">)</span><span·class="w">186 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="9072358945-30">(</span><span·class="n">Chs2</span><span·class="p"·data-group-id="9072358945-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="5677046012-1">(</span><span·class="ss">server</span><span·class="p"·data-group-id="5677046012-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="8390760375-1">(</span><span·class="ss">server</span><span·class="p"·data-group-id="8390760375-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="5677046012-2">(</span><span·class="p"·data-group-id="5677046012-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5677046012-3">]</span><span·class="p"·data-group-id="5677046012-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="8390760375-2">(</span><span·class="p"·data-group-id="8390760375-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="8390760375-3">]</span><span·class="p"·data-group-id="8390760375-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="5677046012-4">(</span><span·class="p"·data-group-id="5677046012-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:·7027712385741e6c8f356b77ded5613c0317bb36041462a49a6896e5f52b67d6·...·]-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="8390760375-4">(</span><span·class="p"·data-group-id="8390760375-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:·1dbd27c6025dc933eac9645d5d54bab0bdaa65152a71b472ef94db71b9b81c53·...·]-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="5677046012-6">(</span><span·class="p"·data-group-id="5677046012-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5677046012-7">]</span><span·class="p"·data-group-id="5677046012-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="8390760375-6">(</span><span·class="p"·data-group-id="8390760375-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="8390760375-7">]</span><span·class="p"·data-group-id="8390760375-6">)</span><span·class="p">.</span><span·class="w">
  
191 </span><span·class="nf">start</span><span·class="p"·data-group-id="5677046012-8">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="5677046012-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="8390760375-8">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="8390760375-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="5677046012-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="5677046012-10">[</span><span·class="n">Mod</span>[·...·truncated·by·diffoscope;·len:·95,·SHA:·5a168faed92877f2d0a4f1f3a7d2963103f2b5fd403d51fce6c876bcb18fe154·...·]-9">)</span><span·class="p">.</span><span·class="w">192 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="8390760375-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="8390760375-10">[</span><span·class="n">Mod</span>[·...·truncated·by·diffoscope;·len:·95,·SHA:·786c50c175fa739924d880461cc08643e438729381f3f19028933810ea7f5965·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
193 </span><span·class="nf">call</span><span·class="p"·data-group-id="5677046012-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="5677046012-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="8390760375-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="8390760375-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="5677046012-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="5677046012-13">(</span><span·class="p"·data-group-id="5677046012-13">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·0ad6120139f952de811b3c8c46c913ccfcf761843aa14fd1048fc1292122a98d·...·]-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="8390760375-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="8390760375-13">(</span><span·class="p"·data-group-id="8390760375-13">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·5686d1e534b71e333751dfedf058ef99079ee19cd5908da7eb9d27f4844d74df·...·]-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="5677046012-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="5677046012-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">196 ········</span><span·class="p"·data-group-id="8390760375-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="8390760375-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="5677046012-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="5677046012-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="8390760375-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="8390760375-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="5677046012-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="5677046012-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="8390760375-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="8390760375-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="5677046012-17">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="5677046012-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="8390760375-17">(</span><span·class="n">Mod</span><span·class="p"·data-group-id="8390760375-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="5677046012-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="5677046012-19">(</span><span·class="p"·data-group-id="5677046012-19">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·96869512ff22c5f0ffb8c70e29778daa1ebd522e096868c1099e97b1c3b37038·...·]-18">)</span><span·class="p">,</span><span·class="w">203 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="8390760375-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="8390760375-19">(</span><span·class="p"·data-group-id="8390760375-19">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·584c61b752e77375ba9e3ef4c074d7830c82c7a6c4b598a1da427051f07a9dcd·...·]-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="5677046012-20">(</span><span·class="p"·data-group-id="5677046012-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="8390760375-20">(</span><span·class="p"·data-group-id="8390760375-20">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="5677046012-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="5677046012-21">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="8390760375-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="8390760375-21">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">loop</span><span·class="p"·data-group-id="5677046012-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="5677046012-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="8390760375-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="8390760375-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="5677046012-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="5677046012-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 ········</span><span·class="p"·data-group-id="8390760375-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="8390760375-23">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
209 ············</span><span·class="p"·data-group-id="5677046012-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="5677046012-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·278,·SHA:·62ec35855913826c758f067cc95a8e80497958132aa572ac9d46db9b735aeb57·...·]-25">)</span><span·class="p">,</span><span·class="w">209 ············</span><span·class="p"·data-group-id="8390760375-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="8390760375-24">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·278,·SHA:·b41f683617258abe0e7a189452e848d66df86d9095bd0aa849d6dd8452450f9c·...·]-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="5677046012-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="5677046012-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="8390760375-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="8390760375-26">}</span><span·class="p">,</span><span·class="w">
211 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="5677046012-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="5677046012-27">)</span><span·class="p">;</span><span·class="w">211 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="8390760375-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="8390760375-27">)</span><span·class="p">;</span><span·class="w">
212 ········</span><span·class="p"·data-group-id="5677046012-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="5677046012-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 ········</span><span·class="p"·data-group-id="8390760375-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="8390760375-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="5677046012-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="5677046012-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="8390760375-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="8390760375-29">)</span><span·class="p">,</span><span·class="w">
214 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="5677046012-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="5677046012-30">)</span><span·class="w">214 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="8390760375-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="8390760375-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="8734296909-1">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="8734296909-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="2654843687-1">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="2654843687-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="8734296909-2">(</span><span·class="p"·data-group-id="8734296909-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8734296909-3">]</span><span·class="p"·data-group-id="8734296909-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="2654843687-2">(</span><span·class="p"·data-group-id="2654843687-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="2654843687-3">]</span><span·class="p"·data-group-id="2654843687-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="8734296909-4">(</span><span·class="p"·data-group-id="8734296909-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:·92714192c9e95e83b8241b1fa56b619295382a6a619ac0c003a372db59045fee·...·]-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="2654843687-4">(</span><span·class="p"·data-group-id="2654843687-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:·e025ff5f8d20cdfb2a54e4874bb9567b4cbd90ab48fdd319c9131a5fcce771f1·...·]-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="8734296909-6">(</span><span·class="p"·data-group-id="8734296909-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:·25a6f016048914ee89d319000dbb372edf5d565dbeb67065e18258104a81b375·...·]-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="2654843687-6">(</span><span·class="p"·data-group-id="2654843687-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:·a5042cc734fad62d542cf918fa9372569c86b582a9a6c4db2911af4a1f717fb8·...·]-6">)</span><span·class="p">.</span><span·class="w">
  
219 </span><span·class="nf">start</span><span·class="p"·data-group-id="8734296909-8">(</span><span·class="p"·data-group-id="8734296909-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="2654843687-8">(</span><span·class="p"·data-group-id="2654843687-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="8734296909-9">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="8734296909-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="2654843687-9">(</span><span·class="ss">ch2</span><span·class="p"·data-group-id="2654843687-9">)</span><span·class="p">.</span><span·class="w">
  
221 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="8734296909-10">(</span><span·class="p"·data-group-id="8734296909-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="2654843687-10">(</span><span·class="p"·data-group-id="2654843687-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="8734296909-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="8734296909-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="2654843687-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="2654843687-11">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">free</span><span·class="p"·data-group-id="8734296909-12">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="8734296909-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="2654843687-12">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="2654843687-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="8734296909-13">(</span><span·class="ss">ch2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8734296909-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:·5d0e25fdb056643e75417f311a55ef3297282178dd311b60578fcc96b249a2e2·...·]-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="2654843687-13">(</span><span·class="ss">ch2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2654843687-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:·b0ff2c108e5b2e36854757868a1da03e51fec358321aae9ff59a0093138743bc·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
225 </span><span·class="nf">init</span><span·class="p"·data-group-id="8734296909-15">(</span><span·class="p"·data-group-id="8734296909-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="2654843687-15">(</span><span·class="p"·data-group-id="2654843687-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="8734296909-16">(</span><span·class="p"·data-group-id="8734296909-16">)</span><span·class="p">.</span><span·class="w">226 ····</span><span·class="nf">channels</span><span·class="p"·data-group-id="2654843687-16">(</span><span·class="p"·data-group-id="2654843687-16">)</span><span·class="p">.</span><span·class="w">
  
227 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="8734296909-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="8734296909-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="2654843687-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="2654843687-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="8734296909-18">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="8734296909-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="2654843687-18">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="2654843687-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="8734296909-19">(</span><span·class="p"·data-group-id="8734296909-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="8734296909-20">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·27e2d1b1afc0936272b53c892f8547acaaf42b6b1f935ada43d5d36fd97e5914·...·]-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="2654843687-19">(</span><span·class="p"·data-group-id="2654843687-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="2654843687-20">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·c9585fea823e3f97c92e24082079594966f840734e071ebdf67c880222b76729·...·]-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="8734296909-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="8734296909-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="2654843687-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="2654843687-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="4765928396-1">(</span><span·class="p"·data-group-id="4765928396-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="3328187582-1">(</span><span·class="p"·data-group-id="3328187582-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ···</span><span·class="p"·data-group-id="4765928396-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="4765928396-3">[</span><span·class="p"·data-group-id="4765928396-3">]</span>[·...·truncated·by·diffoscope;·len:·498,·SHA:·822d8f25cda903c7a901882ac77b948cf7c525675bede1511a0c08512dc29627·...·]-2">}</span><span·class="p">.</span><span·class="w">240 ···</span><span·class="p"·data-group-id="3328187582-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="3328187582-3">[</span><span·class="p"·data-group-id="3328187582-3">]</span>[·...·truncated·by·diffoscope;·len:·498,·SHA:·cdd26517d6777c65ad3e9c25745cbf6d6c2e7d2e9c5f2a611d102182322180f3·...·]-2">}</span><span·class="p">.</span><span·class="w">
  
241 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="4765928396-5">(</span><span·class="p"·data-group-id="4765928396-6">{</span><span·class="n">Allocated</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4765928396-7">[</span><span·class="n">H</span><span·class="p">|</span>[·...·truncated·by·diffoscope;·len:·294,·SHA:·a5f76ddb4e75cb46e80b0854f773ac71f1743188ca0b7d02e5903a88063df1d2·...·]-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="3328187582-5">(</span><span·class="p"·data-group-id="3328187582-6">{</span><span·class="n">Allocated</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3328187582-7">[</span><span·class="n">H</span><span·class="p">|</span>[·...·truncated·by·diffoscope;·len:·294,·SHA:·f813e7410bc55cdca26961d11c385ec8136efe7344da05f13d72d93e0595137b·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
242 ···</span><span·class="p"·data-group-id="4765928396-8">{</span><span·class="n">H</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4765928396-9">{</span><span·class="p"·data-group-id="4765928396-10">[</span><span·class="n">H</span><span·class="p">|</span><span·c[·...·truncated·by·diffoscope;·len:·245,·SHA:·b524f113033c384ddc916a576aacb7e5b15eeeec7f2dbb9ef2437564bcdb8060·...·]-8">}</span><span·class="p">.</span><span·class="w">242 ···</span><span·class="p"·data-group-id="3328187582-8">{</span><span·class="n">H</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3328187582-9">{</span><span·class="p"·data-group-id="3328187582-10">[</span><span·class="n">H</span><span·class="p">|</span><span·c[·...·truncated·by·diffoscope;·len:·245,·SHA:·ca18c3d5fd8ecdc762fb995be9f609136b48cfc49a9aa364da48ab829e0c18c8·...·]-8">}</span><span·class="p">.</span><span·class="w">
  
243 </span><span·class="nf">free</span><span·class="p"·data-group-id="4765928396-11">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4765928396-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:·e2bcfb2601a1eed18f2c2fe5d3f0303720ea67a20bb383d98593958b5d36ec53·...·]-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="3328187582-11">(</span><span·class="n">Ch</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3328187582-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:·ce6701c59f3da38ff5a727764218efb5bba5a7b0fb893e12d0858b41e2be5002·...·]-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="4765928396-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="4765928396-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="3328187582-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="3328187582-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="4765928396-14">{</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="4765928396-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:·d8c68cee0040270e9ed32471e57f75278372f23b629ff577a8011a653c8a8595·...·]-14">}</span><span·class="p">;</span><span·class="w">246 ·········</span><span·class="p"·data-group-id="3328187582-14">{</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="3328187582-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:·8dac31125e2bcfd194332156af05d8e433e98b4385cd94546ca597e6a27fbb29·...·]-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="8261691930-1">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="8261691930-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="1648875977-1">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="1648875977-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="8261691930-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="8261691930-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="1648875977-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="1648875977-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="8261691930-3">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="8261691930-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="1648875977-3">(</span><span·class="ss">chs3</span><span·class="p"·data-group-id="1648875977-3">)</span><span·class="p">.</span><span·class="w">
259 </span><span·class="p">.</span><span·class="o">/</span><span·class="ss">chs3</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">undefined</span><span·class="w">·</span><span·class="ss">call</span><span·class="o">-</span><span·class="ss">back</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="ss">handle_call</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">259 </span><span·class="p">.</span><span·class="o">/</span><span·class="ss">chs3</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">undefined</span><span·class="w">·</span><span·class="ss">call</span><span·class="o">-</span><span·class="ss">back</span><span·class="w">·</span><span·class="ss">function</span><span·class="w">·</span><span·class="ss">handle_call</span><span·class="p">/</span><span·class="mi">3</span><span·class="w">
Max diff block lines reached; 278/59679 bytes (0.47%) 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.3/doc/html/erl_cmd.html#name"><code·class="inline">-name</code></a>·(long·names)·or144 the·command-line·flag·<a·href="../../erts-15.2.3/doc/html/erl_cmd.html#name"><code·class="inline">-name</code></a>·(long·names)·or
145 <a·href="../../erts-15.2.3/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.3/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.3/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.3/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="0319652501-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="0319652501-1">)</span><span·class="mi">1</span><span·class="o"[·...·truncated·by·diffoscope;·len:·158,·SHA:·8eb9bac069e04f474b8eb0b61ab679945aedfd351704f0ef0ef6e77ff5c084b5·...·]-2">)</span><span·class="p">.</span><span·class="w">149 </span><span·class="p"·data-group-id="6413546302-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="6413546302-1">)</span><span·class="mi">1</span><span·class="o"[·...·truncated·by·diffoscope;·len:·158,·SHA:·77133e0baac67fcab804d7448f73480318a4eccf2cd7d112aa8827de4f4af222·...·]-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="0319652501-3">(</span><span·class="p"·data-group-id="0319652501-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="6413546302-3">(</span><span·class="p"·data-group-id="6413546302-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.3/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.3/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="5931836711-1">(</span><span·class="p"·data-group-id="5931836711-1">)</span><span·class="p">.</span><span·class="w">154 1&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="1069079810-1">(</span><span·class="p"·data-group-id="1069079810-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="5931836711-2">(</span><span·class="p"·data-group-id="5931836711-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="5931836711-3">]</span><span·class="p"·data-group-id="59318367[·...·truncated·by·diffoscope;·len:·2,·SHA:·4fc82b26aecb47d2868c4efbe3581732a3e7cbcc6c2efb32062c08170a05eeb8·...·]-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="1069079810-2">(</span><span·class="p"·data-group-id="1069079810-3">[</span><span·class="ss">dilbert</span><span·class="p">,</span><span·class="ss">shortnames</span><span·class="p"·data-group-id="1069079810-3">]</span><span·class="p"·data-group-id="10690798[·...·truncated·by·diffoscope;·len:·2,·SHA:·4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5·...·]-2">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="5931836711-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="5931836711-4">}</span><span·class="gp·unselectable">157 </span><span·class="p"·data-group-id="1069079810-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="1069079810-4">}</span><span·class="gp·unselectable">
158 (dilbert@uab)3&gt;·</span><span·class="nf">node</span><span·class="p"·data-group-id="5931836711-5">(</span><span·class="p"·data-group-id="5931836711-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="1069079810-5">(</span><span·class="p"·data-group-id="1069079810-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="4921399366-1">[</span><span·class="p"·data-group-id="4921399366-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="0859036654-1">[</span><span·class="p"·data-group-id="0859036654-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
158 ··</span><span·class="p"·data-group-id="4921399366-3">[</span><span·class="p"·data-group-id="4921399366-4">{</span><span·class="ss">distributed</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4921399366-5">[</span><span·class="p"·data-group-id="4921399366-6">[·...·truncated·by·diffoscope;·len:·712,·SHA:·2bd85cffcd78a6900f5a54564d17cda048a5dc1302100a572fbd0805b2fdf444·...·]-4">}</span><span·class="p">,</span><span·class="w">158 ··</span><span·class="p"·data-group-id="0859036654-3">[</span><span·class="p"·data-group-id="0859036654-4">{</span><span·class="ss">distributed</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0859036654-5">[</span><span·class="p"·data-group-id="0859036654-6">[·...·truncated·by·diffoscope;·len:·712,·SHA:·81194a87e036b392e70931e0154c6c015767b3a5ffe0b422f74b2b62edfd95e8·...·]-4">}</span><span·class="p">,</span><span·class="w">
159 ···</span><span·class="p"·data-group-id="4921399366-9">{</span><span·class="ss">sync_nodes_mandatory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4921399366-10">[</span><span·class="ss">cp2@cave</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·119,·SHA:·a130870e512677d087c5ed6c9c21a3cec899b7f94dca86bd78a5158592e98920·...·]-9">}</span><span·class="p">,</span><span·class="w">159 ···</span><span·class="p"·data-group-id="0859036654-9">{</span><span·class="ss">sync_nodes_mandatory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0859036654-10">[</span><span·class="ss">cp2@cave</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·119,·SHA:·9be3ba56ffb5b79b9ef9ebdc9d736d9258d0466d49ffb2c8e944b43ad915a72d·...·]-9">}</span><span·class="p">,</span><span·class="w">
160 ···</span><span·class="p"·data-group-id="4921399366-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="4921399366-11">}</span><span·class="w">160 ···</span><span·class="p"·data-group-id="0859036654-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="0859036654-11">}</span><span·class="w">
161 ··</span><span·class="p"·data-group-id="4921399366-3">]</span><span·class="w">161 ··</span><span·class="p"·data-group-id="0859036654-3">]</span><span·class="w">
162 ·</span><span·class="p"·data-group-id="4921399366-2">}</span><span·class="w">162 ·</span><span·class="p"·data-group-id="0859036654-2">}</span><span·class="w">
163 </span><span·class="p"·data-group-id="4921399366-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="0859036654-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="2574501584-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="2574501584-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="8400740190-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="8400740190-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="2549421165-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="2549421165-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="9097302234-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="9097302234-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="2002093652-1">(</span><span·class="p"·data-group-id="2002093652-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="2002093652-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·4a7cb0d9c518791c041a66fb4d08d3d546b41e09b456257485cdb5d906f194eb·...·]-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="7612462213-1">(</span><span·class="p"·data-group-id="7612462213-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="7612462213-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·ba9c92d0a0c4c18dcd6494dbe4437ff6507daaa7d9ba9a014b3834707e30e227·...·]-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="8212481939-1">(</span><span·class="p"·data-group-id="8212481939-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="8212481939-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·1423aa216a7407634db4406a933c6f7b14d8525a62aa7db9ee41cacbc1c22b00·...·]-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="9858204837-1">(</span><span·class="p"·data-group-id="9858204837-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="9858204837-2">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·100,·SHA:·9ef493f9df42a1de02ce8802d8f801eecec42f0c75294d403cbe9be25a96d856·...·]-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.3/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.3/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="3322729626-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="3322729626-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="2157821979-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="2157821979-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="3322729626-2">(</span><span·class="p"·data-group-id="3322729626-3">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="3322729626-3">]</span><span·class="p"·data-group-id="3322729626-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="2157821979-2">(</span><span·class="p"·data-group-id="2157821979-3">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="2157821979-3">]</span><span·class="p"·data-group-id="2157821979-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="3322729626-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="3322729626-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="2157821979-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="2157821979-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="6821367766-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="6821367766-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="0746839717-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="0746839717-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="6821367766-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="6821367766-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="0746839717-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="0746839717-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="6821367766-3">(</span><span·class="p"·data-group-id="6821367766-4">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="6821367766-4">]</span><span·class="p"·data-group-id="6821367766-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="0746839717-3">(</span><span·class="p"·data-group-id="0746839717-4">[</span><span·class="ss">add</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="0746839717-4">]</span><span·class="p"·data-group-id="0746839717-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="6821367766-5">(</span><span·class="p"·data-group-id="6821367766-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="682136[·...·truncated·by·diffoscope;·len:·57,·SHA:·17e8f3cc5c490a309e3256e36bc1aab8e0d73efb2ca6606cea30075d8138b56e·...·]-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="0746839717-5">(</span><span·class="p"·data-group-id="0746839717-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="074683[·...·truncated·by·diffoscope;·len:·57,·SHA:·044d0b158116771d61c39adf165be8c38d086aae370b84588173502f74166a1d·...·]-5">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="nf">add</span><span·class="p"·data-group-id="6821367766-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="6821367766-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="0746839717-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="0746839717-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="6641867563-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:·142,·SHA:·a9d1396d727e7e17d1c99e7f2b5c408f522b69c4c41b486fba11d20d0d196dc8·...·]3-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="9039595703-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:·142,·SHA:·20716668c2d7dfb3fb8c56f386cf948aabbdbf37db6c34f7525f4715ba82da42·...·]3-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="6641867563-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="6641867563-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="9039595703-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="9039595703-2">}</span><span·class="p">.</span><span·class="w">
163 </span><span·class="nf">add</span><span·class="p"·data-group-id="6641867563-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="6641867563-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="9039595703-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="9039595703-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="7422620253-1">(</span><span·class="p"·data-group-id="7422620253-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="7422620253-2">}</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·512fc10ba5798014f442a8bc96cf1831c12fb7f7ce1d281240030459a3902581·...·]-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="1106811962-1">(</span><span·class="p"·data-group-id="1106811962-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="1106811962-2">}</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·e0845471e75780208e28b4feae2470f876f52dc2186e67adf88fb34ff80e755a·...·]-1">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="nf">add</span><span·class="p"·data-group-id="7422620253-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="7422620253-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="1106811962-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="1106811962-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="1544451859-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="1544451859-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="0098724222-1">(</span><span·class="ss">arith</span><span·class="p"·data-group-id="0098724222-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="2288317131-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="2288317131-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="7069244604-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="7069244604-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="2288317131-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:·54cab4d007960091224e9da6ff9a3307c94aff474dab331aec7c378dc484d550·...·]-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="7069244604-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:·d52725be6b664a8ec4763e5b39dfe34c0c3547feb0888de1bcea4866c16754b2·...·]-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="2288317131-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="2288317131-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="7069244604-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="7069244604-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.1/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.1/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="5964230067-1">(</span><span·class="p"·data-group-id="5964230067-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="5964230067-2">{</span><span·class="ss">arith</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·4298d19d9458fda2a2e1dfe4eeff37f30f51b86a35335bb25c62b73108cc60d1·...·]-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="3506878043-1">(</span><span·class="p"·data-group-id="3506878043-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="3506878043-2">{</span><span·class="ss">arith</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·df9f0d5265050475eb4d2141ddf5eeaa9b9ff183c95d460e2264417a46425a51·...·]-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="5964230067-4">(</span><span·class="nf">number</span><span·class="p"·data-group-id="5964230067-5">(</span><span·class="p"·data-group-id="5964230067-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:·1b65d266b2daa8287d133e34fe1b45976b2454185dcc4a3e998022a01831aa33·...·]-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="3506878043-4">(</span><span·class="nf">number</span><span·class="p"·data-group-id="3506878043-5">(</span><span·class="p"·data-group-id="3506878043-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:·6bf00819e31c49307ca0201981249f8e449b0c5de320c40d3dd9e64f563f0619·...·]-7">)</span><span·class="p">.</span><span·class="w">
236 </span><span·class="nf">add</span><span·class="p"·data-group-id="5964230067-8">(</span><span·class="p"·data-group-id="5964230067-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="5964230067-9">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·662,·SHA:·e13b3cb19dd427f1a2b63dc00915dee5a72baadbef850c72a990d6a7183f5ca6·...·]-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="3506878043-8">(</span><span·class="p"·data-group-id="3506878043-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="3506878043-9">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·662,·SHA:·ec783cc5dc39c3be2e0671dde1257912ef3dc99ecf5640fd4bc9bb34c4b7c912·...·]-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; 37328/66345 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="2695886361-1">(</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="2695886361-2">(</span><span·class="p"·data-group-id="2695886361-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="7678862350-1">(</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="7678862350-2">(</span><span·class="p"·data-group-id="7678862350-2">)</span><span·class="p">,</span><span·class="w">
130 »       </span><span·class="p"·data-group-id="2695886361-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="7678862350-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="2695886361-3">}</span><span·class="p"·data-group-id="2695886361-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="7678862350-3">}</span><span·class="p"·data-group-id="7678862350-1">)</span><span·class="p">.</span><span·class="w">
  
134 </span><span·class="nf">client_port</span><span·class="p"·data-group-id="2695886361-4">(</span><span·class="p"·data-group-id="2695886361-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="7678862350-4">(</span><span·class="p"·data-group-id="7678862350-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="2695886361-5">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="2695886361-6">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="2695886361-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="2695886361-7">(</span><span·class="o">?</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="2695886361-8">(</span><span·class="p"·data-group-id="2695886361-8">)</span><span·class="p"·data-group-id="2695886361-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="2695886361-9">(</span><span·class="p"·data-group-id="2695886361-9">)</span><span·class="p"·data-group-id="2695886361-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="7678862350-5">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="7678862350-6">(</span><span·class="ss">sc[·...·truncated·by·diffoscope;·len:·585,·SHA:·ea6f89abdcf5dbae17859dfd89f05ea5ecf724af0a0bba49e810a971ebabeafb·...·]
 136 »       ····</span><span·class="o">?</span><span·class="n">PORT_NAMES</span><span·class="p"·data-group-id="7678862350-9">(</span><span·class="p"·data-group-id="7678862350-9">)</span><span·class="p"·data-group-id="7678862350-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.3/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.3/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="0631439306-1">(</span><span·class="ss">one</span><span·class="p"·data-group-id="0631439306-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="0827429270-1">(</span><span·class="ss">one</span><span·class="p"·data-group-id="0827429270-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="0631439306-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="0631439306-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="0827429270-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="0827429270-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="0631439306-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="0631439306-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="0827429270-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="0827429270-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="0631439306-4">(</span><span·class="n">Int</span><span·class="p"·data-group-id="0631439306-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="0631439306-5">(<[·...·truncated·by·diffoscope;·len:·73,·SHA:·ff8dc74aa524c5ffd2c9e7e3128df45781e3210d30e50423e89101d163aae588·...·]-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="0827429270-4">(</span><span·class="n">Int</span><span·class="p"·data-group-id="0827429270-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="0827429270-5">(<[·...·truncated·by·diffoscope;·len:·73,·SHA:·9293198bf732fdcaf9409d11e96b5146753508f0b60f651f3fdef8ef443317ad·...·]-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="0631439306-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="0631439306-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="0827429270-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="0827429270-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="0631439306-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="0631439306-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="0827429270-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="0827429270-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="0631439306-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="0631439306-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="0827429270-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="0827429270-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.3/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.3/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="8392180602-1">(</span><span·class="ss">one</span><span·class="p"·data-group-id="8392180602-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">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="2005330850-1">(</span><span·class="ss">one</span><span·class="p"·data-group-id="2005330850-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="8392180602-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="8392180602-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">146 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="2005330850-2">(</span><span·class="ss">two</span><span·class="p"·data-group-id="2005330850-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="8392180602-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="8392180602-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">147 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="2005330850-3">(</span><span·class="ss">three</span><span·class="p"·data-group-id="2005330850-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="8392180602-4">(</span><span·class="ss">four</span><span·class="p"·data-group-id="8392180602-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">148 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="2005330850-4">(</span><span·class="ss">four</span><span·class="p"·data-group-id="2005330850-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="8392180602-5">(</span><span·class="ss">five</span><span·class="p"·data-group-id="8392180602-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">149 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="2005330850-5">(</span><span·class="ss">five</span><span·class="p"·data-group-id="2005330850-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="8392180602-6">(</span><span·class="ss">six</span><span·class="p"·data-group-id="8392180602-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">150 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="2005330850-6">(</span><span·class="ss">six</span><span·class="p"·data-group-id="2005330850-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="8392180602-7">(</span><span·class="n">Int</span><span·class="p"·data-group-id="8392180602-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="8392180602-8">([·...·truncated·by·diffoscope;·len:·702,·SHA:·fa233f82c0327a28e1af32d7506becb1751bd82621b315256ed8907ecef12d9f·...·]8-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">151 </span><span·class="nf">atom_map2</span><span·class="p"·data-group-id="2005330850-7">(</span><span·class="n">Int</span><span·class="p"·data-group-id="2005330850-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="2005330850-8">([·...·truncated·by·diffoscope;·len:·702,·SHA:·8e956c5a9e0380ac334c992168488456aab2e253926255a92b5e065095a1a947·...·]8-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="8124269718-3">(</span><span·class="ss">one</span><span·class="p"·data-group-id="8124269718-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">152 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="6214233408-3">(</span><span·class="ss">one</span><span·class="p"·data-group-id="6214233408-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="8124269718-4">(</span><span·class="ss">two</span><span·class="p"·data-group-id="8124269718-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">153 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="6214233408-4">(</span><span·class="ss">two</span><span·class="p"·data-group-id="6214233408-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="8124269718-5">(</span><span·class="ss">three</span><span·class="p"·data-group-id="8124269718-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">154 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="6214233408-5">(</span><span·class="ss">three</span><span·class="p"·data-group-id="6214233408-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="8124269718-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="8124269718-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">155 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="6214233408-6">(</span><span·class="ss">four</span><span·class="p"·data-group-id="6214233408-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="8124269718-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="8124269718-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">156 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="6214233408-7">(</span><span·class="ss">five</span><span·class="p"·data-group-id="6214233408-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="8124269718-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="8124269718-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·slightl[·...·truncated·by·diffoscope;·len:·540,·SHA:·7a32837f0fd7a5aa0ed4aebd612c0cf6079e5ad6fd5a5d5c4892beb551972910·...·]8-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 </span><span·class="nf">atom_map3</span><span·class="p"·data-group-id="6214233408-8">(</span><span·class="ss">six</span><span·class="p"·data-group-id="6214233408-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·slightl[·...·truncated·by·diffoscope;·len:·540,·SHA:·44aa2591d29df852cd0fe4d44295cbac0137c253b119508c1b22be21348b150f·...·]8-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="0096524908-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="0096524908-4">[</span><span·clas[·...·truncated·by·diffoscope;·len:·83,·SHA:·dffd0dc97f3d968e65ce264893f19977525495af045a6535609d322b3e9bda23·...·]8-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="3924252128-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="3924252128-4">[</span><span·clas[·...·truncated·by·diffoscope;·len:·83,·SHA:·bd8936d8a0caed0d03fbef193fd679688e813db071ca2c648f4a5aaf26238ae1·...·]8-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="0096524908-5">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0096524908-6">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="009[·...·truncated·by·diffoscope;·len:·286,·SHA:·a94ae7e7276eac96aa75fddace39897ce5d0e8ba0afa824f182fa0e366fcb56a·...·]8-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="3924252128-5">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3924252128-6">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="392[·...·truncated·by·diffoscope;·len:·286,·SHA:·996d224cc141f9e0e00f270ea3d5b43a505cbb55ce3d600c9270e35325dd5964·...·]8-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="0096524908-8">[</span><span·class="n">Map</span><span·class="p"·data-group-id="0096524908-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="0096524908-9">)</span><span·[·...·truncated·by·diffoscope;·len:·372,·SHA:·152f37505201f3ee16d03aedacbf172b27944b13b9267eff7065e8ed4d55bd5d·...·]8-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="3924252128-8">[</span><span·class="n">Map</span><span·class="p"·data-group-id="3924252128-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="3924252128-9">)</span><span·[·...·truncated·by·diffoscope;·len:·372,·SHA:·5c3ec0f9193cd58588fe829580a9e1e9c4a894c75601571b5263c02646575a94·...·]8-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="1247003973-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="1247003973-2">[</span><span·class="p"·data-group-id="1247003973-2">]</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·a82a45e68f8eed480c40563296c40b399622a4957392f6efea1a1ba828864a45·...·]-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="9003524095-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="9003524095-2">[</span><span·class="p"·data-group-id="9003524095-2">]</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·84,·SHA:·2e7b53751e6a06e03e02f33af5978e543790fbb2062e07453ea855f680d8ece4·...·]-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="1247003973-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="1247003973-4">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class[·...·truncated·by·diffoscope;·len:·310,·SHA:·ab1c42a53e41ad0359d855a9249165fa346f92f45d6875d74f4a71ec280f4aa1·...·]-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="9003524095-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="9003524095-4">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class[·...·truncated·by·diffoscope;·len:·310,·SHA:·a0ff1a1714b09570b902ca6346959c89e162188c93b2670d30bd8d5bcaa2fd31·...·]-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="1247003973-6">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1247003973-7">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="124[·...·truncated·by·diffoscope;·len:·287,·SHA:·f74e82e4fc31b19e6bd2f3923028c5f536a7cc566270e4637aab9c4012ffc514·...·]-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="9003524095-6">(</span><span·class="n">Map</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9003524095-7">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="900[·...·truncated·by·diffoscope;·len:·287,·SHA:·819428b5f0f5408ea10255369ac998f75b1c1761b314e12bde78f5ebe7bba8b7·...·]-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="p"·data-group-id="1247003973-9">[</span><span·class="n">Map</span><span·class="p"·data-group-id="1247003973-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="1247003973-10">)</span><spa[·...·truncated·by·diffoscope;·len:·898,·SHA:·1dcade43387a9faaac5ff78413a4f10de293f5a40df647197e7d1d32ba78c228·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 ····</span><span·class="p"·data-group-id="9003524095-9">[</span><span·class="n">Map</span><span·class="p"·data-group-id="9003524095-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="9003524095-10">)</span><spa[·...·truncated·by·diffoscope;·len:·898,·SHA:·8d81444a509b14f752065db55104e267186672ba124bb1cb732872965b7d5249·...·]-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="5927329483-2">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="5927329483-2">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">174 »       </span><span·class="p"·data-group-id="3933525522-2">[</span><span·class="n">X</span><span·class="p">|</span><span·class="n">Xs</span><span·class="p"·data-group-id="3933525522-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="5927329483-3">[</span><span·class="n">Y</span><span·class="p">|</span><span·class="n">Ys</span><span·class="p"·data-group-id="5927329483-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 »       »       </span><span·class="p"·data-group-id="3933525522-3">[</span><span·class="n">Y</span><span·class="p">|</span><span·class="n">Ys</span><span·class="p"·data-group-id="3933525522-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 »       »       ····</span><span·class="p"·data-group-id="5927329483-4">[</span><span·class="n">Map</span><span·class="p"·data-group-id="5927329483-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="5927329483-5">)</span><span·[·...·truncated·by·diffoscope;·len:·379,·SHA:·754cbb6d4b6dca69be19a887d8ff1d5600cf159663f1b49e4fee1c114c2248f3·...·]-4">]</span><span·class="p">;</span><span·class="w">177 »       »       ····</span><span·class="p"·data-group-id="3933525522-4">[</span><span·class="n">Map</span><span·class="p"·data-group-id="3933525522-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="3933525522-5">)</span><span·[·...·truncated·by·diffoscope;·len:·379,·SHA:·e01868a00d8655174f908d50708136d4092cbe9f6d988d4562a8ecf27635e4a4·...·]-4">]</span><span·class="p">;</span><span·class="w">
178 »       »       </span><span·class="p"·data-group-id="5927329483-7">[</span><span·class="p"·data-group-id="5927329483-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">178 »       »       </span><span·class="p"·data-group-id="3933525522-7">[</span><span·class="p"·data-group-id="3933525522-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="5927329483-8">[</span><span·class="p"·data-group-id="5927329483-8">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">181 »       </span><span·class="p"·data-group-id="3933525522-8">[</span><span·class="p"·data-group-id="3933525522-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="2788311380-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="2788311380-1">]</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·1122,·SHA:·ae2aed99297a6030bfc1950ef261199dfb19043cd41025f130e7de5ad9ca7bc3·...·]-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="8023171581-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="8023171581-1">]</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·1122,·SHA:·b63c0f9b8b997feae2ee7d7100bca5842c946a93035684f70f78cb0ec927144d·...·]-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="2788311380-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:·f37871d217a0933c5b7cecca976514490f06092b0191721507b79de18e2390a7·...·]-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="8023171581-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:·84a6be0c8359758224600648eceec84f21c06e2babc6f587dd718486ab2c5a91·...·]-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="2788311380-9">(</span><span·class="p"·data-group-id="2788311380-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="8023171581-9">(</span><span·class="p"·data-group-id="8023171581-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="2788311380-10">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="2788311380-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:·9e057581a031f6afd0ce23975d3d64f9d8a63a568532f70c35056bc2642aef2d·...·]-11">)</span><span·class="p">.</span><span·class="w">130 2&gt;·</span><span·class="p"·data-group-id="8023171581-10">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="8023171581-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:·83a5447ae0f94530a87c18796fc3825f9d76cb496681cc3410cbb41020775949·...·]-11">)</span><span·class="p">.</span><span·class="w">
131 </span><span·class="p"·data-group-id="2788311380-13">{</span><span·class="nb">memory</span><span·class="p">,</span><span·class="mi">2616</span><span·class="p"·data-group-id="2788311380-13">}</span><span·class="gp·unselectable">131 </span><span·class="p"·data-group-id="8023171581-13">{</span><span·class="nb">memory</span><span·class="p">,</span><span·class="mi">2616</span><span·class="p"·data-group-id="8023171581-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="2788311380-14">(</span><span·class="ss">wordsize</span><span·class="p"·data-group-id="2788311380-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="8023171581-14">(</span><span·class="ss">wordsize</span><span·class="p"·data-group-id="8023171581-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="6369362425-1">(</span><span·class="p"·data-group-id="6369362425-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="7486053424-1">(</span><span·class="p"·data-group-id="7486053424-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="6369362425-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="6369362425-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">137 ·····</span><span·class="p"·data-group-id="7486053424-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="7486053424-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="6369362425-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="6369362425-3">)</span><span·class="p">,</span><span·class="w">138 ·········</span><span·class="nf">handle_sys_msg</span><span·class="p"·data-group-id="7486053424-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7486053424-3">)</span><span·class="p">,</span><span·class="w">
139 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="6369362425-4">(</span><span·class="p"·data-group-id="6369362425-4">)</span><span·class="p">;</span><span·class="w">139 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="7486053424-4">(</span><span·class="p"·data-group-id="7486053424-4">)</span><span·class="p">;</span><span·class="w">
140 ·····</span><span·class="p"·data-group-id="6369362425-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="6369362425-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">140 ·····</span><span·class="p"·data-group-id="7486053424-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="7486053424-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="6369362425-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="6369362425-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="7486053424-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7486053424-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="6369362425-7">(</span><span·class="p"·data-group-id="6369362425-7">)</span><span·class="w">143 ··········</span><span·class="nf">loop</span><span·class="p"·data-group-id="7486053424-7">(</span><span·class="p"·data-group-id="7486053424-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="6369362425-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="6369362425-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·e5d8f8013295e58b778e0fe14648a31d79db0cdf22b9649bb04be9e7f6fb0b41·...·]-8">)</span><span·class="p">.</span></code></pre><p>The·call·to·<a·href="../../lib/stdlib-6.2.1/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="7486053424-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="7486053424-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·b6cf2455fb42c5ba0a2e8afbd2f5a3ef8ec81549c2b50ee2e0884bf215eb0485·...·]-8">)</span><span·class="p">.</span></code></pre><p>The·call·to·<a·href="../../lib/stdlib-6.2.1/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="5599335362-1">(</span><span·class="p"·data-group-id="5599335362-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="5109814511-1">(</span><span·class="p"·data-group-id="5109814511-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="5599335362-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="5599335362-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">149 ······</span><span·class="p"·data-group-id="5109814511-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="5109814511-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="5599335362-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="5599335362-3">)</span><span·class="p">,</span><span·class="w">150 ·········</span><span·class="nf">handle_sys_msg</span><span·class="p"·data-group-id="5109814511-3">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="5109814511-3">)</span><span·class="p">,</span><span·class="w">
151 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="5599335362-4">(</span><span·class="p"·data-group-id="5599335362-4">)</span><span·class="p">;</span><span·class="w">151 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="5109814511-4">(</span><span·class="p"·data-group-id="5109814511-4">)</span><span·class="p">;</span><span·class="w">
152 ······</span><span·class="p"·data-group-id="5599335362-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="5599335362-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">152 ······</span><span·class="p"·data-group-id="5109814511-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="5109814511-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="5599335362-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="5599335362-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="5109814511-6">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="5109814511-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="5599335362-7">(</span><span·class="p"·data-group-id="5599335362-7">)</span><span·class="w">155 ·········</span><span·class="nf">loop</span><span·class="p"·data-group-id="5109814511-7">(</span><span·class="p"·data-group-id="5109814511-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="7889450649-1">(</span><span·class="n">Message</span><span·class="p"·data-group-id="7889450649-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="9315135977-1">(</span><span·class="n">Message</span><span·class="p"·data-group-id="9315135977-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="5793065408-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="5793065408-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·157,·SHA:·a75f11a03718e0bbf2f20ddc9401a7164faab7193ea91fc34dbf24a70e8116cb·...·]-2">)</span><span·class="w">200 ····</span><span·class="p"·data-group-id="4604726514-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="4604726514-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·157,·SHA:·ec0edc036604636c5d655b2ba2d3c65698ca1904bfbff2c03f2f3002bac3f3a4·...·]-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="8931110850-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="8931110850-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="0328136303-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="0328136303-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="8931110850-2">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8931110850-3">(</span><span·class="p"·data-group-id="8931110850-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:·bac8b3e8ba99188bacffd30e14266e532f6672022223874a6bc55b6000d1d6f3·...·]-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="0328136303-2">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0328136303-3">(</span><span·class="p"·data-group-id="0328136303-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:·aa32242951e1934cad6ccdda62a169f9777961a8059645a1a3df7d303a3c626b·...·]-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="8931110850-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="8931110850-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">207 ····</span><span·class="p"·data-group-id="0328136303-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="0328136303-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="8931110850-5">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8931110850-6">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="8931110850-6">]</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·a0dd5937d2a059e06883286a009917680db54a192767830faa1f4fc988fb41a7·...·]-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="0328136303-5">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0328136303-6">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="0328136303-6">]</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·d8c38d797a1bef12c00c2402739214ad97c25c8bc83cd1d44dd69b62e27b3480·...·]-5">)</span><span·class="p">,</span><span·class="w">
209 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="8931110850-7">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="8931110850-7">)</span><span·class="p">;</span><span·class="w">209 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="0328136303-7">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="0328136303-7">)</span><span·class="p">;</span><span·class="w">
210 ····</span><span·class="p"·data-group-id="8931110850-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:·988b9b37a7f3d24791fdaac4f1d8d4057b27ba594d22893f501cdde3ee9b6384·...·]-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 ····</span><span·class="p"·data-group-id="0328136303-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:·86cde906290630c3fb6f7fbc2c23185221322403fe930a9ffd4e01c59a2b09a0·...·]-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="8931110850-9">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="8931110850-9">)</span><span·class="w">211 ········</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="0328136303-9">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="0328136303-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.3/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.3/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.3/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.3/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="8309005534-1">(</span><span·class="p"·data-group-id="8309005534-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="2876576457-1">(</span><span·class="p"·data-group-id="2876576457-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="8309005534-2">(</span><span·class="n">Message</span><span·class="p"·data-group-id="8309005534-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="2876576457-2">(</span><span·class="n">Message</span><span·class="p"·data-group-id="2876576457-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="8309005534-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="8309005534-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="2876576457-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="2876576457-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="8309005534-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="8309005534-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·157,·SHA:·b6f6663dee959808edd7b604cc62d8bd93dffa9b9643e8d5ed5ac396171e006b·...·]-5">)</span><span·class="w">245 ····</span><span·class="p"·data-group-id="2876576457-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="2876576457-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·157,·SHA:·f5305a279f7aa93c7140ebf150bd59afa7faced779b8242ca01b47decc73234b·...·]-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="8309005534-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="8309005534-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="2876576457-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="2876576457-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="8309005534-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="8309005534-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="2876576457-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="2876576457-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="8309005534-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="8309005534-9">(</span><span·class="p"·data-group-id="8309005534-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:·d8fa30b85021c5ae604378dbb11dc7d3f88e6e543707dc099321d3b001ac5270·...·]-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="2876576457-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2876576457-9">(</span><span·class="p"·data-group-id="2876576457-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:·432988c367aba3532e661f510c6315bf4ac4035fea43ea4971e0de7becda663a·...·]-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="8309005534-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="8309005534-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">254 ········</span><span·class="p"·data-group-id="2876576457-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="2876576457-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="8309005534-11">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8309005534-12">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="8309005534-12">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·a1ae1eaf5bce99b6b0035fdd5211b4f1bf37e60960d4938eb9e37efe02cd9b4b·...·]-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="2876576457-11">(</span><span·class="n">MRef</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2876576457-12">[</span><span·class="ss">flush</span><span·class="p"·data-group-id="2876576457-12">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·c568ada662e390a6158c8dc9fe799e0a93151436122139bacc471cbb62378b87·...·]-11">)</span><span·class="p">,</span><span·class="w">
256 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="8309005534-13">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="8309005534-13">)</span><span·class="p">;</span><span·class="w">256 ········</span><span·class="nf">handle_reply</span><span·class="p"·data-group-id="2876576457-13">(</span><span·class="n">Reply</span><span·class="p"·data-group-id="2876576457-13">)</span><span·class="p">;</span><span·class="w">
257 ····</span><span·class="p"·data-group-id="8309005534-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:·803e1801bc83315b0c1ddc3b5a8aa06b23e1ea834fbb1d7e787c117559d4ad6b·...·]-14">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">257 ····</span><span·class="p"·data-group-id="2876576457-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:·40811557eb195119d3513436b7d5992339d6bcd15eb339e3c72ccf49ed16a1a1·...·]-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="8309005534-15">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="8309005534-15">)</span><span·class="w">258 ····</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="2876576457-15">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="2876576457-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="8309005534-16">(</span><span·class="p"·data-group-id="8309005534-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="2876576457-16">(</span><span·class="p"·data-group-id="2876576457-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="8309005534-17">(</span><span·class="p"·data-group-id="8309005534-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="2876576457-17">(</span><span·class="p"·data-group-id="2876576457-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="8309005534-18">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="8309005534-18">)</span><span·class="p">.</span><span·class="w">265 ····</span><span·class="nf">cross_function_receive</span><span·class="p"·data-group-id="2876576457-18">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="2876576457-18">)</span><span·class="p">.</span><span·class="w">
  
266 </span><span·class="nf">cross_function_receive</span><span·class="p"·data-group-id="8309005534-19">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="8309005534-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="2876576457-19">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="2876576457-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="8309005534-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="8309005534-20">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·160,·SHA:·2a45cc00f81990fc1dc95200d4878e02431bc18acf7f72e6d18feae322bf9c6d·...·]-21">)</span><span·class="w">269 ········</span><span·class="p"·data-group-id="2876576457-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="2876576457-20">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·160,·SHA:·0fca2721516d4ace03ab05a2650c53388419abe9e791b29d8f36f0a8c507d6b5·...·]-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/67122 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="6041150881-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="6041150881-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="6846002328-1">(</span><span·class="ss">complex1</span><span·class="p"·data-group-id="6846002328-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="6041150881-2">(</span><span·class="p"·data-group-id="6041150881-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><spa[·...·truncated·by·diffoscope;·len:·240,·SHA:·04f94e7dd23071035e2d682cb5e179e4fbbf69f09c2a9ee1b318e5ba7782e54c·...·]-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="6846002328-2">(</span><span·class="p"·data-group-id="6846002328-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><spa[·...·truncated·by·diffoscope;·len:·240,·SHA:·447f80a6c5e6dcc16a06f954a9ebb4900c390992f386279cebf18eeff73b5318·...·]-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="6041150881-4">(</span><span·class="p"·data-group-id="6041150881-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·c[·...·truncated·by·diffoscope;·len:·112,·SHA:·25bd6526663274fbbd2591af4e4b44bbf5c321a32d0b04ee477a95283482a6c3·...·]-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="6846002328-4">(</span><span·class="p"·data-group-id="6846002328-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·c[·...·truncated·by·diffoscope;·len:·112,·SHA:·0e498fa898fa7ad72b71004dc05239e15f91ab67cee12f9bb45321ae90a5a211·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
130 </span><span·class="nf">start</span><span·class="p"·data-group-id="6041150881-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="6041150881-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="6846002328-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="6846002328-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="6041150881-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="6041150881-8">[</span><span[·...·truncated·by·diffoscope;·len:·118,·SHA:·f06eba7f57db9c0dba1bc102db1833d2be4ac6e0595c7fd3c661e6f1af629439·...·]-7">)</span><span·class="p">.</span><span·class="w">131 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6846002328-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="6846002328-8">[</span><span[·...·truncated·by·diffoscope;·len:·118,·SHA:·cef2f32329496465ff8491c4637c56890cef9c3cd36385d638d5a06d4f9adf0b·...·]-7">)</span><span·class="p">.</span><span·class="w">
132 </span><span·class="nf">stop</span><span·class="p"·data-group-id="6041150881-9">(</span><span·class="p"·data-group-id="6041150881-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="6846002328-9">(</span><span·class="p"·data-group-id="6846002328-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="6041150881-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="6041150881-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="6846002328-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="6846002328-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="6041150881-11">(</span><span·class="p"·data-group-id="6041150881-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="6041150881-12">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·4fdd8e111b715f2a819b05e621451ff0fd6aebc054600bea307137745c9730cc·...·]-11">)</span><span·class="p">.</span><span·class="w">135 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="6846002328-11">(</span><span·class="p"·data-group-id="6846002328-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="6846002328-12">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·efd916d87bef2da83adde9ba3163c2ce73d4444060c6aa47ab47aeee376136aa·...·]-11">)</span><span·class="p">.</span><span·class="w">
136 </span><span·class="nf">bar</span><span·class="p"·data-group-id="6041150881-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="6041150881-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="6846002328-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="6846002328-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="6041150881-14">(</span><span·class="p"·data-group-id="6041150881-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="6041150881-15">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·4fdd8e111b715f2a819b05e621451ff0fd6aebc054600bea307137745c9730cc·...·]-14">)</span><span·class="p">.</span><span·class="w">137 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="6846002328-14">(</span><span·class="p"·data-group-id="6846002328-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="6846002328-15">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·efd916d87bef2da83adde9ba3163c2ce73d4444060c6aa47ab47aeee376136aa·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
138 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="6041150881-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="6041150881-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="6846002328-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="6846002328-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="6041150881-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="6041150881-18">(</span><span·class="p"·data-group-id="6041150881-18">)</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·93,·SHA:·b43118aa413735e1fe935826414b2204a2ed54e6ae8595adc41dadb64a3fdfa7·...·]-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="6846002328-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="6846002328-18">(</span><span·class="p"·data-group-id="6846002328-18">)</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·93,·SHA:·fc446d178027fec4793231b0408274b1f5e1ec4ed58f88bc968401b341798235·...·]-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="6041150881-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="6041150881-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">141 »       </span><span·class="p"·data-group-id="6846002328-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="6846002328-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="6041150881-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="6041150881-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="6846002328-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="6846002328-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="6041150881-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="6041150881-22">(</span><span·class="p"·data-group-id="6041150881-22">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·d2eae9df445367e0f1bb9e7d3f9a42f6e71e6889f118a4d791e904130353eaef·...·]-21">)</span><span·class="p">,</span><span·class="w">145 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="6846002328-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="6846002328-22">(</span><span·class="p"·data-group-id="6846002328-22">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·c220759fba1e77f285a79a03a6522fa6b350caa07b9d7abc24011c8b1ef2bec5·...·]-21">)</span><span·class="p">,</span><span·class="w">
146 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="6041150881-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="6041150881-23">)</span><span·class="p">,</span><span·class="w">146 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="6846002328-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="6846002328-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="6041150881-24">(</span><span·class="p"·data-group-id="6041150881-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="6041150881-25">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·388,·SHA:·cb72d358d148f7513aa807e59964b091c45fbafeda5d7def15532095fc544bf0·...·]-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="6846002328-24">(</span><span·class="p"·data-group-id="6846002328-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="6846002328-25">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·388,·SHA:·48297af2de7edaa09b05b52f54ba1237e217cce5b7292f5b9a473859aa4e75c7·...·]-24">)</span><span·class="p">,</span><span·class="w">
148 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="6041150881-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6041150881-28">)</span><span·class="p">.</span><span·class="w">148 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="6846002328-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6846002328-28">)</span><span·class="p">.</span><span·class="w">
  
149 </span><span·class="nf">loop</span><span·class="p"·data-group-id="6041150881-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6041150881-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="6846002328-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6846002328-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="6041150881-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="6041150881-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">151 »       </span><span·class="p"·data-group-id="6846002328-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="6846002328-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="6041150881-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6041150881-32">(</span><span·class="p"·data-group-id="6041150881-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6041150881-33">{</s[·...·truncated·by·diffoscope;·len:·342,·SHA:·cc2366584c664aa9a4e55c718740b15f5eb5a2fee18282ddd165b5c263548103·...·]-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="6846002328-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6846002328-32">(</span><span·class="p"·data-group-id="6846002328-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6846002328-33">{</s[·...·truncated·by·diffoscope;·len:·342,·SHA:·01aadcbd8329bd130ffb7b4e189b6c4fb47cf9894de1a71ffdb899bc97a9489b·...·]-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="6041150881-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6041150881-36">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><s[·...·truncated·by·diffoscope;·len:·93,·SHA:·385144762e153fc285d31c1cef0ed70291bbd53ea3812052be34824ac7ba1b8b·...·]-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">154 »       »       </span><span·class="p"·data-group-id="6846002328-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6846002328-36">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Data</span><s[·...·truncated·by·diffoscope;·len:·93,·SHA:·c73d2ce83a9b801a36f98965da851adc04faddf8ed61c3a12a05e0f2700b2598·...·]-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="6041150881-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="6041150881-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="6041150881-38[·...·truncated·by·diffoscope;·len:·51,·SHA:·5dd2448aa5c52ae6bec002283ac06c166c7669cb2dc9c6e5220448fe027f697b·...·]-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="6846002328-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="6846002328-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="6846002328-38[·...·truncated·by·diffoscope;·len:·51,·SHA:·736f4a2748e9b685d4c9dce1eed1d5fb3908c6b060218d13dc29b0e7ef2c5302·...·]-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="6041150881-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6041150881-39">)</span><span·class="p">;</span><span·class="w">157 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="6846002328-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6846002328-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="6041150881-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6041150881-41">(</span><span·class="p"·data-group-id="6041150881-41">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·56c71e0aa0253ea3e135f861b37fd7326ce861f8815dd1d20b78bed92423fa94·...·]-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="6846002328-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6846002328-41">(</span><span·class="p"·data-group-id="6846002328-41">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">close</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·3119100ba0411fea216575994ccdf50a904d4f9c972808de9f16d9203129c4d0·...·]-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="6041150881-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="6041150881-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">161 »       »       </span><span·class="p"·data-group-id="6846002328-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="6846002328-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="6041150881-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="6041150881-43">)</span><span·class="w">162 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="6846002328-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="6846002328-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="6041150881-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="6041150881-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">164 »       </span><span·class="p"·data-group-id="6846002328-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="6846002328-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="6041150881-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="6041150881-45">)</span><span·class="w">165 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="6846002328-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="6846002328-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="6041150881-46">(</span><span·class="p"·data-group-id="6041150881-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="6041150881-47">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·295,·SHA:·ca60c61895036dbd93fcf1089ee2bd4f7ec9ecd55ae099f63eca86ef540bdffe·...·]-48">]</span><span·class="p">;</span><span·class="w">167 </span><span·class="nf">encode</span><span·class="p"·data-group-id="6846002328-46">(</span><span·class="p"·data-group-id="6846002328-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="6846002328-47">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·295,·SHA:·67c0946c10fb1a45866b39a1591d2de19ae1bfc95d985755f73ab4efc191d571·...·]-48">]</span><span·class="p">;</span><span·class="w">
168 </span><span·class="nf">encode</span><span·class="p"·data-group-id="6041150881-49">(</span><span·class="p"·data-group-id="6041150881-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="6041150881-50">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·295,·SHA:·ef5a1ea2cd235a61b4f0f3b4b5401df1e97eb28776732064201e1d27811d37c3·...·]-51">]</span><span·class="p">.</span><span·class="w">168 </span><span·class="nf">encode</span><span·class="p"·data-group-id="6846002328-49">(</span><span·class="p"·data-group-id="6846002328-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="6846002328-50">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·295,·SHA:·84bb1f25391fc5125e001c5160f113763d288f00c0d98f6b0cfae783470608c4·...·]-51">]</span><span·class="p">.</span><span·class="w">
  
169 </span><span·class="nf">decode</span><span·class="p"·data-group-id="6041150881-52">(</span><span·class="p"·data-group-id="6041150881-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="6041150881-53">]</span><span·class="p"·data-group-id="6041150881-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="6846002328-52">(</span><span·class="p"·data-group-id="6846002328-53">[</span><span·class="n">Int</span><span·class="p"·data-group-id="6846002328-53">]</span><span·class="p"·data-group-id="6846002328-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.3/doc/html/erlang.html#term_to_binary/1"><code·class="inline">term_to_binary/1</code></a>·and172 <a·href="../../erts-15.2.3/doc/html/erlang.html#term_to_binary/1"><code·class="inline">term_to_binary/1</code></a>·and
173 <a·href="../../erts-15.2.3/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="6238898402-1">(</span><span·class="p"·data-group-id="6238898402-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="6238898402-2">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·2065,·SHA:·44155f335f2e64e3cc301b74f2e07aff5f2ca73d8724c86fca5c4561b90fb39f·...·]-1">}</span><span·class="p">,</span><span·class="w">173 <a·href="../../erts-15.2.3/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="2345822919-1">(</span><span·class="p"·data-group-id="2345822919-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="2345822919-2">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·2065,·SHA:·c26773696bdd8ee69d97666b4095c1730dc7a6f98f602317b05206ee1449f7ed·...·]-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="6460594068-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6460594068-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:·23e66ababb451dd4a8aa2b2b4a924eb987ef12b7975f9ddc0ae91296133e29e0·...·]-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 ··</span><span·class="p"·data-group-id="9229775625-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9229775625-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:·3b389a182b96e8d877ffceed3c7f4de511302f0f539f584c46d50932b7cc4452·...·]-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="6460594068-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="6460594068-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="6460594068-8">[·...·truncated·by·diffoscope;·len:·49,·SHA:·6e360449ffd15091d37d1835f36db1295e7835dfc27bc7f71651913f17642741·...·]-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="9229775625-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="9229775625-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="9229775625-8">[·...·truncated·by·diffoscope;·len:·49,·SHA:·473b51ea292018bd42a7537c7565c45d9d628844b713b6505de8c2a753dce2d5·...·]-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="3013205195-1">{</span><span·class="nf">self</span><span·class="p"·data-group-id="3013205195-2">(</span><span·class="p"·data-group-id="3013205195-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3013205195-3">{</span[·...·truncated·by·diffoscope;·len:·344,·SHA:·52b02a032abd829c78cf1eca3e10fa658b0d59c7fb0818b3751431935544e44c·...·]-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="4545864044-1">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4545864044-2">(</span><span·class="p"·data-group-id="4545864044-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4545864044-3">{</span[·...·truncated·by·diffoscope;·len:·344,·SHA:·ad4e663bb9e5bfd78d6ae0e2e8c7c5121b60371df28a530519f9e70bdf7d6e65·...·]-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="3013205195-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3013205195-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:·f56fa69e226ff06d60d2f634499b2913734f7c1c18bded3d30af777e09d5b6dd·...·]-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">179 ··</span><span·class="p"·data-group-id="4545864044-5">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4545864044-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:·80a45038ab1946df20e888a260445b59677055aae503a9ffac07c6b6c7003db8·...·]-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="3013205195-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="3013205195-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="301320[·...·truncated·by·diffoscope;·len:·57,·SHA:·83c7f7b3ce651bd5334a3546a9ac4d3ba57a8e0109e392c135b03afe8b598f65·...·]-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="4545864044-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="4545864044-8">(</span><span·class="n">Data</span><span·class="p"·data-group-id="454586[·...·truncated·by·diffoscope;·len:·57,·SHA:·b9621a47e38fbffc8ad5252a04be0883b3511b517204331ac3c19964aa704292·...·]-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="7005980904-1">(</span><span·class="ss">complex2</span><span·class="p"·data-group-id="7005980904-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="6595532551-1">(</span><span·class="ss">complex2</span><span·class="p"·data-group-id="6595532551-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="7005980904-2">(</span><span·class="p"·data-group-id="7005980904-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:·5d25644476cb58ab9cd785399d1bb2ea9cc5246b27fd039577fa05d342e09009·...·]-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="6595532551-2">(</span><span·class="p"·data-group-id="6595532551-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:·4bc687168fe721de7a5adaa05c1335a093a643f17625b4d3d2b4fa6960859dd4·...·]-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="7005980904-4">(</span><span·class="p"·data-group-id="7005980904-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:·e94d2f9d6c94146feac03311ea4bee797e85e9db38791a710c919dd0362e675c·...·]-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="6595532551-4">(</span><span·class="p"·data-group-id="6595532551-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:·7fbd89dc71be6d0495c532706fe529d0247981a6fed541992870bab18bc719a8·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
184 </span><span·class="nf">start</span><span·class="p"·data-group-id="7005980904-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="7005980904-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="6595532551-6">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="6595532551-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="7005980904-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="7005980904-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·6f8ff4a3a47fe4855ebfc550a694c10be6bd5e0a0086ef5f3a963c95a39331c7·...·]-7">)</span><span·class="p">.</span><span·class="w">185 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6595532551-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="6595532551-8">[</span><spa[·...·truncated·by·diffoscope;·len:·119,·SHA:·10ea348fa157aa48984284ec1b317abffb53dd2ca973d2ff2064f93cd1797865·...·]-7">)</span><span·class="p">.</span><span·class="w">
186 </span><span·class="nf">stop</span><span·class="p"·data-group-id="7005980904-9">(</span><span·class="p"·data-group-id="7005980904-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="6595532551-9">(</span><span·class="p"·data-group-id="6595532551-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="7005980904-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="7005980904-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="6595532551-10">(</span><span·class="n">X</span><span·class="p"·data-group-id="6595532551-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="7005980904-11">(</span><span·class="p"·data-group-id="7005980904-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="7005980904-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·84c31c044b45fefbe5ce5b770a5c6ff98daecfa95a2be50e3c08fac50246efdc·...·]-11">)</span><span·class="p">.</span><span·class="w">189 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="6595532551-11">(</span><span·class="p"·data-group-id="6595532551-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="6595532551-12">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·e177606d927296b00847b4c547ffddcc8f183a0f645ad27e3df53633a8d139a3·...·]-11">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="nf">bar</span><span·class="p"·data-group-id="7005980904-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="7005980904-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="6595532551-13">(</span><span·class="n">Y</span><span·class="p"·data-group-id="6595532551-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="7005980904-14">(</span><span·class="p"·data-group-id="7005980904-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="7005980904-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·84c31c044b45fefbe5ce5b770a5c6ff98daecfa95a2be50e3c08fac50246efdc·...·]-14">)</span><span·class="p">.</span><span·class="w">191 ····</span><span·class="nf">call_port</span><span·class="p"·data-group-id="6595532551-14">(</span><span·class="p"·data-group-id="6595532551-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="6595532551-15">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·e177606d927296b00847b4c547ffddcc8f183a0f645ad27e3df53633a8d139a3·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
192 </span><span·class="nf">call_port</span><span·class="p"·data-group-id="7005980904-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="7005980904-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="6595532551-16">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="6595532551-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="7005980904-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="7005980904-18">(</span><span·class="p"·data-group-id="7005980904-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·add7f982ad4061cf0d332119d5a6f433040d01163709caa5c6976c77b351a17b·...·]-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="6595532551-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="6595532551-18">(</span><span·class="p"·data-group-id="6595532551-18">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·94,·SHA:·2e0e1582087c9f1502bac2b27e652ed2a8479e150139baf1dbfea8069221dde9·...·]-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="7005980904-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="7005980904-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">195 »       </span><span·class="p"·data-group-id="6595532551-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="6595532551-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="7005980904-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="7005980904-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="6595532551-20">(</span><span·class="n">ExtPrg</span><span·class="p"·data-group-id="6595532551-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="7005980904-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="7005980904-22">(</span><span·class="p"·data-group-id="7005980904-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·f07a543541ebbef2a2527b3826f2c9c40e22a692823df3d20b3d2f2ea1abe9db·...·]-21">)</span><span·class="p">,</span><span·class="w">199 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="6595532551-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="6595532551-22">(</span><span·class="p"·data-group-id="6595532551-22">)</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·573ad8a02062a93a720314163dce327ed5df86282e6ab3679b2292ad364e6da5·...·]-21">)</span><span·class="p">,</span><span·class="w">
200 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="7005980904-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="7005980904-23">)</span><span·class="p">,</span><span·class="w">200 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="6595532551-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="6595532551-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="7005980904-24">(</span><span·class="p"·data-group-id="7005980904-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="7005980904-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·467,·SHA:·c84faac62bb2c68c34844cb9856f045499fa29e3bc65a3b6d09518c8be6e6886·...·]-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="6595532551-24">(</span><span·class="p"·data-group-id="6595532551-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="6595532551-25">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·467,·SHA:·c160cf010daccb503693dcddc8ad42bf6e6d1d7645c42a74e6f70640de6d8b57·...·]-24">)</span><span·class="p">,</span><span·class="w">
202 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="7005980904-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7005980904-28">)</span><span·class="p">.</span><span·class="w">202 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="6595532551-28">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6595532551-28">)</span><span·class="p">.</span><span·class="w">
  
203 </span><span·class="nf">loop</span><span·class="p"·data-group-id="7005980904-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7005980904-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="6595532551-29">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6595532551-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="7005980904-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="7005980904-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">205 »       </span><span·class="p"·data-group-id="6595532551-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="6595532551-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="7005980904-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7005980904-32">(</span><span·class="p"·data-group-id="7005980904-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7005980904-33">{</[·...·truncated·by·diffoscope;·len:·351,·SHA:·e4fa2f9d804d2498e0f3a6a85cc46a55795f885a062e1d0136e22c5a0dcee4a0·...·]-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="6595532551-31">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6595532551-32">(</span><span·class="p"·data-group-id="6595532551-32">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6595532551-33">{</[·...·truncated·by·diffoscope;·len:·351,·SHA:·e14a533d325a4faaecf23814c9b5c9f5bf50aceb358fae1c5f4ee751d243e4e8·...·]-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="7005980904-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7005980904-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:·e72f8601d7d1e29a57c35a1d4b42570a6f697bbc2372c42c38642558a1fcfd55·...·]-35">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 »       »       </span><span·class="p"·data-group-id="6595532551-35">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6595532551-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:·6447a89b648226c5db16949bbf3e3170750405e884d0aafea9eba4800ffba083·...·]-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="7005980904-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="7005980904-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="7005[·...·truncated·by·diffoscope;·len:·60,·SHA:·6149d94d9c64d1cb78480ce9b538941a1d34d9acbd9604a8c155a68e53bccafb·...·]-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="6595532551-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="6595532551-38">(</span><span·class="n">Data</span><span·class="p"·data-group-id="6595[·...·truncated·by·diffoscope;·len:·60,·SHA:·2a0c765c2c395d866281698e8cadd2de05c166c88aeca9b1e545d6ba63874a45·...·]-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="7005980904-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7005980904-39">)</span><span·class="p">;</span><span·class="w">211 »       ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="6595532551-39">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6595532551-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="7005980904-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7005980904-41">(</span><span·class="p"·data-group-id="7005980904-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:·2d0567a80cc8d4a0e30f905b4e605e7ae995b736c77724dc89a4b9328ceb7ef1·...·]-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="6595532551-40">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6595532551-41">(</span><span·class="p"·data-group-id="6595532551-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:·cc08dc75dd109076179e2c2db0ea442061daa480b15336e9cbe9e86e6ef3feba·...·]-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="7005980904-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="7005980904-42">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">215 »       »       </span><span·class="p"·data-group-id="6595532551-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="6595532551-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="7005980904-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="7005980904-43">)</span><span·class="w">216 »       »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="6595532551-43">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="6595532551-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="7005980904-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="7005980904-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">218 »       </span><span·class="p"·data-group-id="6595532551-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="6595532551-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="7005980904-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="7005980904-45">)</span><span·class="w">219 »       ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="6595532551-45">(</span><span·class="ss">port_terminated</span><span·class="p"·data-group-id="6595532551-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.3/doc/html/kernel_app.html#logger_sasl_compatible"><code·class="inline">logger_sasl_compatible</code></a>·to147 <a·href="../../lib/kernel-10.2.3/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="1998414392-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">10.0</span><span·class="p"·data-group-id="1998414392-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="1998414392-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1312,·SHA:·3ffb80a0c108374a3c2b34bf090876793c763d97896d2cde5380d45e7e31de72·...·]2-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="8970946612-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">10.0</span><span·class="p"·data-group-id="8970946612-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="8970946612-2">[</span><span·class="ss">source<[·...·truncated·by·diffoscope;·len:·1312,·SHA:·bb482f155c593094e6c268ecececfdbfc59aeffc0c4233d5aee2b7e506f14483·...·]2-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="1998414392-8">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="1998414392-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="8970946612-8">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="8970946612-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="1998414392-9">[</span><span·class="p"·data-group-id="1998414392-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:·42,·SHA:·9d0d93648a37a006f4a58c121006f23f4d318b75a737e32bca60b2b961d22741·...·]2-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="8970946612-9">[</span><span·class="p"·data-group-id="8970946612-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:·42,·SHA:·c893bc5d08f4af874f00c38511600a5cc66b7d0252df6de415752c5b56d7db64·...·]2-10">}</span><span·class="p">,</span><span·class="w">
160 ··············</span><span·class="p"·data-group-id="1998414392-11">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_sup</span><span·class="p"·data-group-id="1998414392-11">}</span><span·class="p">,</span><span·class="w">160 ··············</span><span·class="p"·data-group-id="8970946612-11">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_sup</span><span·class="p"·data-group-id="8970946612-11">}</span><span·class="p">,</span><span·class="w">
161 ··············</span><span·class="p"·data-group-id="1998414392-12">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="1998414392-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:·195,·SHA:·f4fa64e61cd617577ac0a4111d7f1701e741f7fe581f69725b870936a5821668·...·]2-12">}</span><span·class="p">,</span><span·class="w">161 ··············</span><span·class="p"·data-group-id="8970946612-12">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="8970946612-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:·195,·SHA:·ce24061063f3d78afb036497fac22fcf01afe63099664e1e0a0c3923da78f649·...·]2-12">}</span><span·class="p">,</span><span·class="w">
162 ··············</span><span·class="p"·data-group-id="1998414392-15">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="1998414392-15">}</span><span·class="p">,</span><span·class="w">162 ··············</span><span·class="p"·data-group-id="8970946612-15">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="8970946612-15">}</span><span·class="p">,</span><span·class="w">
163 ··············</span><span·class="p"·data-group-id="1998414392-16">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">1000</span><span·class="p"·data-group-id="1998414392-16">}</span><span·class="p">,</span><span·class="w">163 ··············</span><span·class="p"·data-group-id="8970946612-16">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">1000</span><span·class="p"·data-group-id="8970946612-16">}</span><span·class="p">,</span><span·class="w">
164 ··············</span><span·class="p"·data-group-id="1998414392-17">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="1998414392-17">}</span><span·class="p"·data-group-id="1998414392-9">]</span><span·class="w">164 ··············</span><span·class="p"·data-group-id="8970946612-17">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="8970946612-17">}</span><span·class="p"·data-group-id="8970946612-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="1998414392-18">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="1998414392-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="8970946612-18">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">kernel_safe_sup</span><span·class="p"·data-group-id="8970946612-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="1998414392-19">[</span><span·class="p"·data-group-id="1998414392-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:·43,·SHA:·9c98d56c24fa4b0bdbbeaaab153dee7b92b95bed1130fbf31222ed64083fa4b5·...·]2-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="8970946612-19">[</span><span·class="p"·data-group-id="8970946612-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:·43,·SHA:·cd0cf3488302ecc1ed82593eb9c7485637df052501ebd549fd4d17bfd6d28794·...·]2-20">}</span><span·class="p">,</span><span·class="w">
168 ··············</span><span·class="p"·data-group-id="1998414392-21">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_server</span><span·class="p"·data-group-id="1998414392-21">}</span><span·class="p">,</span><span·class="w">168 ··············</span><span·class="p"·data-group-id="8970946612-21">{</span><span·class="ss">id</span><span·class="p">,</span><span·class="ss">disk_log_server</span><span·class="p"·data-group-id="8970946612-21">}</span><span·class="p">,</span><span·class="w">
169 ··············</span><span·class="p"·data-group-id="1998414392-22">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="1998414392-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:·198,·SHA:·4b199c7a5fe21872536cc35c051d060f0e8f17796787f881624a9bfc58385f0b·...·]2-22">}</span><span·class="p">,</span><span·class="w">169 ··············</span><span·class="p"·data-group-id="8970946612-22">{</span><span·class="ss">mfargs</span><span·class="p">,</span><span·class="p"·data-group-id="8970946612-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:·198,·SHA:·1b986366ce55c4ba1987b13dd9df6899b0db8cbbe89bf850c52ad78a339e0bb0·...·]2-22">}</span><span·class="p">,</span><span·class="w">
170 ··············</span><span·class="p"·data-group-id="1998414392-25">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="1998414392-25">}</span><span·class="p">,</span><span·class="w">170 ··············</span><span·class="p"·data-group-id="8970946612-25">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="8970946612-25">}</span><span·class="p">,</span><span·class="w">
171 ··············</span><span·class="p"·data-group-id="1998414392-26">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="1998414392-26">}</span><span·class="p">,</span><span·class="w">171 ··············</span><span·class="p"·data-group-id="8970946612-26">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="8970946612-26">}</span><span·class="p">,</span><span·class="w">
172 ··············</span><span·class="p"·data-group-id="1998414392-27">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="1998414392-27">}</span><span·class="p"·data-group-id="1998414392-19">]</span><span·class="w">172 ··············</span><span·class="p"·data-group-id="8970946612-27">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="8970946612-27">}</span><span·class="p"·data-group-id="8970946612-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="1998414392-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="1998414392-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="8970946612-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="8970946612-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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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="5467713948-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5467713948-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="n">Stacktrace</span><span·class="p"·data-group-id="546[·...·truncated·by·diffoscope;·len:·453,·SHA:·df8ce869e62619d1cb83618dc9d5c551ca322f40347855b167e115f7c7f1b50d·...·]-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="0726726711-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="0726726711-2">{</span><span·class="ss">test</span><span·class="p">,</span><span·class="n">Stacktrace</span><span·class="p"·data-group-id="072[·...·truncated·by·diffoscope;·len:·453,·SHA:·7dff0e96e3aecdabf2679c8e8b7c3b05c60ece377a44089e10d1e326eae4f384·...·]-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="5467713948-5">[</span><span·class="p"·data-group-id="5467713948-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:·24097c8c130d697dff7c7c2017e89f6c889a80c1bca3f3062c3899dc23222e7d·...·]-6">}</span><span·class="p">,</span><span·class="w">159 </span><span·class="p"·data-group-id="0726726711-5">[</span><span·class="p"·data-group-id="0726726711-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:·3d77ad21332123fc14111a4194bc0f20e2a984d3849a6fb31d6776bd8251a7e0·...·]-6">}</span><span·class="p">,</span><span·class="w">
160 ·</span><span·class="p"·data-group-id="5467713948-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="5467713948-9">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·ebb6227654860211acd82a19ef927a7a11bcc23ceda5435ebdfba841910f83bf·...·]-8">}</span><span·class="p">,</span><span·class="w">160 ·</span><span·class="p"·data-group-id="0726726711-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="0726726711-9">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·74,·SHA:·ce110b7929b1639a7314236b0e8988f03123e4011a56df743a489bde8a55f33c·...·]-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="5467713948-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="0726726711-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="5467713948-10">(</span><span·class="ss">test</span><span·class="p"·data-group-id="5467713948-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="0726726711-10">(</span><span·class="ss">test</span><span·class="p"·data-group-id="0726726711-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="5467713948-11">[</span><span·class="p"·data-group-id="5467713948-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:·3c463ddd888ba25c48198752e1a8c2765bbb86f17cb83b4839801dc589519337·...·]-12">}</span><span·class="p">,</span><span·class="w">163 </span><span·class="p"·data-group-id="0726726711-11">[</span><span·class="p"·data-group-id="0726726711-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:·3d5a161c5b7978e1241500f767981d383e6a2066a2f40df34378d047355e9919·...·]-12">}</span><span·class="p">,</span><span·class="w">
164 ·</span><span·class="p"·data-group-id="5467713948-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="5467713948-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·c3f4310964a191b365690f48d842054314c9eb3b55099a315770c36846f40518·...·]-14">}</span><span·class="p">,</span><span·class="w">164 ·</span><span·class="p"·data-group-id="0726726711-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="0726726711-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·77,·SHA:·81b8e8a0364b56ada097723bca87e7d3d4de8888ddb3df5b4a0dce4d2d5bb55c·...·]-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="5467713948-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="0726726711-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.3/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.3/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="2729120728-1">(</span><span·class="ss">terminal_logger</span><span·class="p"·data-group-id="2729120728-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="4186578084-1">(</span><span·class="ss">terminal_logger</span><span·class="p"·data-group-id="4186578084-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="2729120728-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="2729120728-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="4186578084-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="4186578084-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="2729120728-3">(</span><span·class="p"·data-group-id="2729120728-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:·a127c43391c365f1b1ca44b6d7c6ade808e5e68ecd3f9883c410b3215927ee51·...·]-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="4186578084-3">(</span><span·class="p"·data-group-id="4186578084-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:·50f4946b5ad87d3641385b54b9eb42541f3080d2bd9ddd94edf88aa861278a43·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
146 </span><span·class="nf">init</span><span·class="p"·data-group-id="2729120728-5">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="2729120728-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="4186578084-5">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="4186578084-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
147 ····</span><span·class="p"·data-group-id="2729120728-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2729120728-7">[</span><span·class="p"·data-group-id="2729120728-7">]</span><span·class="p"·data-group-id="2729120728-6">}</span><span·class="p">.</span><span·class="w">147 ····</span><span·class="p"·data-group-id="4186578084-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4186578084-7">[</span><span·class="p"·data-group-id="4186578084-7">]</span><span·class="p"·data-group-id="4186578084-6">}</span><span·class="p">.</span><span·class="w">
  
148 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="2729120728-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="2729120728-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="4186578084-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="4186578084-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="2729120728-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="2729120728-10">[</span><span·clas[·...·truncated·by·diffoscope;·len:·116,·SHA:·27c010f1de9e5299ce0fd878737f9ddb5e25d5b78c467385225e2c322544c158·...·]-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="4186578084-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="4186578084-10">[</span><span·clas[·...·truncated·by·diffoscope;·len:·116,·SHA:·c8cb2d7cd5e219276f7936932ef4dfc4ce4748e9207415074c791854efbd688b·...·]-9">)</span><span·class="p">,</span><span·class="w">
150 ····</span><span·class="p"·data-group-id="2729120728-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="2729120728-11">}</span><span·class="p">.</span><span·class="w">150 ····</span><span·class="p"·data-group-id="4186578084-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="4186578084-11">}</span><span·class="p">.</span><span·class="w">
  
151 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="2729120728-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="2729120728-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="4186578084-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="4186578084-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="3537395193-1">(</span><span·class="ss">file_logger</span><span·class="p"·data-group-id="3537395193-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="7428145290-1">(</span><span·class="ss">file_logger</span><span·class="p"·data-group-id="7428145290-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="3537395193-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="3537395193-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="7428145290-2">(</span><span·class="ss">gen_event</span><span·class="p"·data-group-id="7428145290-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="3537395193-3">(</span><span·class="p"·data-group-id="3537395193-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:·731e435f6499e236d8f295c2bb0dfe8b5508d812e7211c994cee696e68f06640·...·]-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="7428145290-3">(</span><span·class="p"·data-group-id="7428145290-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:·5d8b86a57d1ef24fc6af125e251759ea5b3e02b95761bfe04c7eaccd8b8c90ad·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">init</span><span·class="p"·data-group-id="3537395193-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="3537395193-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="7428145290-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="7428145290-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ····</span><span·class="p"·data-group-id="3537395193-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="3537395193-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·267,·SHA:·354f44134e64a46c85710a2563082ad37904b489d2bee774ca6ecae48cf0917b·...·]-7">)</span><span·class="p">,</span><span·class="w">158 ····</span><span·class="p"·data-group-id="7428145290-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="7428145290-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·267,·SHA:·78679ea844a69c7922932f63f4784f90557b836e876e029b71fe7b05be24e71a·...·]-7">)</span><span·class="p">,</span><span·class="w">
159 ····</span><span·class="p"·data-group-id="3537395193-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="3537395193-8">}</span><span·class="p">.</span><span·class="w">159 ····</span><span·class="p"·data-group-id="7428145290-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="7428145290-8">}</span><span·class="p">.</span><span·class="w">
  
160 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="3537395193-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="3537395193-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="7428145290-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="7428145290-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="3537395193-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:·190,·SHA:·a43e79c82cbeb6b34471689043afd8f7c5bfdbb302f7cacb7e032f8e1f44e0d2·...·]-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="7428145290-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:·190,·SHA:·5f33a440b3819c67d867cdefe4385810851b512d236c2cc02f84620f077ae099·...·]-10">)</span><span·class="p">,</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="3537395193-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="3537395193-12">}</span><span·class="p">.</span><span·class="w">162 ····</span><span·class="p"·data-group-id="7428145290-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="7428145290-12">}</span><span·class="p">.</span><span·class="w">
  
163 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="3537395193-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="3537395193-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="7428145290-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="7428145290-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="3537395193-14">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="3537395193-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="7428145290-14">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="7428145290-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.1/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.1/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="8244539730-1">(</span><span·class="p"·data-group-id="8244539730-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="8244539730-2">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·0843657e88a4327ed79c2df941314258e00d8d04052aa65a5d3eea1b3e17021b·...·]-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="9058862588-1">(</span><span·class="p"·data-group-id="9058862588-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="9058862588-2">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·2805af7270f54d73b0e7a9b960bac8133253005dac0dc5735e7c3a1280c147fd·...·]-1">)</span><span·class="p">.</span><span·class="w">
192 </span><span·class="p"·data-group-id="8244539730-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="8244539730-3">}</span><span·class="gp·unselectable">192 </span><span·class="p"·data-group-id="9058862588-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="9058862588-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="8244539730-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="8244539730-5">[</span><span·class="[·...·truncated·by·diffoscope;·len:·81,·SHA:·ecb047819a0e6dec27232e35627d117d778e0dbc625c92f492c04dfbc5eaadda·...·]-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="9058862588-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="9058862588-5">[</span><span·class="[·...·truncated·by·diffoscope;·len:·81,·SHA:·57cec49cbba88f9a0712395e289949925c686859850d8c54c9837a9e2d09191a·...·]-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="9492416018-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="9492416018-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
199 ····</span><span·class="p"·data-group-id="9492416018-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9492416018-3">[</span><span·class="p"·data-group-id="9492416018-3">]</span><span·class=[·...·truncated·by·diffoscope;·len:·180,·SHA:·0af3fa2197e1f2a5fb8d2bac40868b371ec374fefccaa8648dac5ad38ae29565·...·]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="9143465008-1">(</span><span·class="p">_</span><span·class="n">[·...·truncated·by·diffoscope;·len:·132,·SHA:·78ccd3dff33a088389d57fe3c2b23a377c2080e4d791c1bc572c51bf50ce627c·...·]
 199 ····</span><span·class="p"·data-group-id="9143465008-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9143465008-3">[</span><span·class="p"·data-group-id="9143465008-3">]</span><span·class="p"·data-group-id="9143465008-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="8134674398-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="8134674398-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="9430208098-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="9430208098-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="8134674398-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="8134674398-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·265,·SHA:·46ed3d00fbc0932ebbcc00b05568724e29543ded2d0602860027ed8a573ee2f1·...·]98-3">)</span><span·class="p">,</span><span·class="w">202 ····</span><span·class="p"·data-group-id="9430208098-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="9430208098-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·265,·SHA:·51faac41df97a6569220605a51fb2e2f7adea5fb1ea6de0cf50a027b5379baf9·...·]98-3">)</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="p"·data-group-id="8134674398-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="8134674398-4">}</span><span·class="p">.</span></code></pre><h2·id="notifying-about-events"·class="section-heading">203 ····</span><span·class="p"·data-group-id="9430208098-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="9430208098-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="8836285059-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="8836285059-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="8836285059-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="8836285059-3">[</span><span·class="n">ErrorMsg</span><span·class="p"·data-group-id="8836285059-3">]</span><span·class="p"·data-group-id="8836285059-2">)</span><span·class="p">,</span><span·class="w"> 
217 ····</span><span·class="p"·data-group-id="8836285059-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="8836285059-4">}</span><span·class="p">.</span></code></pre>[·...·truncated·by·diffoscope;·len:·332,·SHA:·7c4c90bfd51a728651d71be834d3051d8f395e26b8773a9d94a11ef5e6a047a3·...·]-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="7889147832-1">(</span><span·class="n">ErrorMsg</span><sp[·...·truncated·by·diffoscope;·len:·114,·SHA:·bf1c16b2b386ff6107e9605f8bba52e123d24e01fcb50d702d208a357818d503·...·]-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="7889147832-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="7889147832-3">[</span><span·class="n">ErrorMsg</span><span·class="p"·data-group-id="7889147832-3">]</span><span·class="p"·data-group-id="7889147832-2">)</span><span·class="p">,</span><span·class="w">
 217 ····</span><span·class="p"·data-group-id="7889147832-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="7889147832-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="7274308089-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="7274308089-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="1348117636-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:·187,·SHA:·da57f485a8e554004ff8ff54662fefc6029078377a3c08f4f8f4badd1646e7b7·...·]-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="7274308089-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:·187,·SHA:·6c4bc9aa641e6d53499ca42a26bcc7e39189f34493c6c634f5fef4b506e30a23·...·]-2">)</span><span·class="p">,</span><span·class="w">
219 ····</span><span·class="p"·data-group-id="1348117636-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="1348117636-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="7274308089-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="7274308089-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="4095644687-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="4095644687-2">[</span><span·class="[·...·truncated·by·diffoscope;·len:·81,·SHA:·d7381aaf7d35af3bf5c74549a368ade56942bc843081f9b0f648ac2dc13f8926·...·]-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="5734082714-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="5734082714-2">[</span><span·class="[·...·truncated·by·diffoscope;·len:·81,·SHA:·7d04d5c7ffe388af91515772398acc177e697db93ff17b0c4d6d903019195691·...·]-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="2971967657-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="2971967657-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="1883828617-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="1883828617-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="1977781947-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="1977781947-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="4814617485-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="4814617485-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="1977781947-2">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="1977781947-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="4814617485-2">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="4814617485-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="9129293682-1">(</span><span·class="ss">error_man</span><span·class="p"·data-group-id="9129293682-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="3323402965-1">(</span><span·class="ss">error_man</span><span·class="p"·data-group-id="3323402965-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.1/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.1/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="0173949350-1">(</span><span·class="p"·data-group-id="0173949350-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:·177,·SHA:·988a5afd25f140f2991e271969eb3a372b19ece59900dc278a05af827351b99b·...·]0-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="9936867530-1">(</span><span·class="p"·data-group-id="9936867530-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:·177,·SHA:·7037c518275bfccdae05b912507c53fd20c17d8fd740d4408f4b8ca42a00195e·...·]0-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/41640 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="2165805282-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="2165805282-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="0537533995-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="0537533995-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="5999089814-1">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5999089814-2">[</span><span·class="p"·data-group-id="5999089814-2">]</span><span·class="p"·data-group-id="5999089814-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
159 ····</span><span·class="p"·data-group-id="5999089814-3">[</span><span·class="p"·data-group-id="5999089814-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:·ca6403e4fb2abe87a4814eae71cb07d46f9710694a1b90f82a983db29ab87ec4·...·]-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="6432242662-1">(</span><span·class="p">_</span><span·class=[·...·truncated·by·diffoscope;·len:·183,·SHA:·b0d96ab6bee6a8788a85263dfedd2fa6244168a1ea6dadbac2b01639e5110c59·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 159 ····</span><span·class="p"·data-group-id="6432242662-3">[</span><span·class="p"·data-group-id="6432242662-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="3793441288-1">(</span><span·class="n">Elem</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3793441288-2">[</span><span·class="p"·data-group-id="3793441288-2">]</span><span·class="p"·data-group-id="3793441288-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ····</span><span·class="p"·data-group-id="1315498719-3">[</span><span·class="p"·data-group-id="1315498719-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="3793441288-3">[</span><span·class="p"·data-group-id="3793441288-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="6240311694-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="6240311694-2">[</span><span·class="p"·data-group-id="6240311694-2">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·8e9efa62c1febfe5efcbf85e8a94fac58b932244243f1868607d3b24feedf11f·...·]-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="5167970085-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="5167970085-2">[</span><span·class="p"·data-group-id="5167970085-2">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·0569a841bdbadc5f1b950b0d0466a73a6ceb0c1c112e722fdc52a38d850e797b·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="6240311694-3">[</span><span·class="p"·data-group-id="6240311694-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="5167970085-3">[</span><span·class="p"·data-group-id="5167970085-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="7427097137-1">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="7427097137-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="742709[·...·truncated·by·diffoscope;·len:·700,·SHA:·b7286b14dd4eb00d568e3b78addf2d1b7c92024559c32b4277f151ddb84f74c7·...·]-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="9075583943-1">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="9075583943-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="907558[·...·truncated·by·diffoscope;·len:·700,·SHA:·395583b721c13ccf3e511275636cdb8d141c32e4d85e603dc5910622051603e0·...·]-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="1644954867-1">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="1644954867-1">]</span><span·class="w">174 </span><span·class="p"·data-group-id="2167527090-1">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2167527090-1">]</span><span·class="w">
175 </span><span·class="p"·data-group-id="1644954867-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="1644954867-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="2167527090-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="2167527090-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="2877362726-1">(</span><span·class="p"·data-group-id="2877362726-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:·74c5dbd3c112ecf78d70067bfaab2b23a179e2e1b00f1aa5c21fb8325e4d2d4b·...·]-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="7154126097-1">(</span><span·class="p"·data-group-id="7154126097-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:·2da77f2491428d4884266f4d0bfeb871ba1b0b45b4a1040df5c4c5af20664788·...·]-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="2877362726-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:·bdf47d2c296aac2b1c5f7084ad9f3537ec05e3a5a0734ae0b97b56e7278e1799·...·]-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="7154126097-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:·7db24acc8711fc5b3c083e8eacf80c22851590422373cd3c949a397aefdedf14·...·]-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="2877362726-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="2877362726-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="7154126097-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="7154126097-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="2636528028-1">(</span><span·class="p"·data-group-id="2636528028-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:·0efb7b9a091b7070eb856acb477e2bf9bb71231f9567e7c4e0ad06c0522f741b·...·]-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="1828530194-1">(</span><span·class="p"·data-group-id="1828530194-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:·dff581e3c2aaaa6755fed47e31d4c7298d471578b0b03ce7ee905f457ea42a28·...·]-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="2636528028-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="2636528028-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="1828530194-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="1828530194-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="0853312876-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="0853312876-1">)</span><span·class="w">·</span><span·class="p">-[·...·truncated·by·diffoscope;·len:·837,·SHA:·b4e80dde2cfc70c07e398e5ab0848c5454e52b21e9f764a127d99626bda6069d·...·]-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="2910521901-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="2910521901-1">)</span><span·class="w">·</span><span·class="p">-[·...·truncated·by·diffoscope;·len:·837,·SHA:·0b9bf6b54228acec8917e41ee66160fb1e504b274a811f6b84936882e63e19c4·...·]-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="2003031559-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="2003031559-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="9966161243-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="9966161243-1">}</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
208 ····</span><span·class="p"·data-group-id="2003031559-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="2003031559-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="9966161243-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="9966161243-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="1290002313-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="1290002313-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·281,·SHA:·0d6f0a90572b03ab79b8a0fff611a011c633ae6d8babde147ea7c3cad0848a30·...·]-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="5821984100-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="5821984100-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·281,·SHA:·e09f3cf436a19b58badba0e52265ebf5a9e271fd280f427b22e34c170ced330a·...·]-2">}</span><span·class="p">.</span><span·class="w">
217 </span><span·class="p"·data-group-id="1290002313-3">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="1290002313-3">}</span><span·class="gp·unselectable">217 </span><span·class="p"·data-group-id="5821984100-3">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="5821984100-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="1290002313-4">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="1290002313-4">}</span><span·class="gp·unselectable">223 </span><span·class="p"·data-group-id="5821984100-4">{</span><span·class="ss">answer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="5821984100-4">}</span><span·class="gp·unselectable">
224 5&gt;·</span><span·class="p"·data-group-id="1290002313-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="1290002313-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·324bb9d359abc0ff54b4ab5485281d7e74875608923157e5718facfdf7aaa807·...·]-6">]</span><span·class="p">.</span><span·class="w">224 5&gt;·</span><span·class="p"·data-group-id="5821984100-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="5821984100-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·3d273f2a12070f5f7dfd9c44849b467c8325ba37c02192f1f8f4f9c3ead7d0f7·...·]-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="9431248912-1">(</span><span·class="p"·data-group-id="9431248912-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="9431248912-2">}</span>[·...·truncated·by·diffoscope;·len:·346,·SHA:·56b4820ba27d77c08d505f783e1e9a02dddd0ca2fce9ab7d43afbb2ae3228f6c·...·]-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="7748003187-1">(</span><span·class="p"·data-group-id="7748003187-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="7748003187-2">}</span>[·...·truncated·by·diffoscope;·len:·346,·SHA:·d6d583d2649e83f00971d0cfa74b40c5e7d873f79e884370ab69af4d19f6dd3e·...·]-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="9431248912-4">(</span><span·class="p"·data-group-id="9431248912-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="9431248912-5">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·887,·SHA:·87914dd8a7dca14ff282937bd556f4a6fcaee26607eb4d82d9a62d22e88a28d2·...·]-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="7748003187-4">(</span><span·class="p"·data-group-id="7748003187-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="7748003187-5">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·887,·SHA:·c602c472e14b5c778764d6e27a31fe8d9ad68c0532b8e3eff6b4c999565a2922·...·]-7">)</span><span·class="p">.</span><span·class="w">
249 </span><span·class="p"·data-group-id="9431248912-9">{</span><span·class="p"·data-group-id="9431248912-10">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="9431248912-10">}</span><span·class="p">,</span><span·class="mi">3</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·21a39d7d404e247530d914b38b6fef4f93125e5cf21e90e9e4dac83cdd1e48ab·...·]-9">}</span><span·class="gp·unselectable">249 </span><span·class="p"·data-group-id="7748003187-9">{</span><span·class="p"·data-group-id="7748003187-10">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7748003187-10">}</span><span·class="p">,</span><span·class="mi">3</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·c9d7bccb66c0d05824947dba8563a1d9eb67b2c6f4f3a5be6f8dbfef4cd72606·...·]-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="9431248912-11">(</span><span·class="p"·data-group-id="9431248912-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:·4f165c81304d3e2188245acc246f146e68018c7bb716f421641a05c1c08c0d80·...·]-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="7748003187-11">(</span><span·class="p"·data-group-id="7748003187-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:·a3834a65803c314c9c2458e9a2aef6e4b152bc0a13d0333f6793b1269127b1f9·...·]-15">)</span><span·class="p">.</span><span·class="w">
251 </span><span·class="p"·data-group-id="9431248912-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="9431248912-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="7748003187-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="7748003187-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="8009569108-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><sp[·...·truncated·by·diffoscope;·len:·119,·SHA:·893bc0b6768447878f2bf0e35788c7fcd1bc41bacf9742ed3b27d84d7b888a71·...·]-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="8689565715-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><sp[·...·truncated·by·diffoscope;·len:·119,·SHA:·13400de4a528cfb75c3f58ac7ed8b588e5b74d3bec6dda11abf19f182ab66274·...·]-1">}</span><span·class="p">.</span><span·class="w">
254 </span><span·class="p"·data-group-id="8009569108-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;</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·f540e87f98045eaace0c5101afa16ee2b08aed17b1491bae55c022e9396bcf87·...·]-2">}</span><span·class="gp·unselectable">254 </span><span·class="p"·data-group-id="8689565715-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;</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·edf9466788e38f782a032379579677f555a55c70682109fe4baf789f6174daac·...·]-2">}</span><span·class="gp·unselectable">
255 2&gt;·</span><span·class="nf">f</span><span·class="p"·data-group-id="8009569108-3">(</span><span·class="n">Key</span><span·class="p"·data-group-id="8009569108-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8009569108-4">#{</span><span·class="n">Key</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·419,·SHA:·6bf3ea47c0b42d6bbbc1a748bd15bc7311612f17611423dd08c97cd07aca7f11·...·]-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="8689565715-3">(</span><span·class="n">Key</span><span·class="p"·data-group-id="8689565715-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8689565715-4">#{</span><span·class="n">Key</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·419,·SHA:·3f439f36852e38c3357bfd18e0efa741a8bfd232c796aa883d6ca1c06a0bb29c·...·]-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="8009569108-6">(</span><span·class="n">Key</span><span·class="p"·data-group-id="8009569108-6">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8009569108-7">#{</span><span·class="n">Key</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·621,·SHA:·ca8cafc5905a76228a99b99f4ea8792acb037ae5882c9b8f4ac7cd795cea844c·...·]-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="8689565715-6">(</span><span·class="n">Key</span><span·class="p"·data-group-id="8689565715-6">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8689565715-7">#{</span><span·class="n">Key</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·621,·SHA:·cd5c1a3c8d761ccd806e597cc8cbd275cef6399cd2f7fb7b564764a546acc510·...·]-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="8009569108-10">(</span><span·class="n">Key</span><span·class="p"·data-group-id="8009569108-10">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8009569108-11">(</span><span·class="p"·data-group-id="8009569108-12">#{</sp[·...·truncated·by·diffoscope;·len:·532,·SHA:·5e4554d6038ed07f01d4a9979866f03befb6a13f4868e2caa0ddc06722c5bc8a·...·]-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="8689565715-10">(</span><span·class="n">Key</span><span·class="p"·data-group-id="8689565715-10">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8689565715-11">(</span><span·class="p"·data-group-id="8689565715-12">#{</sp[·...·truncated·by·diffoscope;·len:·532,·SHA:·76cd649c750f5b2bfd934f753c6a456ca889dd8d2ace22ca2257cb264d99ce5c·...·]-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="8009569108-14">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="n">Y</span><span·class="p"·data-group-id="8009569108-14">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">begin<[·...·truncated·by·diffoscope;·len:·376,·SHA:·d9f89bf7ff98630ca3933d841eab331ed48a106f3a2f0069f310e81fabb6e666·...·]-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="8689565715-14">&lt;&lt;</span><span·class="n">X</span><span·class="p">:</span><span·class="n">Y</span><span·class="p"·data-group-id="8689565715-14">&gt;&gt;</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="k">begin<[·...·truncated·by·diffoscope;·len:·376,·SHA:·a5e5054fb07f0e4ec7ee04f3f067957f9c165cb9c622bccb9dffdbea3dfdef90·...·]-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="8718937864-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="8718937864-1">)</span><span·class="w">283 <pre><code·class="makeup·erlang"·translate="no"><span·class="n">ExprF</span><span·class="p"·data-group-id="4524846496-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="4524846496-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="8718937864-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="8718937864-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="4524846496-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="4524846496-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="8972877418-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="8972877418-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="1091892483-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="1091892483-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; 303735/357892 bytes (84.87%) of diff not shown.
214 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="5285306881-1">(</span><span·class="p"·data-group-id="5285306881-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="5285306881-2">]</span><span·class="p"·data-group-id="5285306881-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5285306881-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="5285306881-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="5285306881-4">)</span><span·class="p"·data-group-id="5285306881-3">]</span><span·class="p">;</span><span·class="w"> 
124 </span><span·class="nf">double</span><span·class="p"·data-group-id="5285306881-5">(</span><span·class="p"·data-group-id="5285306881-6">[</span><span·class="p"·data-group-id="5285306881-6">]</span><span·class="p"·data-group-id="5285306881-5">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5285306881-7">[</span><span·class="p"·data-group-id="5285306881-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="3376745776-1">(</span><span·class="p"·data-group-id="3376745776-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="3376745776-2">]</span><span·class="p"·data-group-id="3376745776-1">)</span><span·class="p">.</span><span·class="w"> 
125 </span><span·class="p"·data-group-id="3376745776-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="3376745776-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="7211985212-1">(</span><span·class="p"·data-group-id="7211985212-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="7211985212-2">]</span><span·class="p"·data-group-id="7211985212-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7211985212-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="7211985212-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="7211985212-4">)</span><span·class="p"·data-group-id="7211985212-3">]</span><span·class="p">;</span><span·class="w"> 
126 </span><span·class="nf">add_one</span><span·class="p"·data-group-id="7211985212-5">(</span><span·class="p"·data-group-id="7211985212-6">[</span><span·class="p"·data-group-id="7211985212-6">]</span><span·class="p"·data-group-id="7211985212-5">)</span><span·c[·...·truncated·by·diffoscope;·len:·349,·SHA:·7a6c29485c2061720c495474124c6189238119fe33a988d4a0477ef6316cd9e4·...·]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="5619064060-1">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·683,·SHA:·85e08cba97fef8751ea47a7c8efbcde6c93c3648aa80dc10788bc4e9aa9ebf13·...·]
 124 </span><span·class="nf">double</span><span·class="p"·data-group-id="5619064060-5">(</span><span·class="p"·data-group-id="5619064060-6">[</span><span·class="p"·data-group-id="5619064060-6">]</span><span·class="p"·data-group-id="5619064060-5">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5619064060-7">[</span><span·class="p"·data-group-id="5619064060-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="1477286281-1">(</span><span·class="p"·data-group-id="1477286281-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="1477286281-2">]</span><span·class="p"·data-group-id="1477286281-1">)</span><span·class="p">.</span><span·class="w">
 125 </span><span·class="p"·data-group-id="1477286281-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="1477286281-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="2400158724-1">(</span><span·class="p"·data-group-id="2400158724-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2400158724-2">]</span><span·class="p"·data-group-id="2400158724-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2400158724-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="2400158724-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="2400158724-4">)</span><span·class="p"·data-group-id="2400158724-3">]</span><span·class="p">;</span><span·class="w">
 126 </span><span·class="nf">add_one</span><span·class="p"·data-group-id="2400158724-5">(</span><span·class="p"·data-group-id="2400158724-6">[</span><span·class="p"·data-group-id="2400158724-6">]</span><span·class="p"·data-group-id="2400158724-5">)</span><span·class="w">····</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2400158724-7">[</span><span·class="p"·data-group-id="2400158724-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="9849935002-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9849935002-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9849935[·...·truncated·by·diffoscope;·len:·645,·SHA:·2012acce7c3a1f34354c0361da25245bbff1c656d2ac209bc6ac49fbae1160eb·...·]-3">]</span><span·class="p">;</span><span·class="w">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="9350713639-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9350713639-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9350713[·...·truncated·by·diffoscope;·len:·645,·SHA:·2a3cb59138d457096c4a26334592b49418541aec3aac05a35047bde4dd35db02·...·]-3">]</span><span·class="p">;</span><span·class="w">
128 </span><span·class="nf">map</span><span·class="p"·data-group-id="9849935002-6">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9849935002-7">[</span><span·class="p"·data-group-id="9849935002-7">]</span><span·class="p"·data-group-id="9849935002-6">)</span><spa[·...·truncated·by·diffoscope;·len:·169,·SHA:·504c50065cc42a981d7ae7c196ff7e3cf0632198d63282254a641d2b67730504·...·]-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>·as128 </span><span·class="nf">map</span><span·class="p"·data-group-id="9350713639-6">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9350713639-7">[</span><span·class="p"·data-group-id="9350713639-7">]</span><span·class="p"·data-group-id="9350713639-6">)</span><spa[·...·truncated·by·diffoscope;·len:·169,·SHA:·62ef242cf6c4c8e1dec6386490c0c03ce6560d3a457b84801bbf118debef6630·...·]-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="5858829927-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="5858829927-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="5858829927-2">(</span>[·...·truncated·by·diffoscope;·len:·469,·SHA:·94ff689dc022924544c7ce88b5f8d517f0a4a9d7f90d3e9bab54fc9afd954dea·...·]-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="6968840059-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="6968840059-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="6968840059-2">(</span>[·...·truncated·by·diffoscope;·len:·469,·SHA:·2e5864d591bb60cd642b9416a3e190bbb52117dfb1dd60630f4cb28e331655dc·...·]-2">)</span><span·class="p">.</span><span·class="w">
130 </span><span·class="nf">add_one</span><span·class="p"·data-group-id="5858829927-4">(</span><span·class="n">L</span><span·class="p"·data-group-id="5858829927-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="5858829927-5">(</span><[·...·truncated·by·diffoscope;·len:·516,·SHA:·18be5c2d95be18e57d545f6dc1691c4ee2fc344294ca0137bf3ba2919d0733d9·...·]-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="6968840059-4">(</span><span·class="n">L</span><span·class="p"·data-group-id="6968840059-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="6968840059-5">(</span><[·...·truncated·by·diffoscope;·len:·516,·SHA:·b10f6b03d34739837c9ee9df0fc3a9e4dd51936a18547bace3dbec14cb0a3287·...·]-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="8166617926-1">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8166617926-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="8[·...·truncated·by·diffoscope;·len:·62,·SHA:·44458165f49c377973e1c6a9d5e1b33b60d6839a60e4402ba138bf45b1861db8·...·]-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="3566672981-1">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3566672981-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="3[·...·truncated·by·diffoscope;·len:·62,·SHA:·ca0108cbe4eff65fc16029a71498bb31922414622a37a908b5e33834f5329d62·...·]-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="8166617926-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:·195e9887776f8784fd60cb0e8b4ef9ebc245c05d1c4ab3efaec3dcd45d152bf1·...·]-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="3566672981-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:·1d0d1d0cb65dfaea7ee20bbd2dc617e5603dc982437dba8823bf550571932704·...·]-3">)</span><span·class="p">,</span><span·class="w">
146 ····</span><span·class="nf">print_list</span><span·class="p"·data-group-id="8166617926-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="8166617926-5">)</span><span·class="p">;</span><span·class="w">146 ····</span><span·class="nf">print_list</span><span·class="p"·data-group-id="3566672981-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="3566672981-5">)</span><span·class="p">;</span><span·class="w">
147 </span><span·class="nf">print_list</span><span·class="p"·data-group-id="8166617926-6">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8166617926-7">[</span><span·class="p"·data-group-id="8166617926-7">]</span><span·class="p"·data-group-id="8166617926-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="3566672981-6">(</span><span·class="n">Stream</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3566672981-7">[</span><span·class="p"·data-group-id="3566672981-7">]</span><span·class="p"·data-group-id="3566672981-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="6086258460-1">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6086258460-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:·87537f61710cd28a7a007a1f40e7026809a2802e3d59c73afb7534616e52ffa8·...·]-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="3245763863-1">(</span><span·class="n">Msg</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3245763863-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:·953eb9b600f70958873c285486041cd90a6129536111dc6664356d0b8f0a2383·...·]-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="6086258460-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="6086258460-3">)</span><span·class="p">;</span><span·class="w">150 ····</span><span·class="nf">broadcast</span><span·class="p"·data-group-id="3245763863-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="3245763863-3">)</span><span·class="p">;</span><span·class="w">
151 </span><span·class="nf">broadcast</span><span·class="p"·data-group-id="6086258460-4">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6086258460-5">[</span><span·class="p"·data-group-id="6086258460-5">]</span><span·class="p"·data-group-id="6086258460-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="3245763863-4">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3245763863-5">[</span><span·class="p"·data-group-id="3245763863-5">]</span><span·class="p"·data-group-id="3245763863-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="5618700972-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5618700972-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="561870[·...·truncated·by·diffoscope;·len:·57,·SHA:·c49c0c64ec70cb8dbe73d5911295f170156b9e929f0a97fd86af34737ee68422·...·]-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="4329134346-1">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4329134346-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="432913[·...·truncated·by·diffoscope;·len:·57,·SHA:·c4d4cab3c0ce0c782a8464aa4aa638aedc939dade2aecd86d1656e1851cbf702·...·]-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="5618700972-3">(</span><span·class="n">H</span><span·class="p"·data-group-id="5618700972-3">)</span><span·class="p">,</span><span·class="w">155 ····</span><span·class="n">F</span><span·class="p"·data-group-id="4329134346-3">(</span><span·class="n">H</span><span·class="p"·data-group-id="4329134346-3">)</span><span·class="p">,</span><span·class="w">
156 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="5618700972-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="5618700972-4">)</span><span·class="p">;</span><span·class="w">156 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="4329134346-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="4329134346-4">)</span><span·class="p">;</span><span·class="w">
157 </span><span·class="nf">foreach</span><span·class="p"·data-group-id="5618700972-5">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5618700972-6">[</span><span·class="p"·data-group-id="5618700972-6">]</span><span·class="p"·data-group-id="5618700972-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:·099679462c5e11732a47b4a24f92d6f7b420c0a4c11bf0da51b1c74bf37946ca·...·]>157 </span><span·class="nf">foreach</span><span·class="p"·data-group-id="4329134346-5">(</span><span·class="n">F</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4329134346-6">[</span><span·class="p"·data-group-id="432913434[·...·truncated·by·diffoscope;·len:·133,·SHA:·345d1a9c1cac7a656d07ea337d048a511aaa267ae61807fbb6e693b443be90d7·...·]>
 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="6208436962-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6208436962-2">(</span><span·class="n">H</span><span·class="p"·data-group-id="6208436962-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="6208436962-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="6208436962-4">[</span><span·class="n">H</span><span·class="p"·data-group-id="6208436962-4">]</span><span·class="p"·data-group-id="6208436962-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="6208436962-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="1443205864-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1443205864-2">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="1443205864-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="1443205864-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="2449438164-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:·08416baabef6163d2b4958317e37f97191fba38676a26ab8681ca98f7f33d21e·...·]-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="5648920283-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:·6e2f952f55d0af0c633053faf266ee27dc924abb3e25b8c72c964e990ef0dd20·...·]-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="3922066001-1">(</span><span·class="ss">fun_test</span><span·class="p"·data-group-id="3922066001-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="6680398878-1">(</span><span·class="ss">fun_test</span><span·class="p"·data-group-id="6680398878-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="3922066001-2">(</span><span·class="p"·data-group-id="3922066001-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:·80017914839c3f0578a6612122fa2290611669280b848e2381862965c27ab22b·...·]-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="6680398878-2">(</span><span·class="p"·data-group-id="6680398878-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:·ad8d9103ff1500305edc8e109f2e630d316e845e1a27150e46f256841bc0bcb1·...·]-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="3922066001-4">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3922066001-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:·5c89bde37d33c3372ecc316bd0836e62ec1e368caeac42603587d5216c41814b·...·]-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="6680398878-4">(</span><span·class="ss">lists</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6680398878-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:·ac495b576f7dd88c8a843f54886c8494eae31e1bb57499811ce22f2b92d02fe0·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
177 </span><span·class="nf">t1</span><span·class="p"·data-group-id="3922066001-6">(</span><span·class="p"·data-group-id="3922066001-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="3922066001-7">(</span><span·class="nf">fun</spa[·...·truncated·by·diffoscope;·len:·795,·SHA:·c853f466b9ff8e182e3fd9f256d5044f35e69f9284971d79da0c185735bb7e9e·...·]-7">)</span><span·class="p">.</span><span·class="w">177 </span><span·class="nf">t1</span><span·class="p"·data-group-id="6680398878-6">(</span><span·class="p"·data-group-id="6680398878-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="6680398878-7">(</span><span·class="nf">fun</spa[·...·truncated·by·diffoscope;·len:·795,·SHA:·29aba93cce522f7b1351ab4874f3c6432ccba76285d99e4e271550b1b33d1a9b·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">t2</span><span·class="p"·data-group-id="3922066001-10">(</span><span·class="p"·data-group-id="3922066001-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="3922066001-11">(</span><span·class="k">fun</s[·...·truncated·by·diffoscope;·len:·525,·SHA:·a50f860a46557f0559306688dc581e99794caafab4602f5f962212ec1bcda313·...·]-11">)</span><span·class="p">.</span><span·class="w">178 </span><span·class="nf">t2</span><span·class="p"·data-group-id="6680398878-10">(</span><span·class="p"·data-group-id="6680398878-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="6680398878-11">(</span><span·class="k">fun</s[·...·truncated·by·diffoscope;·len:·525,·SHA:·b8b46cf0ec2b8a10dd1e717c2344a34692351882d85c311d81ee1b3bda7f53b0·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
179 </span><span·class="nf">double</span><span·class="p"·data-group-id="3922066001-13">(</span><span·class="n">X</span><span·class="p"·data-group-id="3922066001-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="8787072980-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="8787072980-1">)</span></code></pre><p>To·check·whether·a·term·is·a·fun,·use·the·test 
180 <a·href="../../erts-15.2.3/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="75808[·...·truncated·by·diffoscope;·len:·477,·SHA:·1a90dd975b443e98d3cf430d935bfd6746c820ea8ddecc049d691666705cd065·...·]179 </span><span·class="nf">double</span><span·class="p"·data-group-id="6680398878-13">(</span><span·class="n">X</span><span·class="p"·data-group-id="6680398878-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·771,·SHA:·b20872c2844fbba147b26b8fa9c3d3bc62053e3f6b3e42befd82cbddc0333129·...·]
 180 <a·href="../../erts-15.2.3/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="0360371857-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="0360371857-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="0360371857-2">(</span><span·class="n">F</span><span·class="p"·data-group-id="0360371857-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="7580846302-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="7580846302-3">)</span><span·class="p">;</span><span·class="w">181 ···</span><span·class="nf">apply</span><span·class="p"·data-group-id="0360371857-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="0360371857-3">)</span><span·class="p">;</span><span·class="w">
182 </span><span·class="nf">f</span><span·class="p"·data-group-id="7580846302-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="7580846302-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·142,·SHA:·d50266571a0a361532f5861ed354c94be1ec46c5c78a0289d693318f06066298·...·]-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="0360371857-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="0360371857-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·142,·SHA:·f78229f8c87cba755aa92e367d1a7d8f73af862b8f9bc162f3f9aad47628b352·...·]-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.3/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.3/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.3/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.3/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="4422559214-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="4422559214-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="2569955263-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="2569955263-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
196 ····</span><span·class="p"·data-group-id="4422559214-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="4422559214-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·272,·SHA:·576ab1b5d4dc75a57c510d9f4a083897155d71d56d80da3833a8f58990a93157·...·]-3">)</span><span·class="p">,</span><span·class="w">196 ····</span><span·class="p"·data-group-id="2569955263-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="2569955263-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·272,·SHA:·fd74a5936a4358b23d1535c72152c437ab209df18e56f386bce674f07def5f33·...·]-3">)</span><span·class="p">,</span><span·class="w">
197 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="4422559214-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4422559214-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="4422559214-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·668,·SHA:·6b03ca911a60803447f99554e31a80b6830910434db3f5c2a0dec283da40be5a·...·]-4">)</span><span·class="p">,</span><span·class="w">197 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="2569955263-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2569955263-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="2569955263-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·668,·SHA:·9931be9f6e1b1cb40c297fe6ed8d1a87f46121a585189e8de00fa4b7f2c0ccc4·...·]-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="4422559214-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="4422559214-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="2569955263-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="2569955263-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="4611587323-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="4611587323-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="2631967529-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="2631967529-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="4611587323-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="4611587323-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·272,·SHA:·9b61fa961c6cba8bf6ddc3d5564d1b4a7b507aa91d690274aaf4d14b00eb19f6·...·]-3">)</span><span·class="p">,</span><span·class="w">202 ····</span><span·class="p"·data-group-id="2631967529-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="2631967529-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·272,·SHA:·c90c8853cd83efd5c29a47ce87c5872f61fc41ce2447f5d9531b67372c5f7cd5·...·]-3">)</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="nf">foreach</span><span·class="p"·data-group-id="4611587323-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4611587323-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="4611587323-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="2631967529-4">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2631967529-5">(</span><span·class="n">File</span><span·class="p"·data-group-id="2631967529-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="4611587323-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="4611587323-7">[<[·...·truncated·by·diffoscope;·len:·127,·SHA:·419b9cee3540d1d7fc0db729e732b1c2c74c29556d5a8fb08359b36c07b55edc·...·]-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="2631967529-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="2631967529-7">[<[·...·truncated·by·diffoscope;·len:·127,·SHA:·de6a29e5d2a3df6ccb8314728cad765a3273241188b30d96f5d46d6679ca0636·...·]-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="4611587323-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="2631967529-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="4611587323-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="4611587323-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="2631967529-8">(</span><span·class="n">Stream</span><span·class="p"·data-group-id="2631967529-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="7512201970-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="7512201970-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="9143656732-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9143656732-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="7512201970-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7512201970-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="7512201970-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="9143656732-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9143656732-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="9143656732-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="7512201970-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="7512201970-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">219 ···········</span><span·class="p"·data-group-id="9143656732-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="9143656732-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="7512201970-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="9143656732-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="1539103129-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1539103129-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="3536563426-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3536563426-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="1539103129-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1539103129-3">(</span><span·class="n">Y</span><span·class="p"·data-group-id="1539103129-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="3536563426-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3536563426-3">(</span><span·class="n">Y</span><span·class="p"·data-group-id="3536563426-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="1539103129-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="1539103129-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">226 ···········</span><span·class="p"·data-group-id="3536563426-4">(</span><span·class="p">_</span><span·class="p"·data-group-id="3536563426-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="1539103129-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="3536563426-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>
233 ··<span·class="text">Funs·and·Module·Lists</span>233 ··<span·class="text">Funs·and·Module·Lists</span>
234 </h2>234 </h2>
Max diff block lines reached; 152982/218554 bytes (70.00%) 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="3312914642-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="3312914642-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="4345014958-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="4345014958-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="3312914642-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="3312914642-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="4345014958-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="4345014958-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="3312914642-3">(</span><span·class="p"·data-group-id="3312914642-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3312914642-4">]</span><span·class="p"·data-group-id="3312914642-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="4345014958-3">(</span><span·class="p"·data-group-id="4345014958-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4345014958-4">]</span><span·class="p"·data-group-id="4345014958-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="3312914642-5">(</span><span·class="p"·data-group-id="3312914642-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:·c0c9c6c94aa6d1f348c9a90fc197a3925ffd939b14b97af4eafb90b7110b1eab·...·]-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="4345014958-5">(</span><span·class="p"·data-group-id="4345014958-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:·f2ced13d6d62a8ccb5e0d1a4e905d540389a825779bf0caef88c4a0ff7ffc61e·...·]-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="3312914642-7">(</span><span·class="p"·data-group-id="3312914642-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:·9f11cd13c53420c837d248c2ad01c7ffcda069fa0a36233c9022e9c25e8cdbf7·...·]-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="4345014958-7">(</span><span·class="p"·data-group-id="4345014958-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:·9ed9da246c22acc0cc31bdb1443afd8ddd4d6a5d04312156faef9e16d1179f37·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
170 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="3312914642-9">(</span><span·class="p"·data-group-id="3312914642-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="4345014958-9">(</span><span·class="p"·data-group-id="4345014958-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="3312914642-10">(</span><span·class="p"·data-group-id="3312914642-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="3312914642-11">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·454cade9bd428ab0f40462b703f31f1366f3f8e17629001c39deca64cfe341bf·...·]-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="4345014958-10">(</span><span·class="p"·data-group-id="4345014958-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="4345014958-11">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·dea8315b0d5a70277d07c3472174878fd04e1cb3e4a93d555923edd5ff93a95b·...·]-10">)</span><span·class="p">.</span><span·class="w">
  
172 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="3312914642-14">(</span><span·class="p"·data-group-id="3312914642-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="4345014958-14">(</span><span·class="p"·data-group-id="4345014958-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="3312914642-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="3312914642-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="4345014958-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="4345014958-15">)</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">free</span><span·class="p"·data-group-id="3312914642-16">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="3312914642-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="4345014958-16">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="4345014958-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="3312914642-17">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3312914642-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:·6dbfd056bac559e874408dd32ff215fa83c8168a1cd5ea660b0b1ed1a38aaeeb·...·]-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="4345014958-17">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4345014958-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:·73c47bb2dd837a43761fd3ec25e205c476eb1e56f0876b085916e464f1d1a919·...·]-17">)</span><span·class="p">.</span><span·class="w">
  
176 </span><span·class="nf">init</span><span·class="p"·data-group-id="3312914642-19">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="3312914642-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="4345014958-19">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="4345014958-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ····</span><span·class="p"·data-group-id="3312914642-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="3312914642-21">(</span><span·class="p"·data-group-id="3312914642-21">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·bc68501065301f332b0fdd6a50a53d4d470ed5042e942fc936a3b09e4cc73d3a·...·]-20">}</span><span·class="p">.</span><span·class="w">177 ····</span><span·class="p"·data-group-id="4345014958-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="4345014958-21">(</span><span·class="p"·data-group-id="4345014958-21">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·7a0fbd7f4733b72dafc46cbd028d67ec8c8ff57ccd846fb58b75d227c3cb2500·...·]-20">}</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="3312914642-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:·a16929eee6718522b2adac3e2320675e7990d365700580d2fdcb9c63c803c30e·...·]-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="4345014958-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:·a5acd36ac7dce753dc9c162c68ff305e1db36d1f5e5d3ff3891fca3bd99a0870·...·]-22">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ····</span><span·class="p"·data-group-id="3312914642-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="3312914642-23">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·7c63af8f113a2c528d0112645b80112355686a5498d1e84609e2eaf58a6b8ba3·...·]-24">)</span><span·class="p">,</span><span·class="w">179 ····</span><span·class="p"·data-group-id="4345014958-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="4345014958-23">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·00c63e3feb2b60d95e1f36946be4c60b81b5fe0288f0e1a5e29309bcb82d06e2·...·]-24">)</span><span·class="p">,</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="3312914642-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="3312914642-25">}</span><span·class="p">.</span><span·class="w">180 ····</span><span·class="p"·data-group-id="4345014958-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="4345014958-25">}</span><span·class="p">.</span><span·class="w">
  
181 </span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="3312914642-26">(</span><span·class="p"·data-group-id="3312914642-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="3312914642-27">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·d80c3dddc46ede927bca559a4afd400935f07e4ccaac88b9e20ac85f5034c6f1·...·]-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="4345014958-26">(</span><span·class="p"·data-group-id="4345014958-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="4345014958-27">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·39a64d74d8a9bc90b2f6c5228fb0c8a3c31b4f99d3c74c972bd22b7981a2fbc8·...·]-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="3312914642-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="3312914642-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="4345014958-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="4345014958-28">)</span><span·class="p">,</span><span·class="w">
183 ····</span><span·class="p"·data-group-id="3312914642-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="3312914642-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="4345014958-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="4345014958-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="0894216051-1">(</span><span·class="p"·data-group-id="0894216051-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="6450615940-1">(</span><span·class="p"·data-group-id="6450615940-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="0894216051-2">(</span><span·class="p"·data-group-id="0894216051-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="0894216051-3">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·682,·SHA:·3003680072745c312582de2d728726d492c8e46f5bc3d1676a2a873153b36900·...·]-6">}</span></code></pre><p><code·class="inline">start_link/0</code>·calls·function·<a·href="../../lib/stdlib-6.2.1/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="6450615940-2">(</span><span·class="p"·data-group-id="6450615940-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="6450615940-3">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·682,·SHA:·dfa6c429039af0963e3a331804d97caefa6b90c1bd810cba29557b4ad816be23·...·]-6">}</span></code></pre><p><code·class="inline">start_link/0</code>·calls·function·<a·href="../../lib/stdlib-6.2.1/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.3/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.3/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.1/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.1/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="4681000019-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="4681000019-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="6215325966-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="6215325966-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ····</span><span·class="p"·data-group-id="4681000019-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="4681000019-3">(</span><span·class="p"·data-group-id="4681000019-3">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·ef91b007669387a6721ec210c158ef47d5b79098f0047909bcbcb9a6aaddf4f4·...·]-2">}</span><span·class="p">.</span></code></pre><p><a·href="../../lib/stdlib-6.2.1/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="6215325966-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="6215325966-3">(</span><span·class="p"·data-group-id="6215325966-3">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·6b9b91209ee942a4c483eac926d3369c935100575fe8da51664f211c2f385ac8·...·]-2">}</span><span·class="p">.</span></code></pre><p><a·href="../../lib/stdlib-6.2.1/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.1/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.1/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.1/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.1/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.1/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.1/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="0280578057-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="0[·...·truncated·by·diffoscope;·len:·8,·SHA:·f399c471b3f30c62ebbded2e19e084c705652545a7bc0f5655f51552f7064dda·...·]7-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="8017639037-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="8[·...·truncated·by·diffoscope;·len:·8,·SHA:·a3c5799c6edf8f21f7640755dbcddd031bd4af585a0d970b6f8e35dc39e2272b·...·]7-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
229 ····</span><span·class="p"·data-group-id="0280578057-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="0280578057-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·139,·SHA:·9216f4e358ad81de8d3ab146e5363f84a2dc74c39b94104815d83dfbbe571c3f·...·]7-3">)</span><span·class="p">,</span><span·class="w">229 ····</span><span·class="p"·data-group-id="8017639037-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="8017639037-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·139,·SHA:·25ea0dea293a8484ed1a5ca6e70add3f73ff0c27a87754bd6665540d5920d8e4·...·]7-3">)</span><span·class="p">,</span><span·class="w">
230 ····</span><span·class="p"·data-group-id="0280578057-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="0280578057-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="8017639037-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="8017639037-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.1/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="0791111916-1">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="0791111916-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.1/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="7074247681-1">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="7074247681-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="0791111916-2">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0791111916-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:·89,·SHA:·411c1c3dc4d8bdce4f8e715276fbf2c853c969a8aa04c81ce38537477b444a01·...·]-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="7074247681-2">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7074247681-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:·89,·SHA:·a48dceab5943285c8f56a6db8472b3480db29b35677ab4c3f986f81a72cdf1ca·...·]-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="8183186227-1">(</span><span·class="p"·data-group-id="8183186227-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="8183186227-2">}</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·88,·SHA:·94b84db928b0cbec5cac9644774b4ab9250565218bd24bebb5bf5ee3f185dd0c·...·]-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="9922383152-1">(</span><span·class="p"·data-group-id="9922383152-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="9922383152-2">}</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·88,·SHA:·93b45758d661036f08d07b3baa1542b552557588072a7437e79293c424f7fd4f·...·]-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="8183186227-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="8183186227-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="9922383152-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="9922383152-3">)</span><span·class="p">,</span><span·class="w">
245 ····</span><span·class="p"·data-group-id="8183186227-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="8183186227-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="9922383152-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="9922383152-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="3913788381-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="3913788381-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="8669278716-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="8669278716-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="3913788381-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="3913788381-2">)</span><span·class="p">,</span><span·class="w">266 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="8669278716-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="8669278716-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="3913788381-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="3913788381-3">}</span><span·class="p">.</span><span·class="w">268 ····</span><span·class="p"·data-group-id="8669278716-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="8669278716-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="3913788381-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="3913788381-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="8669278716-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="8669278716-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="4980729377-1">(</span><span·class="p"·data-group-id="4980729377-2">[</span><span·class="ss">stop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4980729377-2">]</span><span·class="p"·data-group-id="4980729377-1">)</span><span·class="p">.</span><span·class="w">281 </span><span·class="nf">export</span><span·class="p"·data-group-id="4099369583-1">(</span><span·class="p"·data-group-id="4099369583-2">[</span><span·class="ss">stop</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4099369583-2">]</span><span·class="p"·data-group-id="4099369583-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="4980729377-3">(</span><span·class="p"·data-group-id="4980729377-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="4099369583-3">(</span><span·class="p"·data-group-id="4099369583-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
Max diff block lines reached; 8382/49353 bytes (16.98%) 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="9857971273-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="8740287707-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="9857971273-2">[</span><span·class="p"·data-group-id="9857971273-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="9857971273-3">}</span><span·class="p">,</span><span·class="w">169 ·</span><span·class="p"·data-group-id="8740287707-2">[</span><span·class="p"·data-group-id="8740287707-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="8740287707-3">}</span><span·class="p">,</span><span·class="w">
170 ··</span><span·class="p"·data-group-id="9857971273-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="9857971273-4">}</span><span·class="p">,</span><span·class="w">170 ··</span><span·class="p"·data-group-id="8740287707-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="8740287707-4">}</span><span·class="p">,</span><span·class="w">
171 ··</span><span·class="p"·data-group-id="9857971273-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9857971273-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:·f1663f4ee9810bfe39e94a3f9d71a921a2ee43172ab03bd7b1344d2856e47d43·...·]-5">}</span><span·class="p">,</span><span·class="w">171 ··</span><span·class="p"·data-group-id="8740287707-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8740287707-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:·a5e3a0071ee8a3f6299adcf200e803c81e7de9620e6172885b01d80f3bf7373a·...·]-5">}</span><span·class="p">,</span><span·class="w">
172 ··</span><span·class="p"·data-group-id="9857971273-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9857971273-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="9857971273-8">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·7a1e8fa57cb81110042ca79de6caea38be7f6f461fa209c6a9ba32142ff93b82·...·]-7">}</span><span·class="p">,</span><span·class="w">172 ··</span><span·class="p"·data-group-id="8740287707-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8740287707-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="8740287707-8">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·fab8c65f9352d57cab602dfce7f0267df11bf99ada62f5163878400853bccd3a·...·]-7">}</span><span·class="p">,</span><span·class="w">
173 ··</span><span·class="p"·data-group-id="9857971273-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9857971273-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="9857971273-10">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·c1386bc5c0aac1969dc65829a130273d9cc7ae7521376e8563dc6101356866b5·...·]-9">}</span><span·class="p">,</span><span·class="w">173 ··</span><span·class="p"·data-group-id="8740287707-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8740287707-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="8740287707-10">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·691f414fdaa24df8e72cd74cbd07748bcbb42d7c801ceeba7b8bb7a4ca530073·...·]-9">}</span><span·class="p">,</span><span·class="w">
174 ··</span><span·class="p"·data-group-id="9857971273-11">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9857971273-12">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·184,·SHA:·d8cb4254b891f3595a28636e7b7bc4f1460e3d871df1f353b1bd8fb28e7fd496·...·]-11">}</span><span·class="p">,</span><span·class="w">174 ··</span><span·class="p"·data-group-id="8740287707-11">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8740287707-12">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·184,·SHA:·f506cbee2071b36c86e924f33495b5a5d21f951d7cca713d57ef7bfa942a1d74·...·]-11">}</span><span·class="p">,</span><span·class="w">
175 ··</span><span·class="p"·data-group-id="9857971273-13">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9857971273-14">{</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="9857971273-15"[·...·truncated·by·diffoscope;·len:·158,·SHA:·593c76dc981c4884f987da15f702f93a9e69d316ed9a8075e8044a40f5c8dc39·...·]-13">}</span><span·class="p">,</span><span·class="w">175 ··</span><span·class="p"·data-group-id="8740287707-13">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8740287707-14">{</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="8740287707-15"[·...·truncated·by·diffoscope;·len:·158,·SHA:·2554b0341ab672d086a44eb26cde5b4f4fe54df8d0dc5f352c42de928ab984a2·...·]-13">}</span><span·class="p">,</span><span·class="w">
176 ··</span><span·class="p"·data-group-id="9857971273-16">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9857971273-17">[</span><span·class="p"·data-group-id="9857971273-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="9857971273-18">}</span><span·class="p"·data-group-id="9857971273-17">]</span><span·class="p"·data-group-id="9857971273-16">}</span><span·class="w"> 
177 ·</span><span·class="p"·data-group-id="9857971273-2">]</span><span·class="p"·data-group-id="9857971273-1">}</span><span·class="p">.</span></code></pre><h2·id="synchronizing-processes-during-startup"·class="section-heading">176 ··</span><span·class="p"·data-group-id="8740287707-16">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8740287707-17">[</span><span·class="p"·data-group-id="8740287707-18">{</span><span·class[·...·truncated·by·diffoscope;·len:·290,·SHA:·3ffc137f6474dc8c987adf83f737a7d7e62b835946714311e07ca355ad3e35a0·...·]">
 177 ·</span><span·class="p"·data-group-id="8740287707-2">]</span><span·class="p"·data-group-id="8740287707-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="2713653695-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="2324037179-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="2713653695-2">[</span><span·class="p"·data-group-id="2713653695-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="2713653695-3">}</span><span·class="p">,</span><span·class="w">192 ·</span><span·class="p"·data-group-id="2324037179-2">[</span><span·class="p"·data-group-id="2324037179-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="2324037179-3">}</span><span·class="p">,</span><span·class="w">
193 ··</span><span·class="p"·data-group-id="2713653695-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="2713653695-4">}</span><span·class="p">,</span><span·class="w">193 ··</span><span·class="p"·data-group-id="2324037179-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="2324037179-4">}</span><span·class="p">,</span><span·class="w">
194 ··</span><span·class="p"·data-group-id="2713653695-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-6">[</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pri[·...·truncated·by·diffoscope;·len:·197,·SHA:·4d748331c0b4718d080a838c17dd31bd1c57034a4d608ae76feb7cf83f5d8bb4·...·]-5">}</span><span·class="p">,</span><span·class="w">194 ··</span><span·class="p"·data-group-id="2324037179-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-6">[</span><span·class="ss">prim_app_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">pri[·...·truncated·by·diffoscope;·len:·197,·SHA:·c1c7f76771e1d314d454ca7df2a492436409c6fe943acd0d82801ce96f6c0f54·...·]-5">}</span><span·class="p">,</span><span·class="w">
195 ··</span><span·class="p"·data-group-id="2713653695-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="2713653695-8">]</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·a418e4abb8b57d2885a935f9a92783da0fb59dce3717b0fd9dce69bec8fb0ffc·...·]-7">}</span><span·class="p">,</span><span·class="w">195 ··</span><span·class="p"·data-group-id="2324037179-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-8">[</span><span·class="ss">prim_app_server</span><span·class="p"·data-group-id="2324037179-8">]</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·6d579707d21187af920821954acc3ca70f5650778b41a360d2d7f363082fa960·...·]-7">}</span><span·class="p">,</span><span·class="w">
196 ··</span><span·class="p"·data-group-id="2713653695-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="2713653695-10">]</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·0deac0b9583f29e025d06b501ad24d819a2775e7aea17e05c98362fbe9f2cac5·...·]-9">}</span><span·class="p">,</span><span·class="w">196 ··</span><span·class="p"·data-group-id="2324037179-9">{</span><span·class="ss">included_applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-10">[</span><span·class="ss">incl_app</span><span·class="p"·data-group-id="2324037179-10">]</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·b4df5dca11cf124fac4eeb1bafd5d5aa6e77c273329bc671dfffc2457879122a·...·]-9">}</span><span·class="p">,</span><span·class="w">
197 ··</span><span·class="p"·data-group-id="2713653695-11">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-12">[</span><span·class="p"·data-group-id="2713653695-13">{</span><span·class="ss">init</span><span·class="p[·...·truncated·by·diffoscope;·len:·581,·SHA:·b4b5d20734a82a7e10f0dfcdb70cbe9280f3ed791020658534ce5ef8085de03e·...·]-11">}</span><span·class="p">,</span><span·class="w">197 ··</span><span·class="p"·data-group-id="2324037179-11">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-12">[</span><span·class="p"·data-group-id="2324037179-13">{</span><span·class="ss">init</span><span·class="p[·...·truncated·by·diffoscope;·len:·581,·SHA:·152def7b1602446967bb8b80f64bccdf60a702b4c9c95a8be8ddcfaa3744f3de·...·]-11">}</span><span·class="p">,</span><span·class="w">
198 ··</span><span·class="p"·data-group-id="2713653695-17">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-18">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·183,·SHA:·f7970660472a06ced77dd0c321065a4a9667700ca614d0329e6ae9f3c3d2417c·...·]-17">}</span><span·class="p">,</span><span·class="w">198 ··</span><span·class="p"·data-group-id="2324037179-17">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-18">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·183,·SHA:·72b76edc4fbc9496c5d197a089d1fa6e265f3d3de86fe0cddf3258ef76ced718·...·]-17">}</span><span·class="p">,</span><span·class="w">
199 ··</span><span·class="p"·data-group-id="2713653695-19">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-20">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="2713653[·...·truncated·by·diffoscope;·len:·332,·SHA:·d3acf4ec4ada0d60ebfef51e436a010ff129674c6d4e388b4ff998054bd365f3·...·]-19">}</span><span·class="p">,</span><span·class="w">199 ··</span><span·class="p"·data-group-id="2324037179-19">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-20">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="2324037[·...·truncated·by·diffoscope;·len:·332,·SHA:·ae871d2a8d77609a1291fca2df958190fde6bac1478fc0201ae172a55fde5c37·...·]-19">}</span><span·class="p">,</span><span·class="w">
200 ··</span><span·class="p"·data-group-id="2713653695-23">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-24">[</span><span·class="p"·data-group-id="2713653695-25">{</span><span·class="ss">file</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·223,·SHA:·a9ef1daabaeffae5722a8c8eebe3de661d7a98cef23497739728609bcd91ffdb·...·]-23">}</span><span·class="w">200 ··</span><span·class="p"·data-group-id="2324037179-23">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-24">[</span><span·class="p"·data-group-id="2324037179-25">{</span><span·class="ss">file</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·223,·SHA:·c27078ea4aee6a8c1be9c911ab4398afa23b9fa3ab7dd735b3871e8943daa9b4·...·]-23">}</span><span·class="w">
201 ·</span><span·class="p"·data-group-id="2713653695-2">]</span><span·class="p"·data-group-id="2713653695-1">}</span><span·class="p">.</span><span·class="w">201 ·</span><span·class="p"·data-group-id="2324037179-2">]</span><span·class="p"·data-group-id="2324037179-1">}</span><span·class="p">.</span><span·class="w">
  
202 </span><span·class="p"·data-group-id="2713653695-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="2324037179-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="2713653695-27">[</span><span·class="p"·data-group-id="2713653695-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="2713653695-28">}</span><span·class="p">,</span><span·class="w">203 ·</span><span·class="p"·data-group-id="2324037179-27">[</span><span·class="p"·data-group-id="2324037179-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="2324037179-28">}</span><span·class="p">,</span><span·class="w">
204 ··</span><span·class="p"·data-group-id="2713653695-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="2713653695-29">}</span><span·class="p">,</span><span·class="w">204 ··</span><span·class="p"·data-group-id="2324037179-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="2324037179-29">}</span><span·class="p">,</span><span·class="w">
205 ··</span><span·class="p"·data-group-id="2713653695-30">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-31">[</span><span·class="ss">incl_app_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">i[·...·truncated·by·diffoscope;·len:·200,·SHA:·bdc7dd4258de393db5dce542f083b5bf5beaefffb05902b247011d91668f7bac·...·]-30">}</span><span·class="p">,</span><span·class="w">205 ··</span><span·class="p"·data-group-id="2324037179-30">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-31">[</span><span·class="ss">incl_app_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">i[·...·truncated·by·diffoscope;·len:·200,·SHA:·e4dbc6422d6c59b8b50f28db7119bd92eb3462e55b5220558f344496aa22ef44·...·]-30">}</span><span·class="p">,</span><span·class="w">
206 ··</span><span·class="p"·data-group-id="2713653695-32">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-33">[</span><span·class="p"·data-group-id="2713653695-33">]</span><span·class="p"·data-group-id="2713653695-32">}</span><span·class="p">,</span><span·class="w">206 ··</span><span·class="p"·data-group-id="2324037179-32">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-33">[</span><span·class="p"·data-group-id="2324037179-33">]</span><span·class="p"·data-group-id="2324037179-32">}</span><span·class="p">,</span><span·class="w">
207 ··</span><span·class="p"·data-group-id="2713653695-34">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-35">[</span><span·class="p"·data-group-id="2713653695-36">{</span><span·class="ss">go</span><span·class="p">[·...·truncated·by·diffoscope;·len:·265,·SHA:·2fa3ce8bd1b6b774f3e6f46cc8d06e7dad65a5ec6be957a77a49be752648afeb·...·]-34">}</span><span·class="p">,</span><span·class="w">207 ··</span><span·class="p"·data-group-id="2324037179-34">{</span><span·class="ss">start_phases</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-35">[</span><span·class="p"·data-group-id="2324037179-36">{</span><span·class="ss">go</span><span·class="p">[·...·truncated·by·diffoscope;·len:·265,·SHA:·c53e1044bb22ff0e2cb5f2995770ab014cc93c7ff152a71b20adf49d31e35366·...·]-34">}</span><span·class="p">,</span><span·class="w">
208 ··</span><span·class="p"·data-group-id="2713653695-38">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-39">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·183,·SHA:·cd0d8e0cc2eff274e165810f72da4c6377ad025e0f9042013b5a45541f876434·...·]-38">}</span><span·class="p">,</span><span·class="w">208 ··</span><span·class="p"·data-group-id="2324037179-38">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-39">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·183,·SHA:·503a24f189f07d1864170b5529ba250a1e570f3e740a3525dc58b392e1a02f86·...·]-38">}</span><span·class="p">,</span><span·class="w">
209 ··</span><span·class="p"·data-group-id="2713653695-40">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2713653695-41">{</span><span·class="ss">incl_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="2713653695-42">[·...·truncated·by·diffoscope;·len:·157,·SHA:·ba0246fa9272690b489e78ad2c1ab62befb5a1f98ed0035be0f0d02ee9cfdb27·...·]-40">}</span><span·class="w">209 ··</span><span·class="p"·data-group-id="2324037179-40">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2324037179-41">{</span><span·class="ss">incl_app_cb</span><span·class="p">,</span><span·class="p"·data-group-id="2324037179-42">[·...·truncated·by·diffoscope;·len:·157,·SHA:·13cd3a5d582704bc4b2fc91a867c9e404af63570a3fc7e9ac084426e15bc1f37·...·]-40">}</span><span·class="w">
210 ·</span><span·class="p"·data-group-id="2713653695-27">]</span><span·class="p"·data-group-id="2713653695-26">}</span><span·class="p">.</span></code></pre><p>When·starting·a·primary·application·with·included·applications,·the·primary210 ·</span><span·class="p"·data-group-id="2324037179-27">]</span><span·class="p"·data-group-id="2324037179-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="7405406954-1">(</span><span·class="ss">prim_app</span><span·class="p"·data-group-id="7405406954-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="9009510752-1">(</span><span·class="ss">prim_app</span><span·class="p"·data-group-id="9009510752-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="7405406954-2">(</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7405406954-3">[</span><span·class="p"·data-group-id="7405406954-3">]</span><span·class="p"·data-group-id="7405406954-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="9009510752-2">(</span><span·class="ss">normal</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9009510752-3">[</span><span·class="p"·data-group-id="9009510752-3">]</span><span·class="p"·data-group-id="9009510752-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="7405406954-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="7405406954-5">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·9fa8b5049828b7bdacc4f6ead581f88af67ad4b76266ee0e3e24083e6c3d3cb0·...·]-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="9009510752-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="9009510752-5">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·00cd57f007a473f8cd832643f410939e3b30a9c98dfdbfe696b18f3bbb05f2c7·...·]-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="7405406954-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="7405406954-7">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·4e10f360d9e2be3c0d2cd91aeb9bf33371c814fa437ada919c574fc939156920·...·]-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="9009510752-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="9009510752-7">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·065f448375ec0571573dca65ef66f8fd304d25e1cf4c43f57fdedf6be256ac56·...·]-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="7405406954-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="7405406954-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·47b554fd86c894bfd926a0830b97aad80cb6e5ebf870a719cc8083d745da027a·...·]-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="9009510752-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="9009510752-9">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·3a82b3043cfbf756d607eafca326e5b53e5e86885977b1a1d6b5d8dc253e5e2a·...·]-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="0398322464-1">(</span><span·class="ss">system_version</span><span·class="p"·data-group-id="0398322464-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="4007382784-1">(</span><span·class="ss">system_version</span><span·class="p"·data-group-id="4007382784-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="2267178728-1">(</span><span·class="p"·data-group-id="2267178728-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="1050979404-1">(</span><span·class="p"·data-group-id="1050979404-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
326 ····</span><span·class="p"·data-group-id="2267178728-2">{</span><span·class="ss">win32</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="2267178728-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">326 ····</span><span·class="p"·data-group-id="1050979404-2">{</span><span·class="ss">win32</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="1050979404-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="2267178728-3">(</span><span·class="p"·data-group-id="2267178728-3">)</span><span·class="p">;</span><span·class="w">327 ········</span><span·class="nf">do_windows_specific</span><span·class="p"·data-group-id="1050979404-3">(</span><span·class="p"·data-group-id="1050979404-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="2267178728-4">(</span><span·class="p"·data-group-id="2267178728-4">)</span><span·class="w">329 ········</span><span·class="nf">do_fallback_or_exit</span><span·class="p"·data-group-id="1050979404-4">(</span><span·class="p"·data-group-id="1050979404-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="3879672228-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="3879672[·...·truncated·by·diffoscope;·len:·649,·SHA:·8d4844dca11a28096ec782fa6f00c0d82a899ced74348f5f6b1a795f50db2bca·...·]-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="3568643630-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="3568643[·...·truncated·by·diffoscope;·len:·649,·SHA:·f8329e14f4d5f66c181f6104925fb916caf14b192e6538ad1e6288571a9fc1c0·...·]-1">]</span><span·class="p">.</span><span·class="w">
124 </span><span·class="p"·data-group-id="3879672228-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="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·14aafce19fd14864944473da8123d0e95570d644d262b31c2defc880951fd237·...·]-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="3568643630-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="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·779883b33b32aea819168045235df19e9a34e69051ea89009a28a943a40affc5·...·]-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.3/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.3/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="8797002276-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="879700[·...·truncated·by·diffoscope;·len:·861,·SHA:·e42d14d488e61fb3e53df05a4510a4dfd1fd0ec82c349d6f949fb5501dbb4cdc·...·]6-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="9878407946-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="987840[·...·truncated·by·diffoscope;·len:·861,·SHA:·7ab940c9c825de9723d0940e397bd99a2d00416e424bf498d515571115e09e2d·...·]6-1">]</span><span·class="p">.</span><span·class="w">
128 </span><span·class="p"·data-group-id="8797002276-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="8797002276-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="9878407946-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="9878407946-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="7091310819-1">[</span><span·class="p"·data-group-id="7091310819-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="7091310819-2">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·739,·SHA:·7a65ad041d783763a1813c868db3dae3bcf6eee8e6c97e49f02106e7f6015462·...·]-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="3884351416-1">[</span><span·class="p"·data-group-id="3884351416-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="3884351416-2">}</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·739,·SHA:·f2a72124981174b9e3461f5eb070dce37329d6ce5b45028b4cfd7bd0b4d4b0f7·...·]-1">]</span><span·class="p">.</span><span·class="w">
130 </span><span·class="p"·data-group-id="7091310819-5">[</span><span·class="p"·data-group-id="7091310819-6">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="7091310819-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·1011,·SHA:·f1917cb6083bf76297b9de1cbb758e3d60b23abed042d4f547c08eb2179acfdf·...·]-5">]</span></code></pre><h2·id="quick-sort"·class="section-heading">130 </span><span·class="p"·data-group-id="3884351416-5">[</span><span·class="p"·data-group-id="3884351416-6">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="3884351416-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·1011,·SHA:·6b0c28ec1ee98a9743aa06a9dffedcef18302483c75cb3a305ed0ee4ecc00b16·...·]-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="5303982445-1">(</span><span·class="p"·data-group-id="5303982445-2">[</span><span·class="p"·data-group-id="5303982445-2">]</span><span·class="p"·data-group-id="5303982445-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·4d5c1818e513786989920e15876932bf8fe9fe438f02d97dedae44a419440fad·...·]-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="4706690918-1">(</span><span·class="p"·data-group-id="4706690918-2">[</span><span·class="p"·data-group-id="4706690918-2">]</span><span·class="p"·data-group-id="4706690918-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·519f69afa8f7feacc9451b7ba52db032059d06465fa3c3d032c224134ff74d8f·...·]-3">]</span><span·class="p">;</span><span·class="w">
137 </span><span·class="nf">sort</span><span·class="p"·data-group-id="5303982445-4">(</span><span·class="p"·data-group-id="5303982445-5">[</span><span·class="p">_</span><span·class="p"·data-group-id="5303982445-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:·78e756f25e820613fce0a35854597888d4a2e46dd800180ba2847b424d41a97e·...·]-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="4706690918-4">(</span><span·class="p"·data-group-id="4706690918-5">[</span><span·class="p">_</span><span·class="p"·data-group-id="4706690918-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:·3942cda762a7a5866bffd04b43a0fccaf1fc0046acaec4572e240f7189dfc237·...·]-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="5303982445-6">(</span><span·class="p"·data-group-id="5303982445-7">[</span><span·class="n">Pivot</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="5303982445-7">]</span><span·class="p"·data-group-id="5303982445-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="4706690918-6">(</span><span·class="p"·data-group-id="4706690918-7">[</span><span·class="n">Pivot</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4706690918-7">]</span><span·class="p"·data-group-id="4706690918-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="5303982445-8">(</span><span·class="p"·data-group-id="5303982445-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:·c7930f924822d790842be62e0acca3ab5498c8f0c8c04daa94b47ed52b62be26·...·]-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="4706690918-8">(</span><span·class="p"·data-group-id="4706690918-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:·44f4ef1ff438dd8cd4bf4a45c372b4f6e18d8f828b377bdee7abd4373a6cf3ae·...·]-8">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">
140 ····</span><span·class="p"·data-group-id="5303982445-10">[</span><span·class="n">Pivot</span><span·class="p"·data-group-id="5303982445-10">]</span><span·class="w">·</span><span·class="o">++</span><span·class="w">140 ····</span><span·class="p"·data-group-id="4706690918-10">[</span><span·class="n">Pivot</span><span·class="p"·data-group-id="4706690918-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="5303982445-11">(</span><span·class="p"·data-group-id="5303982445-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:·62648b00c8c00737c00dfd75ece2ff10deff9e9ffdbd0526d59d1f855c874e54·...·]-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="4706690918-11">(</span><span·class="p"·data-group-id="4706690918-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:·676be9da3c6141b06113c48a4a87365aab957b6920f536e6620248ce87bbc164·...·]-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.1/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.1/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="5269751117-1">(</span><span·class="p"·data-group-id="5269751117-2">[</span><span·class="p"·data-group-id="5269751117-2">]</span><span·class="p"·data-group-id="5269751117-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·200,·SHA:·9c1347c999d4b84468e824d45212ea126fbeab9950a811a3503fb01e0237e2e8·...·]-3">]</span><span·class="p">;</span><span·class="w">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="5157021728-1">(</span><span·class="p"·data-group-id="5157021728-2">[</span><span·class="p"·data-group-id="5157021728-2">]</span><span·class="p"·data-group-id="5157021728-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·200,·SHA:·7a8e96d7e1259830582537103564828d7d37bc7c6c8ede3759054aadf112d237·...·]-3">]</span><span·class="p">;</span><span·class="w">
159 </span><span·class="nf">perms</span><span·class="p"·data-group-id="5269751117-5">(</span><span·class="n">L</span><span·class="p"·data-group-id="5269751117-5">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5269751117-6">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·850,·SHA:·f51197ba8b6797eb23073df6062e1961df49b33d4974393da361c467d2271130·...·]-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·lists159 </span><span·class="nf">perms</span><span·class="p"·data-group-id="5157021728-5">(</span><span·class="n">L</span><span·class="p"·data-group-id="5157021728-5">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5157021728-6">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·850,·SHA:·5fa3af767870406ef9659d86e41f0eb9090361c3c27e43c439449d9765be0248·...·]-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="2687563274-1">(</span><span·class="p"·data-group-id="2687563274-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="2687563274-2">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·88cb2d174e5d4da1af79b0553d6ddc64b536dce8b037050448102db549e9de0f·...·]-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="3864191459-1">(</span><span·class="p"·data-group-id="3864191459-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="3864191459-2">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·0f8cf510e5293c5ab18f3f118b130fe852096c9cec097bc310e79387d46788b2·...·]-1">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="2687563274-3">[</span><span·class="p"·data-group-id="2687563274-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="2687563274-4">]</span><span[·...·truncated·by·diffoscope;·len:·1301,·SHA:·79fdee11766716d22326b00b7fac2f99466dd711483ff85c4a533cd796538cd7·...·]-3">]</span></code></pre><h2·id="pythagorean-triplets"·class="section-heading">162 </span><span·class="p"·data-group-id="3864191459-3">[</span><span·class="p"·data-group-id="3864191459-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="3864191459-4">]</span><span[·...·truncated·by·diffoscope;·len:·1301,·SHA:·58434f69e3eb89f04fc5156eb521ea7c89fdbf068a087aa0b803288581947aed·...·]-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="7216224778-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="7216224778-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="1852805199-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="1852805199-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="p"·data-group-id="7216224778-2">[</span><span·class="w">·</span><span·class="p"·data-group-id="7216224778-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="721622[·...·truncated·by·diffoscope;·len:·4,·SHA:·449cac0b61bf9dbf44fd770c15a065251eadfaa2f42dcfd2a13e17abc4c1b158·...·]-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">172 ····</span><span·class="p"·data-group-id="1852805199-2">[</span><span·class="w">·</span><span·class="p"·data-group-id="1852805199-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="185280[·...·truncated·by·diffoscope;·len:·4,·SHA:·aced70051e58a8841d88279bded07894af517957690986ff6ceff4f11870ae3d·...·]-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="7216224778-4">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="7216224778-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="1852805199-4">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="1852805199-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="7216224778-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="7216224778-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="1852805199-5">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="1852805199-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="7216224778-6">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="7216224778-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="1852805199-6">(</span><span·class="mi">1</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="1852805199-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="7216224778-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="9840854591-1">(</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·e25dae9205599b2fbff705fd8098a5ac7951bd1eb5fda2b7eb7e051256b06c55·...·]-1">)</span><span·class="p">.</span><span·class="w">178 ····</span><span·class="p"·data-group-id="1852805199-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="7003630489-1">(</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·04df41f7bab0688719c719d6f6a0c84697173c1562487ee65a833a7c76272217·...·]-1">)</span><span·class="p">.</span><span·class="w">
179 </span><span·class="p"·data-group-id="9840854591-2">[</span><span·class="p"·data-group-id="9840854591-2">]</span><span·class="p">.</span><span·class="gp·unselectable">179 </span><span·class="p"·data-group-id="7003630489-2">[</span><span·class="p"·data-group-id="7003630489-2">]</span><span·class="p">.</span><span·class="gp·unselectable">
180 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="9840854591-3">(</span><span·class="mi">11</span><span·class="p"·data-group-id="9840854591-3">)</span><span·class="p">.</span><span·class="w">180 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="7003630489-3">(</span><span·class="mi">11</span><span·class="p"·data-group-id="7003630489-3">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="p"·data-group-id="9840854591-4">[</span><span·class="p"·data-group-id="9840854591-4">]</span><span·class="p">.</span><span·class="gp·unselectable">181 </span><span·class="p"·data-group-id="7003630489-4">[</span><span·class="p"·data-group-id="7003630489-4">]</span><span·class="p">.</span><span·class="gp·unselectable">
182 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="9840854591-5">(</span><span·class="mi">12</span><span·class="p"·data-group-id="9840854591-5">)</span><span·class="p">.</span><span·class="w">182 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="7003630489-5">(</span><span·class="mi">12</span><span·class="p"·data-group-id="7003630489-5">)</span><span·class="p">.</span><span·class="w">
183 </span><span·class="p"·data-group-id="9840854591-6">[</span><span·class="p"·data-group-id="9840854591-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="9840854591-7">}</span><span[·...·truncated·by·diffoscope;·len:·289,·SHA:·2c302c940529b5f333a210f48b1bdbd1f3fada9c0058d56d13269ef8f6fa0978·...·]-6">]</span><span·class="gp·unselectable">183 </span><span·class="p"·data-group-id="7003630489-6">[</span><span·class="p"·data-group-id="7003630489-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="7003630489-7">}</span><span[·...·truncated·by·diffoscope;·len:·289,·SHA:·53745d6f4d55500c4300c6fbc5ba26eb80c5c59d909932522308406c1090ed4d·...·]-6">]</span><span·class="gp·unselectable">
184 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="9840854591-9">(</span><span·class="mi">50</span><span·class="p"·data-group-id="9840854591-9">)</span><span·class="p">.</span><span·class="w">184 &gt;·</span><span·class="nf">pyth</span><span·class="p"·data-group-id="7003630489-9">(</span><span·class="mi">50</span><span·class="p"·data-group-id="7003630489-9">)</span><span·class="p">.</span><span·class="w">
185 </span><span·class="p"·data-group-id="9840854591-10">[</span><span·class="p"·data-group-id="9840854591-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="9840854591-11">}</span><span·class="p">,</span><span·class="w">185 </span><span·class="p"·data-group-id="7003630489-10">[</span><span·class="p"·data-group-id="7003630489-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="7003630489-11">}</span><span·class="p">,</span><span·class="w">
186 ·</span><span·class="p"·data-group-id="9840854591-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="9840854591-12">}</span><span·class="p">,</span><span·class="w">186 ·</span><span·class="p"·data-group-id="7003630489-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="7003630489-12">}</span><span·class="p">,</span><span·class="w">
187 ·</span><span·class="p"·data-group-id="9840854591-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="9840854591-13">}</span><span·class="p">,</span><span·class="w">187 ·</span><span·class="p"·data-group-id="7003630489-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="7003630489-13">}</span><span·class="p">,</span><span·class="w">
188 ·</span><span·class="p"·data-group-id="9840854591-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="9840854591-14">}</span><span·class="p">,</span><span·class="w">188 ·</span><span·class="p"·data-group-id="7003630489-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="7003630489-14">}</span><span·class="p">,</span><span·class="w">
189 ·</span><span·class="p"·data-group-id="9840854591-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="9840854591-15">}</span><span·class="p">,</span><span·class="w">189 ·</span><span·class="p"·data-group-id="7003630489-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="7003630489-15">}</span><span·class="p">,</span><span·class="w">
190 ·</span><span·class="p"·data-group-id="9840854591-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="9840854591-16">}</span><span·class="p">,</span><span·class="w">190 ·</span><span·class="p"·data-group-id="7003630489-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="7003630489-16">}</span><span·class="p">,</span><span·class="w">
191 ·</span><span·class="p"·data-group-id="9840854591-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="9840854591-17">}</span><span·class="p">,</span><span·class="w">191 ·</span><span·class="p"·data-group-id="7003630489-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="7003630489-17">}</span><span·class="p">,</span><span·class="w">
192 ·</span><span·class="p"·data-group-id="9840854591-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="9840854591-18">}</span><span·class="p">,</span><span·class="w">192 ·</span><span·class="p"·data-group-id="7003630489-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="7003630489-18">}</span><span·class="p">,</span><span·class="w">
193 ·</span><span·class="p"·data-group-id="9840854591-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="9840854591-19">}</span><span·class="p">,</span><span·class="w">193 ·</span><span·class="p"·data-group-id="7003630489-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="7003630489-19">}</span><span·class="p">,</span><span·class="w">
194 ·</span><span·class="p"·data-group-id="9840854591-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="9840854591-20">}</span><span·class="p">,</span><span·class="w">194 ·</span><span·class="p"·data-group-id="7003630489-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="7003630489-20">}</span><span·class="p">,</span><span·class="w">
195 ·</span><span·class="p"·data-group-id="9840854591-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="9840854591-21">}</span><span·class="p">,</span><span·class="w">195 ·</span><span·class="p"·data-group-id="7003630489-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="7003630489-21">}</span><span·class="p">,</span><span·class="w">
196 ·</span><span·class="p"·data-group-id="9840854591-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="9840854591-22">}</span><span·class="p"·data-group-id="9840854591-10">]</span[·...·truncated·by·diffoscope;·len:·282,·SHA:·d54b93f032fd53f177097b0dd62135556c56bbaa2d80fd01ae663bf16986e518·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">196 ·</span><span·class="p"·data-group-id="7003630489-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="7003630489-22">}</span><span·class="p"·data-group-id="7003630489-10">]</span[·...·truncated·by·diffoscope;·len:·282,·SHA:·35be4bd2bac8b93fb0ed3392be4b4f6337c9de19772163e10a80220649fd5a10·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ···</span><span·class="p"·data-group-id="8562573656-2">[</span><span·class="p"·data-group-id="8562573656-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="8562573656-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">197 ···</span><span·class="p"·data-group-id="6626419449-2">[</span><span·class="p"·data-group-id="6626419449-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="6626419449-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="8562573656-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="8562573656-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="6626419449-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="6626419449-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="8562573656-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="8562573656-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="6626419449-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="6626419449-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="8562573656-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="8562573656-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="6626419449-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="6626419449-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="8562573656-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="6626419449-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="4918822915-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="4918822915-1">)</span><span·class="w">···</span><span·class="p">-&gt;</span><span·class="w">··</span><span·class="p"·data-group-id="4918822915-2">[</span><span·class="n">X</span><[·...·truncated·by·diffoscope;·len:·411,·SHA:·ceec3854b1452cd7ad7d17fe30d1dd867587e6fdc40440bde2b13f3d7a44632f·...·]-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="8019454708-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="8019454708-1">)</span><span·class="w">···</span><span·class="p">-&gt;</span><span·class="w">··</span><span·class="p"·data-group-id="8019454708-2">[</span><span·class="n">X</span><[·...·truncated·by·diffoscope;·len:·411,·SHA:·48c7ec3db7dbd7d515abb78ac4d43b19e9a446047fceeeb292e5ed2a96974671·...·]-2">]</span><span·class="p">.</span><span·class="w">
210 </span><span·class="nf">map</span><span·class="p"·data-group-id="4918822915-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="4918822915-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·440,·SHA:·fa1ebd4bb7ae7d59edfe85dc797a65de8ae2ae93462e53933b7c0cec67a2fbc2·...·]-4">]</span><span·class="p">.</span><span·class="w">210 </span><span·class="nf">map</span><span·class="p"·data-group-id="8019454708-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="8019454708-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·440,·SHA:·6724a01b5c4b3a2ab9e9dd0c9a28d5b04a7cec0b7a43c6ae0534617bd857b0b2·...·]-4">]</span><span·class="p">.</span><span·class="w">
211 </span><span·class="nf">filter</span><span·class="p"·data-group-id="4918822915-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="4918822915-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·514,·SHA:·0c0c4259350446b171cc882b11869990f603567db8310a92444a7110370b9825·...·]-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="8019454708-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="8019454708-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·514,·SHA:·af7d421b67711875b6caa388c2714a7d73b8caed1a8e75b5373e82b2f82e0bd5·...·]-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="1473955653-1">(</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="1473955653-2">[</span><span·class="p"·data-group-id="1473955653-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·754,·SHA:·a8cc3794424efbecf6f95e871ce32ec6a118700267818507bb19d15345101f18·...·]-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="6757012765-1">(</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="6757012765-2">[</span><span·class="p"·data-group-id="6757012765-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span[·...·truncated·by·diffoscope;·len:·754,·SHA:·8da0044b28122f1f3ece954757fe0119d7e7604bc5ca1c3febb664ce0db22656·...·]-1">)</span><span·class="p">.</span><span·class="w">
224 </span><span·class="p"·data-group-id="1473955653-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="1473955653-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="6757012765-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="6757012765-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="7232061076-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="7232061076-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">··</span><span·cla[·...·truncated·by·diffoscope;·len:·655,·SHA:·0306cb9ff7ba3486c29fa578823df5b32a44525bc36174b2456dc1847c88d149·...·]-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="7348218579-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="7348218579-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">··</span><span·cla[·...·truncated·by·diffoscope;·len:·655,·SHA:·4eb3dcf3ebab749f311c73e5966eeef257c0dcbbbdaf37fac4c91460870ca1af·...·]-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="2000000612-1">(</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="2000000612-2">[</span><span·class="p"·data-group-id="2000000612-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2000000612-3">}</span><span·class="p">,</span><span·class="p"·data-group-id="2000000612-4">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2000000612-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="2000000612-5">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="2000000612-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="2000000612-6">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="2000000612-6">}</span><span·class="p"·data-group-id="2000000612-2">]</span><span·class="p"·data-group-id="2000000612-1">)</span><span·class="p">.</span><span·class="w"> 
227 </span><span·class="p"·data-group-id="2000000612-7">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="2000000612-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="1205956290-1">[</span><span·class="p"·data-group-id="1205956290-2">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p"·data-group-id="1205956290-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="1205956290-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="1205956290-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="1205956290-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="1205956290-4">]</span><span·class="p"·data-group-id="1205956290-1">]</span><span·class="p">.</span><span·class="w"> 
229 </span><span·class="p"·data-group-id="1205956290-5">[</span><span·class="p"·data-group-id="1205956290-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="1205956290-6">}</span><span·class="p">[·...·truncated·by·diffoscope;·len:·1775,·SHA:·352becc1bae2e2bc8e6f0d7a04c2e9da420298fe2758969d4eb98e23958abead·...·]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="5210995266-1">(</span><span·class="ss">b</span><span·cla[·...·truncated·by·diffoscope;·len:·1006,·SHA:·b561b73c1004fecdfe14860747583aae659b4b7a7464778ac979d2d8b6fdb65b·...·]
 227 </span><span·class="p"·data-group-id="5210995266-7">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="5210995266-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="1862658499-1">[</span><span·class="p"·data-group-id="1862658499-2">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Y</span><span·class="p"·data-group-id="1862658499-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="1862658499-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="1862658499-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="1862658499-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="1862658499-4">]</span><span·class="p"·data-group-id="1862658499-1">]</span><span·class="p">.</span><span·class="w">
 229 </span><span·class="p"·data-group-id="1862658499-5">[</span><span·class="p"·data-group-id="1862658499-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="1862658499-6">}</span><span·class="p">,</span><span·class="p"·data-group-id="1862658499-7">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="1862658499-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="1862658499-8">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="1862658499-8">}</span><span·class="p">,</span><span·class="p"·data-group-id="1862658499-9">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="1862658499-9">}</span><span·class="p">,</span><span·class="p"·data-group-id="1862658499-10">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="1862658499-10">}</span><span·class="p">,</span><span·class="p"·data-group-id="1862658499-11">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="1862658499-11">}</span><span·class="p">,</span><span·class="p"·data-group-id="1862658499-12">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="1862658499-12">}</span><span·class="p">,</span><span·class="p"·data-group-id="1862658499-13">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="1862658499-13">}</span><span·class="p">,</span><span·class="p"·data-group-id="1862658499-14">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="1862658499-14">}</span><span·class="p"·data-group-id="1862658499-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="6136830802-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6136830802-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="0769648478-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0769648478-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="6136830802-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:·248,·SHA:·daab06b7bfed3628bf7afe851300d06294ef6589189f3cd451d6f8bd9c8ee275·...·]-2">]</span><span·class="w">233 ····</span><span·class="p"·data-group-id="0769648478-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:·248,·SHA:·65b3e8c31fcaa474185eb55cab2bf3aaf62db2b62d2845512de765783836c8ee·...·]-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="8294652341-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8294652341-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="3249942526-1">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3249942526-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="8294652341-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:·0aa7e3d6f98d300f42bb786ce352563e899021fd514ab1e721274501f43a9471·...·]-2">]</span><span·class="w">236 ····</span><span·class="p"·data-group-id="3249942526-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:·c6831a8c70e192523f4d160e55345e3bf1b6d35ffe410edafcf671250eef1a37·...·]-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/78733 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.1/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.1/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="9351471491-1">(</span><span·class="p"·data-group-id="9351471491-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9351471491-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·59,·SHA:·89b480261fc2ff0a3910c7446a66c63be188352d6e3b002797000e2633d81af1·...·]-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="9976848650-1">(</span><span·class="p"·data-group-id="9976848650-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9976848650-2">]</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·59,·SHA:·d838e50ed542fe836ba3ec30846592326e09bf5c97345b959d387a386cd44a2f·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
128 ····</span><span·class="p"·data-group-id="9351471491-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">append</span><span·class="p"·data-group-id="9351471491-4">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span[·...·truncated·by·diffoscope;·len:·89,·SHA:·a5981ea54932f056eab87cb2c1c54a228d58810eb427de9ebf600dc47183dacf·...·]-3">]</span><span·class="p">;</span><span·class="w">128 ····</span><span·class="p"·data-group-id="9976848650-3">[</span><span·class="n">H</span><span·class="p">|</span><span·class="nf">append</span><span·class="p"·data-group-id="9976848650-4">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span[·...·truncated·by·diffoscope;·len:·89,·SHA:·0beade326d0c09f52f2a085ccc8577707faa4296f690535fa3f49c0942c09eb3·...·]-3">]</span><span·class="p">;</span><span·class="w">
129 </span><span·class="nf">append</span><span·class="p"·data-group-id="9351471491-5">(</span><span·class="p"·data-group-id="9351471491-6">[</span><span·class="p"·data-group-id="9351471491-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="9351471491-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="9976848650-5">(</span><span·class="p"·data-group-id="9976848650-6">[</span><span·class="p"·data-group-id="9976848650-6">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tail</span><span·class="p"·data-group-id="9976848650-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="7890370041-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="7890370041-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="2579004610-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="2579004610-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="7890370041-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:·be71713e73fd51af985149476f9470512b27683210fb23f4a2d7f9e60e00477c·...·]-2">)</span><span·class="p">.</span><span·class="w">133 ····</span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="2579004610-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:·5d531eb299c66a66f018949627dfe579d1e39a084206245dddc457247f9403a8·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
134 </span><span·class="nf">bad_fib</span><span·class="p"·data-group-id="7890370041-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:·b905c306807836ac0561d0c0a57f5087c4f54c2033eeb92d883e5da6c2a446ce·...·]-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="2579004610-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:·9bcc23dcc77dabdba8d605cb79c1c9bc83bc00290229f478a5b42520a421cbcd·...·]-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="7890370041-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·cla[·...·truncated·by·diffoscope;·len:·59,·SHA:·43aad7f2f445523fd88e722b4b58525ed300ec856c275e22ddd38b95b395227c·...·]-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="2579004610-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·cla[·...·truncated·by·diffoscope;·len:·59,·SHA:·da6033a216469b8c7dc3e8b98522393d6559b9480561162a748d8e11f3518bb2·...·]-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="7890370041-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:·464,·SHA:·6f7be2482b9ab412efaf0e955a20f892f1180ec78520c8f31637aee07f21ab44·...·]-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="2579004610-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:·464,·SHA:·dd4369940aa4d848e2595d6d9d37f977cf4bf9f0850f8abc0a0d68fdd7b66e03·...·]-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="8807031729-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="8807031729-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="5243463689-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="5243463689-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="8807031729-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:·130,·SHA:·5faa96ae8a23ed8a7e383c0d0a3e6f16d5c75fecf409967cd828b1393ad0385c·...·]9-2">)</span><span·class="p">.</span><span·class="w">140 ····</span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="5243463689-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:·130,·SHA:·a0c98b2b34533831c0076e1c923025cd13aa01a5658c5f4d0f04c93ab3713378·...·]9-2">)</span><span·class="p">.</span><span·class="w">
  
141 </span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="8807031729-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:·107,·SHA:·1df2eab74063fe92d0009b812c32f517abcc6e874e747a59f78177e6ecd1d2f1·...·]9-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="5243463689-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:·107,·SHA:·7e8d5cb967773809141c14f430c22a778b9d639ad5cadae77530cf5a31e7d4ef·...·]9-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="8807031729-5">(</span><span·class="n">Fibs</span><span·class="p"·data-group-id="8807031729-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="5243463689-5">(</span><span·class="n">Fibs</span><span·class="p"·data-group-id="5243463689-5">)</span><span·class="p">;</span><span·class="w">
143 </span><span·class="nf">tail_recursive_fib</span><span·class="p"·data-group-id="8807031729-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:·58,·SHA:·8081f6d13bf2e94baa685e256544822998ff5392c34317d889232c0c75de04b8·...·]9-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="5243463689-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:·58,·SHA:·46b0559960a3d4249292f490bb3b28f661e780b334d04efe7ecfa810305eb89e·...·]9-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="8807031729-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:·414,·SHA:·b99cf4de988cd9f157b87582f63ab61befda001a612c6d6dfd7e68ae80110e4f·...·]9-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="5243463689-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:·414,·SHA:·fb57436a08ca9ad1fafcd7cee20aed52ceb2f7afdb5d3de96e053e764f1964ee·...·]9-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="0963934524-1">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="0963934524-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="0963934524-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·676,·SHA:·ad184b8e67df9459b817ca1b108b2be1f6baa56a3eb349fdd1a3a4a9f73ae5bc·...·]-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="5317840272-1">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="5317840272-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="5317840272-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·676,·SHA:·cf947edb009a0a90f6ad6d275733b834669c92eb6c69ac62303ae0282652510e·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
151 ····</span><span·class="p"·data-group-id="0023356064-3">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="0023356064-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="0023356064-4">)</span><span·class="p">|</span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·234,·SHA:·2599e5ca901698a29f83c94ea18ec2222153c2b8591c7805f568d60d5f71eedb·...·]-3">]</span><span·class="p">;</span><span·class="w">151 ····</span><span·class="p"·data-group-id="3357264578-3">[</span><span·class="n">Expr</span><span·class="p"·data-group-id="3357264578-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="3357264578-4">)</span><span·class="p">|</span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·234,·SHA:·a4698b8cf28cc2ba32002e27fea973ece7bda7dde514913e9c979fc043479dd0·...·]-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="0023356064-6">(</span><span·class="p"·data-group-id="0023356064-7">[</span><span·class="p"·data-group-id="0023356064-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:·3a42635f015896541f6de76f3ade8caa66a084edf47987fdbc663d166e4d052a·...·]-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="3357264578-6">(</span><span·class="p"·data-group-id="3357264578-7">[</span><span·class="p"·data-group-id="3357264578-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:·73b5eae5c308f6fa8e58a9b62df6a86fd86191b565889b6414178a9dcbbdd402·...·]-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="4088339281-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="4088339281-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="4088339281-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·92bd6860ae284d98c6bb52acea304a7e584ffe60344f7cc7e06399253ab27cef·...·]-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="2534705283-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="2534705283-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="2534705283-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·d6f82a8a945e45af5b7028ee1cd70116d1413ea224abb789c6ca45e48549c009·...·]-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="9772247113-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="9772247113-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="9772247113-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·daea47770ad04e54007d296e6bd72d9c49b80e479bb5b767a876928b3549c387·...·]-1">]</span><span·class="p">;</span><span·class="w">156 ········</span><span·class="p"·data-group-id="1510294380-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="1510294380-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="1510294380-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·6c566a541050fde05410d9e87304e2ecc436483178f285a998609803cc9566d8·...·]-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="9772247113-3">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9772247113-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="1510294380-3">(</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1510294380-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="1341187304-1">(</span><span·class="p"·data-group-id="1341187304-2">[</span><span·class="n">E</span><span·class="p">|</span><span·class="n">Tail</span><span·class="p"·data-group-id="1341187304-2">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·cc8248cd091e278bbeaef6ccfd87583debed4520f7e2fecdc0bc66774a7c67d3·...·]-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="9556739539-1">(</span><span·class="p"·data-group-id="9556739539-2">[</span><span·class="n">E</span><span·class="p">|</span><span·class="n">Tail</span><span·class="p"·data-group-id="9556739539-2">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·bd256400b23f3315c82e19e4339e8af94ca8cdf263366f65085e0c613d8be5b2·...·]-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="1341187304-3">(</span><span·class="n">E</span><span·class="p"·data-group-id="1341187304-3">)</span><span·class="p">,</span><span·class="w">162 ····</span><span·class="n">Expr</span><span·class="p"·data-group-id="9556739539-3">(</span><span·class="n">E</span><span·class="p"·data-group-id="9556739539-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="1341187304-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="1341187304-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="9556739539-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="9556739539-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="1341187304-5">(</span><span·class="p"·data-group-id="1341187304-6">[</span><span·class="p"·data-group-id="1341187304-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[·...·truncated·by·diffoscope;·len:·194,·SHA:·0005d397935cfb8eec78bb44993ba1de37b8fc0a2ebf18b7ea7669d15874611f·...·]-7">]</span><span·class="p">.</span></code></pre><p>The·compiler·also·understands·that·assigning·to·<code·class="inline">_</code>·means·that·the·value·will164 </span><span·class="nf">&#39;lc^0&#39;</span><span·class="p"·data-group-id="9556739539-5">(</span><span·class="p"·data-group-id="9556739539-6">[</span><span·class="p"·data-group-id="9556739539-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[·...·truncated·by·diffoscope;·len:·194,·SHA:·58cd8d1b186b770333f540296da589e6958fe6574a633e192a9888ee0f888495·...·]-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-id="2477237665-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="2477237665-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="2477237665-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·e8caccb50629fa788999444a830885fb8946c1ee27fec8a978bab6dc753c4a0b·...·]-1">]</span><span·class="p">,</span><span·class="w">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="1955195556-1">[</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">put_chars</span><span·class="p"·data-group-id="1955195556-2">(</span><span·class="n">E</span><span·class="p"·data-group-id="1955195556-2">)</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·220,·SHA:·58b5ef04e8ecb191c917de3d1ef3ec22c740a5fc9c9e04f2f5e0097ce8ebcdc8·...·]-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.1/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.1/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.1/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.1/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.3/doc/html/erlang.html#list_to_binary/1"><code·class="inline">list_to_binary/1</code></a>·or176 <a·href="../../erts-15.2.3/doc/html/erlang.html#list_to_binary/1"><code·class="inline">list_to_binary/1</code></a>·or
177 <a·href="../../erts-15.2.3/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.1/doc/html/lists.html#append/1"><code·class="inline">lists:append/1</code></a>177 <a·href="../../erts-15.2.3/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.1/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="4211923357-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="4211923357-1">)</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·[·...·truncated·by·diffoscope;·len:·953,·SHA:·a337c824f333c1502efd88b9a9bf35d3fffb729221d2446643bc00e277df7d7e·...·]-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="4091622696-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="4091622696-1">)</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·class="makeup·erlang"·[·...·truncated·by·diffoscope;·len:·953,·SHA:·10b7038911014ea33e89bc658a3026483c0e474505f47314aeb00f9daf9a177c·...·]-1">]</span><span·class="p">,</span><span·class="w">
179 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="4117611113-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="4117611113-2">)</span></code></pre><p>Instead:</p><p><strong>DO</strong></p><pre><code·class[·...·truncated·by·diffoscope;·len:·336,·SHA:·dfdcc6e5edf4bb153a45a9f5330fa7e267806f0c2fc8a2e2d65fcae31ecb755f·...·]-1">]</span><span·class="p">,</span><span·class="w">179 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="5713177064-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="5713177064-2">)</span></code></pre><p>Instead:</p><p><strong>DO</strong></p><pre><code·class[·...·truncated·by·diffoscope;·len:·336,·SHA:·b9c5b02474ee0087a5a509bd00fdfbe4cd086da61dbd815e779619aadf3027be·...·]-1">]</span><span·class="p">,</span><span·class="w">
180 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="8279288470-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="8279288470-2">)</span></code></pre><p><strong>DO</strong></p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·831,·SHA:·acf3cbde9b03eedaec9a9f32a4d96f4182f6fe5eef901eba1ada4b6e336975f3·...·]0-1">)</span><span·class="p">.</span><span·class="w">180 </span><span·class="nf">port_command</span><span·class="p"·data-group-id="5717279912-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="5717279912-2">)</span></code></pre><p><strong>DO</strong></p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·831,·SHA:·677c531d0495978a8d85941513e5591b3b15e5a93bd9f708b9c895595fdf9e4b·...·]0-1">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="p"·data-group-id="1466159300-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="1466159300-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="3172025627-1">(</span><span·class="p"·data-group-id="3172025627-2">[</span><span·class="p"·data-group-id="3172025627-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="3172025627-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3172025627-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="3172025627-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3172025627-5">[</span><span·class="mi">3</span><span·class="p"·data-group-id="3172025627-5">]</span><span·class="p"·data-group-id="3172025627-2">]</span><span·class="p"·data-group-id="3172025627-1">)</span><span·class="p">.</span><span·class="w"> 
182 </span><span·class="p"·data-group-id="3172025627-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="3172025627-6">]</span></code></pre><h2·id="recursive-list-functions"·class="sect[·...·truncated·by·diffoscope;·len:·11,·SHA:·d76238685d6674391409a28a2625ed495ed5f23cca412f6778572495a29239df·...·]">181 </span><span·class="p"·data-group-id="2872166430-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="2872166430-6">]</span></code></pre><p><strong>DO·NOT</strong></p><pre><code·clas[·...·truncated·by·diffoscope;·len:·899,·SHA:·42f04e3a03484064dc40ee4eddc1c98ae584b30ad79f29e5af2c1acdfe144615·...·]">
 182 </span><span·class="p"·data-group-id="9966079904-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="9966079904-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="5959154638-1">(</span><span·class="p"·data-group-id="5959154638-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="5959154638-2">]</span><span·class="p"·data-group-id="5959154638-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="6123644322-1">(</span><span·class="p"·data-group-id="6123644322-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="6123644322-2">]</span><span·class="p"·data-group-id="6123644322-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
191 ····</span><span·class="p"·data-group-id="5959154638-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:·b9b72eaaed40f6761ad37d386be2aaec43767fa9b4e21698ffc5377a89d88675·...·]-3">]</span><span·class="p">;</span><span·class="w">191 ····</span><span·class="p"·data-group-id="6123644322-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:·5588d52da1ed577c1c27b5caf927531725dd6081d3953fe20090cb5a98e75a05·...·]-3">]</span><span·class="p">;</span><span·class="w">
192 </span><span·class="nf">add_42_body</span><span·class="p"·data-group-id="5959154638-5">(</span><span·class="p"·data-group-id="5959154638-6">[</span><span·class="p"·data-group-id="5959154638-6">]</span><span·class="p"·data-group-id="5959154638-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="6123644322-5">(</span><span·class="p"·data-group-id="6123644322-6">[</span><span·class="p"·data-group-id="6123644322-6">]</span><span·class="p"·data-group-id="6123644322-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ····</span><span·class="p"·data-group-id="5959154638-7">[</span><span·class="p"·data-group-id="5959154638-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="6123644322-7">[</span><span·class="p"·data-group-id="6123644322-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="2133956489-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="2133956489-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="5782488750-1">(</span><span·class="n">List</span><span·class="p"·data-group-id="5782488750-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="2133956489-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2133956489-3">[</span><span·class="p"·data-group-id="2133956489-3">]</span><span·class="p"·data-group-id="2133956489-2">)</span><span·class="p">.</span><span·class="w">195 ····</span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="5782488750-2">(</span><span·class="n">List</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5782488750-3">[</span><span·class="p"·data-group-id="5782488750-3">]</span><span·class="p"·data-group-id="5782488750-2">)</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="2133956489-4">(</span><span·class="p"·data-group-id="2133956489-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="2133956489-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·92cb98bb1f01f06237b81e35bf917d9ddf877c5c5c0d2bb3aa1aadb450fb1e9b·...·]-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="5782488750-4">(</span><span·class="p"·data-group-id="5782488750-5">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="5782488750-5">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·59,·SHA:·e4f00ab37c2de86f034f57ad00ff093bd1aa29f392e5e57c08e6d80593a9ade5·...·]-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="2133956489-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2133956489-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:·f6ced8c31a1d2f19ece654c15e0a65524e5cb756813162279a6c155062070e46·...·]-6">)</span><span·class="p">;</span><span·class="w">197 ····</span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="5782488750-6">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5782488750-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:·b077bc82de1e3a020add699c63ac1f8e781f97699b0f0bb7f3d628de27403297·...·]-6">)</span><span·class="p">;</span><span·class="w">
198 </span><span·class="nf">add_42_tail</span><span·class="p"·data-group-id="2133956489-8">(</span><span·class="p"·data-group-id="2133956489-9">[</span><span·class="p"·data-group-id="2133956489-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="2133956489-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="5782488750-8">(</span><span·class="p"·data-group-id="5782488750-9">[</span><span·class="p"·data-group-id="5782488750-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="5782488750-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="2133956489-10">(</span><span·class="n">Acc</span><span·class="p"·data-group-id="2133956489-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="5782488750-10">(</span><span·class="n">Acc</span><span·class="p"·data-group-id="5782488750-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="3548605560-1">(</span><span·class="p"·data-group-id="3548605560-2">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="3548605560-2">]</span><span·class="p"·data-group-id="3548605560-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">H</span><span·class="o">+</span><span·class="nf">recursive_sum</span><span·class="p"·data-group-id="3548605560-3">(</span><span·class="n">T</span><span·class="p"·data-group-id="3548605560-3">)</span><span·class="p">;</span><span·class="w"> 
211 </span><span·class="nf">recursive_sum</span><span·class="p"·data-group-id="3548605560-4">(</span><span·class="p"·data-group-id="3548605560-5">[</span><span·class="p"·data-group-id="3548605560-5">]</span><span·class="p"·data-group-id="3548605560-4">)</span>[·...·truncated·by·diffoscope;·len:·710,·SHA:·c823f3a4936bdd7fbacbbd5f86a88e20752e19c584319babb92440517e33d912·...·]</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="4622150144-1">(</span><span·class="p"·data-group-id="4622150144-2">[</span><span·class="n">H</span[·...·truncated·by·diffoscope;·len:·463,·SHA:·2bbf3c1b234395d1d136627b6e66a4c606dba3fce128dc266d82f808d0a0c8e2·...·]</span><span·class="w">
 211 </span><span·class="nf">recursive_sum</span><span·class="p"·data-group-id="4622150144-4">(</span><span·class="p"·data-group-id="4622150144-5">[</span><span·class="p"·data-group-id="4622150144-5">]</span><span·class="p"·data-group-id="4622150144-4">)</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>Instead:</p><p><strong>DO</strong></p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">sum</span><span·class="p"·data-group-id="3824599569-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="3824599569-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="3824599569-2">(</span><span·class="n">L</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="3824599569-2">)</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="nf">sum</span><span·class="p"·data-group-id="4348661766-3">(</span><span·class="p"·data-group-id="4348661766-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="4348661766-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·2034e74d279931a72d41cffe95720617cba94d49e8d0458730016235d71f2ed9·...·]-5">)</span><span·class="p">;</span><span·class="w">212 </span><span·class="nf">sum</span><span·class="p"·data-group-id="3824599569-3">(</span><span·class="p"·data-group-id="3824599569-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="3824599569-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·8e671a1312e576219d6f359c9209bfb47ab752e0a1a1a8c92274aba94dfea40e·...·]-5">)</span><span·class="p">;</span><span·class="w">
213 </span><span·class="nf">sum</span><span·class="p"·data-group-id="4348661766-6">(</span><span·class="p"·data-group-id="4348661766-7">[</span><span·class="p"·data-group-id="4348661766-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="4348661766-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="3824599569-6">(</span><span·class="p"·data-group-id="3824599569-7">[</span><span·class="p"·data-group-id="3824599569-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="3824599569-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="5846060252-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="5846060252-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="5846060252-2">(</span><span·class="n">File</span><span·class="p"·data-group-id="5846060252-2">)</span><span·class="p">.</span></code></pre><p><code·class="inlin[·...·truncated·by·diffoscope;·len:·88,·SHA:·eae51463b245131c3a443f27702d0623faa26c7deeeb9415aa013a52c942d16b·...·]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="0079216174-1">(</span><span·class="n">File</span><span·class="p"·data-group-id="00[·...·truncated·by·diffoscope;·len:·60,·SHA:·b50bc4227554abae4ddccd1ab3145f08759c8971c17528c01521b4390dfc8227·...·]
 124 </span><span·class="p">-</span><span·class="na">include_lib</span><span·class="p"·data-group-id="0079216174-2">(</span><span·class="n">File</span><span·class="p"·data-group-id="0079216174-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.3/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.3/doc/html/erlc_cmd.html">erlc</a>·in·ERTS·and
133 <a·href="../../lib/compiler-8.6/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="5525225999-1">(</span><span·class="s">&quot;my_records.hrl&quot;</span><span·class="p"·data-group-id="5525225999-1">)</span><span·class="p">.</span><span·class="w">133 <a·href="../../lib/compiler-8.6/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="2522279470-1">(</span><span·class="s">&quot;my_records.hrl&quot;</span><span·class="p"·data-group-id="2522279470-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="5525225999-2">(</span><span·class="s">&quot;incdir/my_records.hrl&quot;</span><span·class="p"·data-group-id="5525225999-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="2522279470-2">(</span><span·class="s">&quot;incdir/my_records.hrl&quot;</span><span·class="p"·data-group-id="2522279470-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="5525225999-3">(</span><span·class="s">&quot;/home/user/proj/my_records.hrl&quot;</span><span·class="p"·data-group-id="5525225999-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="2522279470-3">(</span><span·class="s">&quot;/home/user/proj/my_records.hrl&quot;</span><span·class="p"·data-group-id="2522279470-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="5525225999-4">(</span><span·class="s">&quot;$PROJ_ROOT/my_records.hrl&quot;</span><span·class="p"·data-group-id="5525225999-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="2522279470-4">(</span><span·class="s">&quot;$PROJ_ROOT/my_records.hrl&quot;</span><span·class="p"·data-group-id="2522279470-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="9706144514-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="9706144514-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="1069934305-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="1069934305-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="4427869141-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="4427869141-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="4427869141-2">(</span><span·class="n">Func</span><span·class="p"·data-group-id="4427869141-3">(</span><span·class="n">Var1</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·414,·SHA:·cbfbfdbac8acc8054ece7bd215b251f5c3c69349315f5211721d95cac92b5900·...·]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="9377107794-1">(</span><span·class="n">Const</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·138,·SHA:·7f530a6926c5d46bee7c2ae3d9636bccb5c9380d087074bd7ec43eb9ab2c48a5·...·]
 147 </span><span·class="p">-</span><span·class="na">define</span><span·class="p"·data-group-id="9377107794-2">(</span><span·class="n">Func</span><span·class="p"·data-group-id="9377107794-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="9377107794-3">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Replacement</span><span·class="p"·data-group-id="9377107794-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="2126863051-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="2126863051-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="2226573684-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="2226573684-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="2126863051-2">(</span><span·class="n">Request</span><span·class="p"·data-group-id="2126863051-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="2226573684-2">(</span><span·class="n">Request</span><span·class="p"·data-group-id="2226573684-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="2126863051-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-g[·...·truncated·by·diffoscope;·len:·295,·SHA:·9a8a5f7dffee8992b9395a02d8292cdb00f7a62c7c655e0002d8274d69c8dbe4·...·]-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="2226573684-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-g[·...·truncated·by·diffoscope;·len:·295,·SHA:·d840d8d3b8d4c102ac3f2fc03f1ee967efb2bba14519d816456fdfd471c866cf·...·]-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="5698968067-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="5698968067-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="1888571054-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="1888571054-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="3124210861-1">(</span><span·class="n">MACRO1</span><span·class="p"·data-group-id="3124210861-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="3124210861-2">)</span><sp[·...·truncated·by·diffoscope;·len:·432,·SHA:·ceff537ba9c022f1d5bd842dd12df013035b9c8e090607a6e978ff31fa259fe5·...·]61-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="7258040161-1">(</span><span·class="n">MACRO1</span><span·class="p"·data-group-id="7258040161-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="7258040161-2">)</span><sp[·...·truncated·by·diffoscope;·len:·432,·SHA:·c2ce7ade655b8eb9ccab2af650d815bb7e8a6e631e34ef363cc4805d93578c2c·...·]61-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="3124210861-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="3124210861-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="7258040161-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="7258040161-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="3124210861-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="3124210861-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="7258040161-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="7258040161-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="3124210861-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="3124210861-6">)</span></code></pre><p>This·is·expanded·to:</p><pre><code·class="makeup·erlang"·translate[·...·truncated·by·diffoscope;·len:·151,·SHA:·7aa7230b67cb9764f17a66411f821a246397d15dae62aa632e299c4d5bd8a838·...·]-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="7258040161-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="7258040161-6">)</span></code></pre><p>This·is·expanded·to:</p><pre><code·class="makeup·erlang"·translate[·...·truncated·by·diffoscope;·len:·151,·SHA:·4e825b64c4d7d0af69dc30c0a4cbf58e5583924620b99400249f21e5fd0fcc2e·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
163 ····</span><span·class="p"·data-group-id="5347450456-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="5347450456-2">}</span><span·class="p">,</span><span·class="w">163 ····</span><span·class="p"·data-group-id="4373876372-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="4373876372-2">}</span><span·class="p">,</span><span·class="w">
164 ····</span><span·class="p"·data-group-id="5347450456-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="5347450456-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="4373876372-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="4373876372-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="9913168111-1">(</span><span·class="n">F0</span><span·class="p"·data-group-id="9913168111-2">(</span><span·class="p"·data-group-id="9913168111-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:·65da00bf62e3ea81237d2e5370f6cc4e4855b1977aa3fa29a672531900d87444·...·]-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="1762543734-1">(</span><span·class="n">F0</span><span·class="p"·data-group-id="1762543734-2">(</span><span·class="p"·data-group-id="1762543734-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:·81907d33dbf60129251f2c1eac9bddf33ecb396cef75cafdd0eac07305ae7aa4·...·]-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="9913168111-3">(</span><span·class="n">F1</span><span·class="p"·data-group-id="9913168111-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="9913168111-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·43fb08a1ac4d447e988a02510f8e35e92c86d4b7bd68f283d12b1cf76795cbc6·...·]-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="1762543734-3">(</span><span·class="n">F1</span><span·class="p"·data-group-id="1762543734-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="1762543734-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">A</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·9a3685113be335656b5952b4f0121ea31265d15bc7d89c7c028a4638adaf5451·...·]-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="9913168111-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="9913168111-5">)</span><span·class="p">.</span></code></pr[·...·truncated·by·diffoscope;·len:·205,·SHA:·2e20e94d58f15407d6547aabb77c63416315878fc11ab6bb5c987f7681baa422·...·]-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="1762543734-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="1762543734-5">)</span><span·class="p">.</span></code></pr[·...·truncated·by·diffoscope;·len:·205,·SHA:·16fb0cf6d29e0b19ec1603b9ce3fe302c4610257e9464acd5cd8467e3727dd3f·...·]-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="9722163364-2">(</span><span·class="n">A</span><span·class="p"·data-group-id="9722163364-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="8106736186-2">(</span><span·class="n">A</span><span·class="p"·data-group-id="8106736186-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="9722163364-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="9722163364-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="8106736186-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="8106736186-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="0460823105-1">(</span><span·class="p"·data-group-id="0460823105-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="1993066038-1">(</span><span·class="p"·data-group-id="1993066038-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="0460823105-2">(</span><span·class="p"·data-group-id="0460823105-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="1993066038-2">(</span><span·class="p"·data-group-id="1993066038-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="7420812786-1">(</span><span·class="n">Macro</span><span·class="p"·data-group-id="7420812786-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="1249549600-1">(</span><span·class="n">Macro</span><span·class="p"·data-group-id="1249549600-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="9309726190-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="9309726190-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="6193828271-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="6193828271-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="9309726190-2">(</span><span·class="ss">debug</span><span·class="p"·data-group-id="9309726190-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="6193828271-2">(</span><span·class="ss">debug</span><span·class="p"·data-group-id="6193828271-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="9309726190-3">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="9309726190-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="9309726190-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">io</span><spa[·...·truncated·by·diffoscope;·len:·740,·SHA:·b87b6ffc9c00af1d2be2d84bad44bca72c70ebacecc5f5edb0c3de8a1c32dce5·...·]-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="6193828271-3">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="6193828271-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="6193828271-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">io</span><spa[·...·truncated·by·diffoscope;·len:·740,·SHA:·b8f7d51150d309e6fd9297bc3993dead1aa4d4482fa2b41e4a208f361fc6fa74·...·]-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="9309726190-7">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="9309726190-8">(</span><span·class="n">X</span><span·class="p"·data-group-id="9309726190-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·bcef75fd0de356cc675717709263e4de9a6e93c814a553ce7f1d10cb3a22b252·...·]-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="6193828271-7">(</span><span·class="n">LOG</span><span·class="p"·data-group-id="6193828271-8">(</span><span·class="n">X</span><span·class="p"·data-group-id="6193828271-8">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·ca5988d66e8b1b8b3c3da0d24cad9e94e44a271a2e7bf18131c3d794760b0460·...·]-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="0767495744-1">(</span><span·class="ss">m</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0767495744-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:·39b4bf4e48f5443c9248a69e8b848788022d7624057a71a37c682c7f0e28d133·...·]-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="3787629390-1">(</span><span·class="ss">m</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3787629390-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:·0bfc1cce1f1c1e66a678c24d735d2bf8959ab10a4f8007022d0f306e654ac178·...·]-1">)</span><span·class="p">.</span><span·class="w">
238 </span><span·class="p"·data-group-id="0767495744-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">m</span><span·class="p"·data-group-id="0767495744-3">}</span></code></pre><p><code·class="inline">?LOG(Arg)</code>·is·then·expanded·to·a·call·to·<a·href="../../lib/stdlib-6.2.1/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="6875006639-1">(</span><span·class="ss">m</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·51,·SHA:·19725f0ebd14f407bc189bca49c9c3a504596bd1c213de70624fe35a41f5d7a7·...·]238 </span><span·class="p"·data-group-id="3787629390-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">m</span><span·class="p"·data-group-id="3787629390-3">}</span></code></pre><p><code·class="inline">?LOG(Arg)</code>·is·then·expand[·...·truncated·by·diffoscope;·len:·139,·SHA:·81aa4b261fc35763d1e49648e33c9024420c1981646c06768de9da41fd3bd87b·...·]
 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="8937063084-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="8937063084-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="6875006639-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="6875006639-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="8937063084-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="8937063084-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="6875006639-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="6875006639-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="8937063084-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="8937063084-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="4852067890-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="4852067890-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="9360614472-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="9360614472-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="4852067890-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:·212,·SHA:·eef2020a77696400c49953ea7ed040315751001edc23a93155dcdcd1f69ef549·...·]-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="9360614472-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:·212,·SHA:·867e7779bae8b9324a8c00be14182d0d3a6ccaeb574251289f83d425f933ab23·...·]-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">
Max diff block lines reached; 18297/59703 bytes (30.65%) 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.1/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.1/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.1/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.1/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="0258846403-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:·124,·SHA:·6b0b721e8f29cddaa7aaf00ec64e929d74eddd7fe6334471d7c92ec3b6175e67·...·]03-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="2079503103-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:·124,·SHA:·a10980bdcaff3359266de09985076f65bd950f422473302f714e126105aad692·...·]03-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="0258846403-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="0258846403-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="2079503103-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="2079503103-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.1/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.1/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="0914673674-1">(</span><span·class="p"·data-group-id="0914673674-2">[</span><span·class="p"·data-group-id="0914673674-3">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="0914673674-3">}</[·...·truncated·by·diffoscope;·len:·99,·SHA:·4802fe96a0b47d391e5351c6a008650f529db996433c13168a3ddeff2dace91e·...·]-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="7067527798-1">(</span><span·class="p"·data-group-id="7067527798-2">[</span><span·class="p"·data-group-id="7067527798-3">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7067527798-3">}</[·...·truncated·by·diffoscope;·len:·99,·SHA:·fb24daa9a5b665096fa3f80a76b912aba9e9007c00447e326e12f86ec9f5c21e·...·]-1">)</span><span·class="p">.</span><span·class="w">
175 </span><span·class="p"·data-group-id="0914673674-4">#{</span><span·class="p"·data-group-id="0914673674-4">}</span><span·class="gp·unselectable">175 </span><span·class="p"·data-group-id="7067527798-4">#{</span><span·class="p"·data-group-id="7067527798-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="0914673674-5">(</span><span·class="p"·data-group-id="0914673674-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="0914673674-6">]</span><span[·...·truncated·by·diffoscope;·len:·376,·SHA:·c46de8a50138af7ba602d3d70cf36ba464a5af19d7c8daf44448154d1b4333c0·...·]-5">)</span><span·class="p">.</span><span·class="w">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="7067527798-5">(</span><span·class="p"·data-group-id="7067527798-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="7067527798-6">]</span><span[·...·truncated·by·diffoscope;·len:·376,·SHA:·a235ef4b77b98722b9333ed91bf9fa5ab2dcd4ba603f810fb47dd903e3d1197f·...·]-5">)</span><span·class="p">.</span><span·class="w">
177 </span><span·class="p"·data-group-id="0914673674-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="0914673674-10">[</span><span·class="p"·data-group-id="0914673674-10">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·483,·SHA:·0e5a4e14d5595beb1fe6e49705fde61a69d59916acaf5090fdedbc5f83630d55·...·]-9">}</span></code></pre><p><code·class="inline">sets</code>·backed·by·maps·is·generally·the·most·efficient·set·representation,·with·a177 </span><span·class="p"·data-group-id="7067527798-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="7067527798-10">[</span><span·class="p"·data-group-id="7067527798-10">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·483,·SHA:·9158fd1e85dbcb607e1e1d3864201d47279da140b22e6be1f2ebf14c857dab53·...·]-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.1/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.1/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.1/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.1/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.1/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.1/doc/html/ordsets.html"><code·class="inline">ordsets</code></a>·can
181 be·a·better·choice·than·<a·href="../../lib/stdlib-6.2.1/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.1/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.1/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.1/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.1/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.1/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="6782046478-1">(</span><span·class="p"·data-group-id="6782046478-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="8388293953-1">(</span><span·class="p"·data-group-id="8388293953-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ····</span><span·class="p"·data-group-id="6782046478-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:·300,·SHA:·9206fc18d3accad065112be49d8f87ec05ac11d17a668e9454ac9cd93cf2d801·...·]-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="8388293953-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:·300,·SHA:·374eb6f133bf8246061a9b140285922940359298708c24a9bb4324e33762f38a·...·]-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="4646287541-1">(</span><span·class="n">SOME_MODULE</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="4646287541-2">(</span><span·class="p"·data-group-id="4646287541-2">)</span><span·class="p"·data-group-id="4646287541-1[·...·truncated·by·diffoscope;·len:·229,·SHA:·e969361b200f4313e5bf7c79ea2f6204729d4571a92f5b65e09af22f2c4d85f3·...·]-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="1283976388-1">(</span><span·class="n">SOME_MODULE</span><span·class="p">:</span><span·class="nf">new</span><span·class="p"·data-group-id="1283976388-2">(</span><span·class="p"·data-group-id="1283976388-2">)</span><span·class="p"·data-group-id="1283976388-1[·...·truncated·by·diffoscope;·len:·229,·SHA:·c79d0b51de900a7280fa1c343dfabe9368f72328f22b54c03691332728ad27b9·...·]-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.1/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.1/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="6284035412-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:·fb96f3dc88ebfb7fbaa59f4a92d3f82fe467588ef4708c720a69e9aefdc3c36e·...·]-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="0551401577-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:·3efee150d7c28105869ba7f9a2e783f8199b29a27284a7939a8b3e3637251472·...·]-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="6253160370-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="6253160370-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="6547614562-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="6547614562-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="6253160370-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="6253160370-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="6547614562-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="6547614562-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="2302382450-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:·fd4e7cf251e18dcd9a1f914d2a88e04d4e5a52867e1b39b54741d43cff7b37a0·...·]-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="9288958855-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:·0b8f8901c7a7e36cad5ced22b4ff091628d5a1d510839976adb5946dbcbaca49·...·]-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="7839371464-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="7839371464-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="8798017685-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="8798017685-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="7839371464-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="7839371464-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="8798017685-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="8798017685-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="7839371464-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="7839371464-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="8798017685-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="8798017685-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.1/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.1/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="2454909061-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="2454909061-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="5580022529-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="5580022529-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="2454909061-2">#{</span><span·class="p"·data-group-id="2454909061-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="5580022529-2">#{</span><span·class="p"·data-group-id="5580022529-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.1/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.1/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="4777823300-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:·420,·SHA:·7049575b4e5147b8c2ce1659e39debfbb951e9fc0937fe9a8a9c6b1ea6a17abf·...·]-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="3825800029-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:·420,·SHA:·0e1087588b659f651664704883ec494dec5d9e34a513836a66e60cadacb05591·...·]-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="4777823300-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="4777823300-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="3825800029-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="3825800029-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.1/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.1/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.1/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.1/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="1251577645-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="1251577645-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="7650690594-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="7650690594-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="1251577645-2">(</span><span·class="p"·data-group-id="1251577645-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1251577645-3">]</span><span·class="p"·data-group-id="1251577645-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="7650690594-2">(</span><span·class="p"·data-group-id="7650690594-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="7650690594-3">]</span><span·class="p"·data-group-id="7650690594-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="1251577645-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="1251577645-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="7650690594-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="7650690594-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="1251577645-5">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="1251577645-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="7650690594-5">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="7650690594-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="1251577645-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="1251577645-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="7650690594-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="7650690594-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="0872114761-1">(</span><span·class="n">Behaviour</span><span·class="p"·data-group-id="0872114761-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="3424530896-1">(</span><span·class="n">Behaviour</span><span·class="p"·data-group-id="3424530896-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="0049126265-1">(</span><span·class="ss">callbacks</span><span·class="p"·data-group-id="0049126265-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:·6ab26f8c0a111113df347d88ce3c39753179f290326bc82a70c89f476211c121·...·]-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="2413211464-1">(</span><span·class="ss">callbacks</span><span·class="p"·data-group-id="2413211464-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:·2916e33b0070f02984533cc7a037eabb4196b878dc7c77f540f3608125b59c0c·...·]-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="9573724073-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="9573724073-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="6055374782-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="6055374782-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="2290201724-1">(</span><span·class="s">&quot;SomeFile.hrl&quot;</span><span·class="p"·data-group-id="2290201724-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="0047192853-1">(</span><span·class="s">&quot;SomeFile.hrl&quot;</span><span·class="p"·data-group-id="0047192853-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="2290201724-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="2290201724-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="0047192853-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="0047192853-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="5565866821-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="5565866821-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="3227685583-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="3227685583-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="0624380944-1">(</span><span·class="p"·data-group-id="0624380944-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="0624380944-2">(</span><span·class="p"·data-group-id="0624380944-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="0624380944-3">(</span><span·class="p"·data-group-id="0624380944-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="0624380944-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="0624380944-5">(</span><[·...·truncated·by·diffoscope;·len:·467,·SHA:·ce9f2c8e4b760fdb5e5dfef6f0088cf281759428fc5f49f2d0104f9569c288c9·...·]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="0132866324-1">(</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·512,·SHA:·9375ce2bde09f033cfb47bf16ff9cce4b7aaa902e1a8aaa10fc9f7a7e6f1c03b·...·]
 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="0132866324-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="0132866324-5">(</span><span·class="p"·data-group-id="0132866324-5">)</span><span·class="p"·data-group-id="0132866324-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="0132866324-6">(</span><span·class="p"·data-group-id="0132866324-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="7359525770-1">(</span><span·class="s">&quot;Example·documentation&quot;</span><span·class="p"·data-group-id="7359525770-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="6237798602-1">(</span><span·class="s">&quot;Example·documentation&quot;</span><span·class="p"·data-group-id="6237798602-1">)</span><span·class="p">.</span><span·class="w">
231 </span><span·class="nf">example</span><span·class="p"·data-group-id="7359525770-2">(</span><span·class="p"·data-group-id="7359525770-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="6237798602-2">(</span><span·class="p"·data-group-id="6237798602-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="9084888097-1">(</span><span·class="s">&quot;Example·\&quot;docs\&quot;&quot;</span><span·class="p"·data-group-id="9084888097-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="6765988774-1">(</span><span·class="s">&quot;Example·\&quot;docs\&quot;&quot;</span><span·class="p"·data-group-id="6765988774-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="9084888097-2">(</span><span·class="p"·data-group-id="9084888097-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="9084888097-3">&gt;&gt;</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·798c61206ef11cda491b87b777f8769dcc63080ae1c10acbf74098aa252751fb·...·]-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="6765988774-2">(</span><span·class="p"·data-group-id="6765988774-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="6765988774-3">&gt;&gt;</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·483d36b29c4f17d867a7eaebb7f31979a4c8366f0ec4137d972001a1c569e34e·...·]-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.3/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.3/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="7081727389-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:·1a2192e19963580e8b3962e57a7c6afd1a577f2f49f3e209d8b1e4c53194a255·...·]-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="4008706226-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:·2770be7734d676aa0c1bc999b30ba54ed5488ec903eb2e63790ea023fa16cc91·...·]-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.3/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.3/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="9977849205-1">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="9977849205-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="6631271958-1">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="6631271958-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="9977849205-2">(</span><span·class="p"·data-group-id="9977849205-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:·6dcb5d57204a91dd02dc9c8aaa6bf3b05af876d4b7a5cb3e95f6983c418913d3·...·]-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="6631271958-2">(</span><span·class="p"·data-group-id="6631271958-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:·b8e91c9c404531e7393ccc9d2ee18badfb444f2aaee00edb18cce671b84eaf56·...·]-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="9977849205-4">(</span><span·class="p"·data-group-id="9977849205-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:·4694e9536ccbe631a0aca274fbfaa359364c8e2a453d808f15d55055ad92c6c3·...·]-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="6631271958-4">(</span><span·class="p"·data-group-id="6631271958-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:·9a5736d7f109c5988961c47062e2e4fbe3aa74aad2323302779e3a138bb96587·...·]-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="9977849205-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9977849205-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="6631271958-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6631271958-6">)</span><span·class="p">.</span><span·class="w">
  
144 </span><span·class="nf">init</span><span·class="p"·data-group-id="9977849205-7">(</span><span·class="p"·data-group-id="9977849205-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="6631271958-7">(</span><span·class="p"·data-group-id="6631271958-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="9977849205-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="9977849205-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="6631271958-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="6631271958-8">)</span><span·class="p">.</span><span·class="w">
  
146 </span><span·class="nf">foo</span><span·class="p"·data-group-id="9977849205-9">(</span><span·class="p">_</span><span·class="n">X</span><span·class="p"·data-group-id="9977849205-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="6631271958-9">(</span><span·class="p">_</span><span·class="n">X</span><span·class="p"·data-group-id="6631271958-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="9977849205-10">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="9977849205-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="6631271958-10">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="6631271958-10">)</span><span·class="p">.</span><span·class="w">
148 </span><span·class="nf">bar</span><span·class="p"·data-group-id="9977849205-11">(</span><span·class="p">_</span><span·class="n">Y</span><span·class="p"·data-group-id="9977849205-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="6631271958-11">(</span><span·class="p">_</span><span·class="n">Y</span><span·class="p"·data-group-id="6631271958-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="9977849205-12">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="9977849205-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="6631271958-12">(</span><span·class="ss">nif_library_not_loaded</span><span·class="p"·data-group-id="6631271958-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="3439078865-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="3439078865-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1130,·SHA:·5b528a8c9fec97e30c413cc8c69feba39dc4b8247002d689730c2b621ce3bdcc·...·]-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="1595870232-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="1595870232-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1130,·SHA:·b759fd8890f9d7389eafba39914638a15b62a3fc5f985e25df682e9360cd676c·...·]-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="3439078865-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="3439078865-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="1595870232-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="1595870232-7">)</span><span·class="gp·unselectable">
218 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="3439078865-8">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="3439078865-8">)</span><span·class="p">.</span><span·class="w">218 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="1595870232-8">(</span><span·class="ss">complex6</span><span·class="p"·data-group-id="1595870232-8">)</span><span·class="p">.</span><span·class="w">
219 </span><span·class="p"·data-group-id="3439078865-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex6</span><span·class="p"·data-group-id="3439078865-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:·47c6ca4d001caaa1435399e83173a0e96454878813b8e1b9d02708939852e66f·...·]-1">)</span><span·class="p">.</span><span·class="w">219 </span><span·class="p"·data-group-id="1595870232-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">complex6</span><span·class="p"·data-group-id="1595870232-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:·0f137c920fe74757c0122cc529593609d2be41138d666412c669ac7afe453ddf·...·]-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="1979619362-2">(</span><span·class="mi">5</span><span·class="p"·data-group-id="1979619362-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="7032724983-2">(</span><span·class="mi">5</span><span·class="p"·data-group-id="7032724983-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="1979619362-3">(</span><span·class="s">&quot;not·an·integer&quot;</span><span·class="p"·data-group-id="1979619362-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="7032724983-3">(</span><span·class="s">&quot;not·an·integer&quot;</span><span·class="p"·data-group-id="7032724983-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.28 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.1/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.1/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="9416778714-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="9416778714-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><span[·...·truncated·by·diffoscope;·len:·377,·SHA:·e4f36832a987150aefa5c18c0c9e0dc7244d116ec23520dcf64f00f1215b0348·...·]-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="9214692579-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="9214692579-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><span[·...·truncated·by·diffoscope;·len:·377,·SHA:·310e0f4c75b170ad732ecae99d6bdafeed4e4932514e842a1e65d8cb1ed60c01·...·]-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="3326563180-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="3326563180-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:·6184f1715fdd71d66883a79b2712bab726c6ead27674f65e7bba0e94b58c2f91·...·]-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="1188917355-1">(</span><span·class="n">Element</span><span·class="p"·data-group-id="1188917355-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:·57c3d068ec597c7c78fce9a268b336c684ab72ec22581fb25e7f4d63108db9f5·...·]-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="9874149118-1">(</span><span·class="p"·data-group-id="9874149118-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="8234039129-1">(</span><span·class="p"·data-group-id="8234039129-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="9874149118-2">(</span><span·class="n">Set</span><span·class="p"·data-group-id="9874149118-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="8234039129-2">(</span><span·class="n">Set</span><span·class="p"·data-group-id="8234039129-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="9874149118-3">(</span><span·class="s">&quot;ok&quot;</span><span·class="p"·data-group-id="9874149118-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="8234039129-3">(</span><span·class="s">&quot;ok&quot;</span><span·class="p"·data-group-id="8234039129-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.3/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.3/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.1/doc/html/sets.html#new/0"><code·class="inline">sets:new/0</code></a>,·<a·href="../../lib/stdlib-6.2.1/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.1/doc/html/sets.html#new/0"><code·class="inline">sets:new/0</code></a>,·<a·href="../../lib/stdlib-6.2.1/doc/html/sets.html#add_element/2"><code·class="inline">sets:add_element/2</code></a>,
143 <a·href="../../lib/stdlib-6.2.1/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.1/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.1/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.1/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="3113301987-1">(</span><span·class="p"·data-group-id="3113301987-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="7385840372-1">(</span><span·class="p"·data-group-id="7385840372-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="3021870761-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="3021870761-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·178,·SHA:·a4d3ce81fecec4c3c4a09ce05bf87f41cc6e5a12b402da7b0faa69fdb131a727·...·]1-2">}</span><span·class="p">.</span><span·class="w">135 4&gt;·</span><span·class="p"·data-group-id="8058975481-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="8058975481-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·178,·SHA:·c81db81098f7ee3bccecb01e8f05105d6c67f34a4426849bef829b1f8dfa3d80·...·]1-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="3021870761-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="3021870761-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·178,·SHA:·1cbd66f1ab1b5c2f4ad32750684a71d3384b427ec85df4e2f7b82e5977c50c48·...·]1-4">}</span><span·class="p">.</span><span·class="w">137 5&gt;·</span><span·class="p"·data-group-id="8058975481-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="8058975481-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·178,·SHA:·a2c4eba5cbdc0fc088ad96f1aa264ab80d5d67d38f974944614c6063654b008d·...·]1-4">}</span><span·class="p">.</span><span·class="w">
138 </span><span·class="p"·data-group-id="3021870761-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3021870761-5">}</span><span·class="gp·unselectable">138 </span><span·class="p"·data-group-id="8058975481-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="8058975481-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="8032609292-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="8032609292-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="8417905996-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="8417905996-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="8032609292-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="8032609292-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="8417905996-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="8417905996-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="7743011121-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7743011121-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:·838676158d98656b7110e6db376970ab91319df7407ff6561514bf8bcaf60b54·...·]-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="1529725257-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1529725257-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:·a380361f899ecf55eeba7218cb0a234cb22709e982a433c699026c7ec1d759c4·...·]-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="9183248476-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:·7bcab9abaa5bf02ac84688cec778a690b768d04a29c4e543ebe5ef5e0c4f071e·...·]-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="2510002353-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:·37f99e2f7709c09d006cb56bb09ceb87402b6664e742a25cfcae6a435c1313d4·...·]-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="6134951943-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6134951943-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6134951943-3">[</span><span·class="p"·data-group-id="6134951943-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">address</span><span·class="p"·data-group-id="6134951943-2">}</span><span·class="p"·data-group-id="6134951943-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="0598423994-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·676,·SHA:·190ab03a7f48b8a0e58abf73a22b9783ebc294dea3872f173a1b4aae1bf2f849·...·]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="6976961467-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·732,·SHA:·d521b8356d3dd107eab261e533a64951dcf6012cc074fd65e7ad6e2ecff1d411·...·]
 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="8634798813-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8634798813-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8634798813-3">[</span><span·class="p"·data-group-id="8634798813-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">address</span><span·class="p"·data-group-id="8634798813-2">}</span><span·class="p"·data-group-id="8634798813-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.1/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.1/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="3855518778-1">{</span><span·class="ss">phone</span><span·class="o">=</span><span·class="p"·data-group-id="3855518778-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:·f7c3b99795b49b3700e4e025ab5d1ebe3ccae6fa6f7ed65db2f10df0720e181b·...·]-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="6252482827-1">{</span><span·class="ss">phone</span><span·class="o">=</span><span·class="p"·data-group-id="6252482827-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:·58f5708a993877fac7e97bf581025d105e871875d706b8e3ca2f07dbe3d68078·...·]-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="3855518778-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:·bc3757264131132e13a32cd41af8d0822890655175c549e2e588ebe18a92c2b7·...·]-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="6252482827-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:·ce8143b6f7ddfaed6cc58f1c8a0f1a06faff0373751223fee01e9f3364eae96f·...·]-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="1918338837-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:·97dd68daaa9367543032efa290771f34cadd2713be7b309ebf09fefa31843ac3·...·]-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="4754341855-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:·25a88c525e08813068cb5d30290feea91a9bb4ce476bddc5112c3d9a31d50577·...·]-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="1918338837-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:·60c680ab6ebab028ab3c352caae4882a0dd55632e28c1752d54ef222886e21b6·...·]-2">}</span></code></pre><p>It·is·primarily·intended·to·be·used·in·<a·href="../../lib/stdlib-6.2.1/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="4754341855-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:·5eebdfab82628b93949afeda046a4dd457f06c50c6e19c43c770f198be34cec6·...·]-2">}</span></code></pre><p>It·is·primarily·intended·to·be·used·in·<a·href="../../lib/stdlib-6.2.1/doc/html/ets.html#match/2"><code·class="inline">ets:match/2</code></a>·and
163 <a·href="../../lib/mnesia-4.23.4/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.4/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.1/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.1/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="1799875477-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:·53ad18b06e533869122a1361e575df8a9d5d9e7517aeac218494874be30ba89b·...·]-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="8687112792-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:·1348180d87373aa9708db5db9bb56e9e5802b9cfab6c8f0b48fabcdc72175f9e·...·]-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="1799875477-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:·f1c523e65bac387b1ea70c46e644b386c44fffcf119c6da2c68602952e1d8c22·...·]-3">}</span><span·class="gp·unselectable">171 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="8687112792-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:·e93851df8c6fdce8a10583b32605a35a4811c2d52f19f1950345b047890ed9e6·...·]-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="3646188287-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="3646188287-2[·...·truncated·by·diffoscope;·len:·373,·SHA:·461275fb63470170d65b207afb50032bd0696cee0903a479dc8fcdf25c48b791·...·]-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="1219924501-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="1219924501-2[·...·truncated·by·diffoscope;·len:·373,·SHA:·7bc7320d10ca181bc5288edbbf79da11a76589f59f1ba10342151f2812d5f4ce·...·]-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="3646188287-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:·004d3c07ab971f7d66ce921b73710dd14d52e24bd5087d8ac05461c9adc3dbe5·...·]-3">}</span><span·class="gp·unselectable">180 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1219924501-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:·3b8785b5e8d9af7921aaad312b5d777194ab1136aa1945aa87055c577c03c2c2·...·]-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="3646188287-5">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Robert&quot;</span><span·class="p"·data-group-id="3646188287-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="1219924501-5">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="s">&quot;Robert&quot;</span><span·class="p"·data-group-id="1219924501-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="3646188287-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:·e4e1547bb951f7321bac230775a2b5f69f9b90ddc5bb14333f88b5fea15c95fe·...·]-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="1219924501-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:·931db20786694a09dccf948c515ee79258490734b2a2211c1ece3967f5e8ca91·...·]-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="7592499624-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="7592499624-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="7592499624-2">(</s[·...·truncated·by·diffoscope;·len:·147,·SHA:·f3e82461921d94bb2208a1c6a7781c8bef7d53ea2393fe28f9ed8ef8c6689712·...·]-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="1549961019-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="1549961019-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="1549961019-2">(</s[·...·truncated·by·diffoscope;·len:·147,·SHA:·f98fb195675ca4143daa6304b8d603c064546a1c7c529a90e06eec12e6811432·...·]-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="7592499624-3">(</span><span·class="p">_</span><span·class="p"·data-group-id="7592499624-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="1549961019-3">(</span><span·class="p">_</span><span·class="p"·data-group-id="1549961019-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="7985616172-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="7985616172-2[·...·truncated·by·diffoscope;·len:·372,·SHA:·d472163d73be913e73a47208bbd12c0785590133a717e056b3f5d380814776fc·...·]2-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="1814379392-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="1814379392-2[·...·truncated·by·diffoscope;·len:·372,·SHA:·ef335848a4b9df8f63d17cdf84e0e3df95a8136463f0973e1104f958dc4dbcab·...·]2-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="7985616172-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:·468,·SHA:·6e93e2d305764b0be0668f51302fd14f4076e04a04d6ce7413e1a7c7b947852e·...·]2-3">}</span><span·class="gp·unselectable">198 </span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="1814379392-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:·468,·SHA:·1b06168b97e66f4051cf2b24913aaa2db8ec90c4e8acf084e386190efb8e5892·...·]2-3">}</span><span·class="gp·unselectable">
199 &gt;·</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="7985616172-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="7985616172-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="1814379392-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="1814379392-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="8845846925-1">(</span><span·class="p"·data-group-id="8845846925-2">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="8845846925-3">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="n">Name</[·...·truncated·by·diffoscope;·len:·452,·SHA:·b3e8a82db2c2618a27c4f701ada8ed2b1b253b7b0bcc957a3ea0719d00302978·...·]-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="6648931602-1">(</span><span·class="p"·data-group-id="6648931602-2">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="6648931602-3">{</span><span·class="ss">name</span><span·class="o">=</span><span·class="n">Name</[·...·truncated·by·diffoscope;·len:·452,·SHA:·b7b0df86689921b59a223ce2ebed5c5f9aa79145eae561ff6e22e88a7d98d75f·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="8845846925-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="8845846925-4">}</span><span·class="p">;</span><span·class="w">202 ····</span><span·class="p"·data-group-id="6648931602-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="6648931602-4">}</span><span·class="p">;</span><span·class="w">
203 </span><span·class="nf">find_phone</span><span·class="p"·data-group-id="8845846925-5">(</span><span·class="p"·data-group-id="8845846925-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="8845846925-6">]</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·84,·SHA:·0ea09c5bd677274b468429d6bbe634f625c6e614aff5bbbf77d516dd34d6ccdd·...·]-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="6648931602-5">(</span><span·class="p"·data-group-id="6648931602-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="6648931602-6">]</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·84,·SHA:·6084c756a02bd6360b3a3dee39a384c47b205dd20deef6a9eac147017c55723c·...·]-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="8845846925-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="8845846925-7">)</span><span·class="p">;</span><span·class="w">204 ····</span><span·class="nf">find_phone</span><span·class="p"·data-group-id="6648931602-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="6648931602-7">)</span><span·class="p">;</span><span·class="w">
205 </span><span·class="nf">find_phone</span><span·class="p"·data-group-id="8845846925-8">(</span><span·class="p"·data-group-id="8845846925-9">[</span><span·class="p"·data-group-id="8845846925-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="8845846925-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="6648931602-8">(</span><span·class="p"·data-group-id="6648931602-9">[</span><span·class="p"·data-group-id="6648931602-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Name</span><span·class="p"·data-group-id="6648931602-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="1729135318-1">(</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1729135318-2">{</span><span·class="ss">first</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="w">·</span><span·class="ss">last</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;Ericsson&quot;</span><span·class="p"·data-group-id="1729135318-2">}</span><span·class="p"·data-group-id="1729135318-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="1729135318-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1729135318-4">{</span><span·class[·...·truncated·by·diffoscope;·len:·420,·SHA:·82f9d12eae4a48ce443875580ff08de87bff4c68955be6e5b2371a0da1498162·...·]">)</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="8869907839-1">(</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·469,·SHA:·6815af38cd33d4ccb18ea98b23146ff6094a60cc143e65f6d5dc532e03216ff7·...·]">)</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="8869907839-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8869907839-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">name</span><span·class="p"·data-group-id="8869907839-5">{</span><span·class="p"·data-group-id="8869907839-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</span><span·class="p"·data-group-id="8869907839-4">}</span><span·class="p"·data-group-id="8869907839-3">)</span><span·class="p">.</span><span·class="w">
  
216 </span><span·class="nf">demo</span><span·class="p"·data-group-id="1729135318-6">(</span><span·class="p"·data-group-id="1729135318-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="8869907839-6">(</span><span·class="p"·data-group-id="8869907839-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="1729135318-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="1729135318-8">{</span><span·class="ss">first</span><span·class="o">=</span>[·...·truncated·by·diffoscope;·len:·381,·SHA:·f52de8b50e21b731e06ce5711e0f94cd2f1ec2ae6a589867374f7ce5399064c7·...·]-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="8869907839-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="8869907839-8">{</span><span·class="ss">first</span><span·class="o">=</span>[·...·truncated·by·diffoscope;·len:·381,·SHA:·1c5c1c9d6e91dba43cc9ccc03df1d22f08d660b38236c48fea0e8cdf00bf8eb3·...·]-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="1729135318-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="1729135318-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="8869907839-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="8869907839-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="4270074741-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4270074741-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:·22745ab3f469ec83be520e1b59d206d4c9d8b7c81ba615134ed88d6eee3b12c8·...·]-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="8615156804-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8615156804-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:·6e304ee1bd0f25f8e82532f967b2c007b1c13cf8087e977992115dd58bf0313a·...·]-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="0490448221-2">(</span><span·class="s">&quot;person.hrl&quot;</span><span·class="p"·data-group-id="0490448221-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="2964134943-2">(</span><span·class="s">&quot;person.hrl&quot;</span><span·class="p"·data-group-id="2964134943-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="0490448221-3">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="0490448221-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="2964134943-3">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="2964134943-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="0490448221-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="0490448221-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="2964134943-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="2964134943-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="0490448221-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="2964134943-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="0490448221-6">[</span><span·class="p"·data-group-id="0490448221-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="0490448221-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="2964134943-6">[</span><span·class="p"·data-group-id="2964134943-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="2964134943-7">}</span><span·class="p">,</span><span·class="w">
246 ···················</span><span·class="p"·data-group-id="0490448221-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="0490448221-8">}</span><span·class="p"·data-group-id="0490448221-6">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·d92bf60fb2f787f6c7a8d7f6de5d86bc6554b3ece1c00ac4aa480229040c5595·...·]-5">}</span><span·class="p">.</span><span·class="w">246 ···················</span><span·class="p"·data-group-id="2964134943-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="2964134943-8">}</span><span·class="p"·data-group-id="2964134943-6">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·ea49ffde027c79762eed80b01eac9e5e828c519d4c3caec501efcabdeee375e1·...·]-5">}</span><span·class="p">.</span><span·class="w">
Max diff block lines reached; 12571/71623 bytes (17.55%) 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="2940831284-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="2940831284-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="4415512392-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="4415512392-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="2860209430-1">(</span><span·class="ss">logon</span><span·class="p">,</span><span·class="p"·data-group-id="2860209430-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:·52a8f68b717d20a3fff17abbdd5a7d444d55c93576c58d0ae43901baf7e95a75·...·]-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="0040439504-1">(</span><span·class="ss">logon</span><span·class="p">,</span><span·class="p"·data-group-id="0040439504-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:·8a206e6269212fd45afe01dfda111197645b55e1e1c8b6eff085f7760aa15bcd·...·]-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="2860209430-3">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="2860209430-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:·9aa69be6b2c29fb24afdd9b24db9dc428fd9db74bcf98ff05a1d55dd3de9558a·...·]-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="0040439504-3">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="0040439504-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:·bf4ae7217247bd18d4e22c351f80fe8efb02dc8ef36fe1661d8c3072b3b6cb13·...·]-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="2860209430-5">(</span><span·class="ss">abort_client</span><span·class="p">,</span><span·class="p"·data-group-id="2860209430-6">{</span><span·class="ss">message</span><span·class="p"·data-group-id="2860209430-6">}</span><span·class="p"·data-group-id="286020[·...·truncated·by·diffoscope;·len:·4,·SHA:·4c61a70becbc2a160646dc8928b718d02ecf2b980e505c2fe9d82759c177befd·...·]-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="0040439504-5">(</span><span·class="ss">abort_client</span><span·class="p">,</span><span·class="p"·data-group-id="0040439504-6">{</span><span·class="ss">message</span><span·class="p"·data-group-id="0040439504-6">}</span><span·class="p"·data-group-id="004043[·...·truncated·by·diffoscope;·len:·4,·SHA:·886359a0e6d7d6554327ef21870c583c3a8ec9fc586a13cd32ef8b94b241d098·...·]-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="2860209430-7">(</span><span·class="ss">server_reply</span><span·class="p">,</span><span·class="p"·data-group-id="2860209430-8">{</span><span·class="ss">message</span><span·class="p"·data-group-id="2860209430-8">}</span><span·class="p"·data-group-id="286020[·...·truncated·by·diffoscope;·len:·4,·SHA:·4c61a70becbc2a160646dc8928b718d02ecf2b980e505c2fe9d82759c177befd·...·]-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="0040439504-7">(</span><span·class="ss">server_reply</span><span·class="p">,</span><span·class="p"·data-group-id="0040439504-8">{</span><span·class="ss">message</span><span·class="p"·data-group-id="0040439504-8">}</span><span·class="p"·data-group-id="004043[·...·truncated·by·diffoscope;·len:·4,·SHA:·886359a0e6d7d6554327ef21870c583c3a8ec9fc586a13cd32ef8b94b241d098·...·]-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="2860209430-9">(</span><span·class="ss">message_from</span><span·class="p">,</span><span·class="p"·data-group-id="2860209430-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:·93b68e4d38d0fb6f2b37391d21d85c918df74fa248a04821848c792affb2de8c·...·]-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="0040439504-9">(</span><span·class="ss">message_from</span><span·class="p">,</span><span·class="p"·data-group-id="0040439504-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:·c8dc175521880b7cb45c1c20006f4b7b04e73951bafe320b67d294d24ffe4115·...·]-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="2860209430-11">(</span><span·class="ss">message_to</span><span·class="p">,</span><span·class="p"·data-group-id="2860209430-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:·bd9eedde1e45f66bb471f69c6771766cea65f381b7f8c203792e1122ea21cf8a·...·]-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="0040439504-11">(</span><span·class="ss">message_to</span><span·class="p">,</span><span·class="p"·data-group-id="0040439504-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:·9bb769a0bfdecac2d984c09478632c377db6c4cd17aedaacb15423b5d21e754e·...·]-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="3190193036-1">(</span><span·class="ss">user_interface</span><span·class="p"·data-group-id="3190193036-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="2334354249-1">(</span><span·class="ss">user_interface</span><span·class="p"·data-group-id="2334354249-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="3190193036-2">(</span><span·class="p"·data-group-id="3190193036-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:·246,·SHA:·81f4e6ce965e6bad769f8671b7f84361974c49170e3ff351b273964b4053210e·...·]-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="2334354249-2">(</span><span·class="p"·data-group-id="2334354249-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:·246,·SHA:·72e53bc03d2cba3eac47972bebab48ae5ca1e1d7893c43f1c90850254ba1b86a·...·]-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="3190193036-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="3190193036-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="2334354249-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="2334354249-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="3190193036-5">(</span><span·class="s">&quot;mess_config.hrl&quot;</span><span·class="p"·data-group-id="3190193036-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="2334354249-5">(</span><span·class="s">&quot;mess_config.hrl&quot;</span><span·class="p"·data-group-id="2334354249-5">)</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="nf">logon</span><span·class="p"·data-group-id="3190193036-6">(</span><span·class="n">Name</span><span·class="p"·data-group-id="3190193036-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="2334354249-6">(</span><span·class="n">Name</span><span·class="p"·data-group-id="2334354249-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="3190193036-7">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="3190193036-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="2334354249-7">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="2334354249-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="3190193036-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="2334354249-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="3190193036-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="3190193036-10">[</span><span·class="o">?</[·...·truncated·by·diffoscope;·len:·263,·SHA:·408c0ec77e68581c0cb59529a03f1f28b99909f36b04cff2f6b20bf59fd6b535·...·]-8">)</span><span·class="p">;</span><span·class="w">184 ·····················</span><span·class="nf">spawn</span><span·class="p"·data-group-id="2334354249-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="2334354249-10">[</span><span·class="o">?</[·...·truncated·by·diffoscope;·len:·263,·SHA:·abeabf2ab3a36ddb1ef9fa3da0c93083b7fdd76670a5e8a3fa79a17a20fcd449·...·]-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="3190193036-11">(</span><span·class="p"·data-group-id="3190193036-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="2334354249-11">(</span><span·class="p"·data-group-id="2334354249-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="3190193036-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="3190193036-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="2334354249-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="2334354249-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="3190193036-13">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="3190193036-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="2334354249-13">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="2334354249-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="3190193036-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:·25,·SHA:·9348249307c5de61a080488011a08d6194aa9365464001086741249e1e9ac9c7·...·]-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="2334354249-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:·25,·SHA:·2287f105daa9d62d7122907f406b8fc3a70e63d890355cae13416ffe1707f726·...·]-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="2789774287-1">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="2789774287-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="2226197885-1">(</span><span·class="ss">mess_client</span><span·class="p"·data-group-id="2226197885-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="2789774287-2">(</span><span·class="p"·data-group-id="2789774287-3">[</span><span·class="ss">client</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="2789774287-3">]</span><span·class="p"·data-group-id="2789774287-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="2226197885-2">(</span><span·class="p"·data-group-id="2226197885-3">[</span><span·class="ss">client</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="2226197885-3">]</span><span·class="p"·data-group-id="2226197885-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="2789774287-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="2789774287-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="2226197885-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="2226197885-4">)</span><span·class="p">.</span><span·class="w">
  
202 </span><span·class="nf">client</span><span·class="p"·data-group-id="2789774287-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="2789774287-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="2226197885-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="2226197885-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
203 ····</span><span·class="p"·data-group-id="2789774287-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="2789774287-6">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·475,·SHA:·259abdd95342a5dce326038697ac7a6a1d8b8d0451fd8ef8c5cb7ad9ddf7e2cd·...·]-7">}</span><span·class="p">,</span><span·class="w">203 ····</span><span·class="p"·data-group-id="2226197885-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="2226197885-6">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·475,·SHA:·1ea09e53e1ec5547f454188decada6e7393cfc3ba55d9a7ae5570257476fa221·...·]-7">}</span><span·class="p">,</span><span·class="w">
204 ····</span><span·class="nf">await_result</span><span·class="p"·data-group-id="2789774287-9">(</span><span·class="p"·data-group-id="2789774287-9">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="nf">await_result</span><span·class="p"·data-group-id="2226197885-9">(</span><span·class="p"·data-group-id="2226197885-9">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="2789774287-10">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="2789774287-10">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="2226197885-10">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="2226197885-10">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">client</span><span·class="p"·data-group-id="2789774287-11">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="2789774287-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="2226197885-11">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="2226197885-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="2789774287-12">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="2789774287-12">)</span><span·class="p">;</span><span·class="w">209 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="2226197885-12">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="2226197885-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="2789774287-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:·2f1ac01d304ed32c9ee1047ad84482e9ef93656c9be1d94f4dcb3705a890db94·...·]-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="2226197885-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:·0f01cdbf931dd3c05f75a92ff0842a409da8af7bfba85ba9a871362b621c2f32·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ············</span><span·class="p"·data-group-id="2789774287-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="2789774287-14">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">211 ············</span><span·class="p"·data-group-id="2226197885-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="2226197885-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="2789774287-15">{</span><span·class="ss">client_pid</span><span·class="o">=</span><span·class="nf">self</span><span·class="p"·data-group-id="2789774287-16">(</span><span·class="p"·data-group-id="2789774287-16">)</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·266,·SHA:·fc9af3b6bb7014d93fb5b2c84e6daaedf964fdb451347b5816d35e1be168c2b0·...·]-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="2226197885-15">{</span><span·class="ss">client_pid</span><span·class="o">=</span><span·class="nf">self</span><span·class="p"·data-group-id="2226197885-16">(</span><span·class="p"·data-group-id="2226197885-16">)</span><span·class="p">,</span><span·class="w">[·...·truncated·by·diffoscope;·len:·266,·SHA:·a5882d55291c8f940f12d5535c73651e0beac0fea551a8e4bf655899069d7a5f·...·]-15">}</span><span·class="p">,</span><span·class="w">
213 ············</span><span·class="nf">await_result</span><span·class="p"·data-group-id="2789774287-17">(</span><span·class="p"·data-group-id="2789774287-17">)</span><span·class="p">;</span><span·class="w">213 ············</span><span·class="nf">await_result</span><span·class="p"·data-group-id="2226197885-17">(</span><span·class="p"·data-group-id="2226197885-17">)</span><span·class="p">;</span><span·class="w">
214 ········</span><span·class="p"·data-group-id="2789774287-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="2789774287-18">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 ········</span><span·class="p"·data-group-id="2226197885-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="2226197885-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="2789774287-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:·668d129bcdda45b819460f6129ffb641fd3b69f7528588e34bd8643a1dfef196·...·]-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="2226197885-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:·aecc60786dd2c0f1b98f98e65146f076de91493606f0ab2efa6f130bde3eb9e2·...·]-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="2789774287-21">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="2789774287-21">)</span><span·class="p">.</span><span·class="w">217 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="2226197885-21">(</span><span·class="n">Server_Node</span><span·class="p"·data-group-id="2226197885-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="2789774287-22">(</span><span·class="p"·data-group-id="2789774287-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="2226197885-22">(</span><span·class="p"·data-group-id="2226197885-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="2789774287-23">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">Why</span><span·class="p"·data-group-id="2789774287-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="2226197885-23">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">Why</span><span·class="p"·data-group-id="2226197885-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="2789774287-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="2789774287-25">[</span><span·class="n">Why</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·dd9383f72cf331b8e810eab759842600eaf7665b4f0fee6dfa4f900511aa41df·...·]-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="2226197885-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="2226197885-25">[</span><span·class="n">Why</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·2f616b6b32bac782453dbef177fffa0e8c37f9d679dc058ac2e81d1f4b17011f·...·]-24">)</span><span·class="p">,</span><span·class="w">
223 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="2789774287-26">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="2789774287-26">)</span><span·class="p">;</span><span·class="w">223 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="2226197885-26">(</span><span·class="ss">normal</span><span·class="p"·data-group-id="2226197885-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="2789774287-27">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">What</span><span·class="p"·data-group-id="2789774287-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="2226197885-27">{</span><span·class="ss">message</span><span·class="o">=</span><span·class="n">What</span><span·class="p"·data-group-id="2226197885-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="2789774287-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="2789774287-29">[</span><span·class="n">What</[·...·truncated·by·diffoscope;·len:·100,·SHA:·3ee6493a9697872c189751de969de20e77a7cde67949e939a360b6146e9e62ab·...·]-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="2226197885-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="2226197885-29">[</span><span·class="n">What</[·...·truncated·by·diffoscope;·len:·100,·SHA:·5a787a54503e6f5d8d59074f4450065825b3fa4a348e4feb7202fe8902c38a22·...·]-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="2789774287-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="2789774287-31">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·70,·SHA:·bb63d67cb5ae2f9102470b15d302137fdc8f57489054c5386ccc9aaa7f7c880d·...·]-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="2226197885-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="2226197885-31">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·70,·SHA:·8c2df3ffee21078cc0cd663457c85c9fabdd5f1db50f5d65e3fe8c0191ce66d9·...·]-30">)</span><span·class="p">,</span><span·class="w">
228 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="2789774287-32">(</span><span·class="ss">timeout</span><span·class="p"·data-group-id="2789774287-32">)</span><span·class="w">228 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="2226197885-32">(</span><span·class="ss">timeout</span><span·class="p"·data-group-id="2226197885-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="8652867047-1">(</span><span·class="ss">mess_server</span><span·class="p"·data-group-id="8652867047-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="4180778397-1">(</span><span·class="ss">mess_server</span><span·class="p"·data-group-id="4180778397-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="8652867047-2">(</span><span·class="p"·data-group-id="8652867047-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:·124,·SHA:·f96133234491175b3d5e89942a42e20e79908703c5f276a7f907811ea1caa699·...·]7-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="4180778397-2">(</span><span·class="p"·data-group-id="4180778397-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:·124,·SHA:·aee49bf40ec349b2c32a9d66bf97a2e881026a09406025d7115ace7d6d2a89db·...·]7-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="8652867047-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="8652867047-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="4180778397-4">(</span><span·class="s">&quot;mess_interface.hrl&quot;</span><span·class="p"·data-group-id="4180778397-4">)</span><span·class="p">.</span><span·class="w">
  
236 </span><span·class="nf">server</span><span·class="p"·data-group-id="8652867047-5">(</span><span·class="p"·data-group-id="8652867047-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="4180778397-5">(</span><span·class="p"·data-group-id="4180778397-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="8652867047-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="8652867047-6">)</span><span·class="p">,</span><span·class="w">237 ····</span><span·class="nf">process_flag</span><span·class="p"·data-group-id="4180778397-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="4180778397-6">)</span><span·class="p">,</span><span·class="w">
238 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="8652867047-7">(</span><span·class="p"·data-group-id="8652867047-8">[</span><span·class="p"·data-group-id="8652867047-8">]</span><span·class="p"·data-group-id="8652867047-7">)</span><span·class="p">.</span><span·class="w">238 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="4180778397-7">(</span><span·class="p"·data-group-id="4180778397-8">[</span><span·class="p"·data-group-id="4180778397-8">]</span><span·class="p"·data-group-id="4180778397-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="8652867047-9">(</span><span·class="n">User_List</span><span·class="p"·data-group-id="8652867047-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="4180778397-9">(</span><span·class="n">User_List</span><span·class="p"·data-group-id="4180778397-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="8652867047-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="8652867047-11">[</span><span·cla[·...·truncated·by·diffoscope;·len:·117,·SHA:·2f4ed9eb83f9d7de8ddaa3a57fb7b4da3d1a908b2de5722abf2549d320fa1503·...·]7-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="4180778397-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="4180778397-11">[</span><span·cla[·...·truncated·by·diffoscope;·len:·117,·SHA:·2e715cf1148185900e62d28c5d1d0fcb030cc4740907e29279e572d7d447ef07·...·]7-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="9051168477-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="9051168477-1">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·a83a3a07e3cf0e39dfa0d957318d0a65d334a2d8c04eb51e50246f48aabfb824·...·]-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="0365494161-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="0365494161-1">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·b7ab952dda3b6515eb440c51d3f8c29ebb701c2c1386efd2273da76fab547060·...·]-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="9051168477-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="9051168477-3">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·b7785d10774c22e3d8bf881160337574df4d3a308b6d8346d90c812596c2efb6·...·]-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="0365494161-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="0365494161-3">)</sp[·...·truncated·by·diffoscope;·len:·204,·SHA:·64f25a821117de3a0208c3e5a8a0ca5cf69a8cdc1903326b431213f244d412bc·...·]-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="9213001958-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="9213001958-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="0849621277-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="0849621277-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="9213001958-2">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="9213001958-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="0849621277-2">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="0849621277-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="9213001958-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="9213001958-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="0849621277-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0849621277-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="5701702604-1">(</span><span·class="ss">mod</span><span·class="p"·data-group-id="5701702604-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="9510709579-1">(</span><span·class="ss">mod</span><span·class="p"·data-group-id="9510709579-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="5701702604-2">(</span><span·class="p"·data-group-id="5701702604-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5701702604-3">]</span><span·class="p"·data-group-id="5701702604-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="9510709579-2">(</span><span·class="p"·data-group-id="9510709579-3">[</span><span·class="ss">fact</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9510709579-3">]</span><span·class="p"·data-group-id="9510709579-2">)</span><span·class="p">.</span><span·class="w">
  
155 </span><span·class="nf">fact</span><span·class="p"·data-group-id="5701702604-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="5701702604-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="9510709579-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="9510709579-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="5701702604-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="5701702604-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="9510709579-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="9510709579-5">)</span><span·class="p">;</span><span·class="w">
157 </span><span·class="nf">fact</span><span·class="p"·data-group-id="5701702604-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="5701702604-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="9510709579-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="9510709579-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="7755472403-1">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="7755472403-1">)</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7[·...·truncated·by·diffoscope;·len:·288,·SHA:·669c7b948a047e140abfe25d655b47dc08cf0134fda2e5264addfa5f86c77487·...·]-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="4046066876-1">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="4046066876-1">)</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·288,·SHA:·7b85e92e44764f7da3c414bf7ac0d4ecf7ad52f83e29c157607d06a79c152890·...·]-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="7755472403-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="7755472403-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="4046066876-3">(</span><span·class="mi">0</span><span·class="p"·data-group-id="4046066876-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="3344509833-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="3344509833-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="3893039648-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="3893039648-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="3344509833-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="3344509833-3">[</span><span·class="n">N</span>[·...·truncated·by·diffoscope;·len:·94,·SHA:·1b104980047fe1521a7956f6a39eba26823a523cf552aff22f847fc6000167c7·...·]-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="3893039648-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="3893039648-3">[</span><span·class="n">N</span>[·...·truncated·by·diffoscope;·len:·94,·SHA:·15372bab5959d8cfc1fa48c83e0fc45d6c3e9bc41ca5dfcd4e90ff26494ccc8a·...·]-2">)</span><span·class="p">,</span><span·class="w">
182 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="3344509833-4">(</span><span·class="n">N</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="3344509833-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="3893039648-4">(</span><span·class="n">N</span><span·class="o">+</span><span·class="mi">1</span><span·class="p"·data-group-id="3893039648-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.3/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.3/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.1/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.1/doc/html/lists.html"><code·class="inline">lists</code></a>
194 and·<a·href="../../lib/stdlib-6.2.1/doc/html/ets.html"><code·class="inline">ets</code></a>.</p><p>The·most·commonly·used·BIFs·belonging·to·<a·href="../../erts-15.2.3/doc/html/erlang.html"><code·class="inline">erlang</code></a>·are·<em>auto-imported</em>.·They·do194 and·<a·href="../../lib/stdlib-6.2.1/doc/html/ets.html"><code·class="inline">ets</code></a>.</p><p>The·most·commonly·used·BIFs·belonging·to·<a·href="../../erts-15.2.3/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.3/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.3/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="7541065736-1">(</span><span·class="p"·data-group-id="7541065736-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="7541065736-2">}</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·2eb0479dcfbabb2fdeffa3e9789923caa35934f9fcfc0c5f979bbefb1a688bd9·...·]-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="7582245390-1">(</span><span·class="p"·data-group-id="7582245390-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="7582245390-2">}</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·28e19beb87aee9b05a44d8357249218e13a45bcf6d21c2a3e4525dbc87ecefe1·...·]-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="7541065736-3">(</span><span·class="ss">&#39;Erlang&#39;</span><span·class="p"·data-group-id="7541065736-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="7582245390-3">(</span><span·class="ss">&#39;Erlang&#39;</span><span·class="p"·data-group-id="7582245390-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.3/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="8808614399-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="8808614399-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·2fec9fbab34207d4ab337da0d2f57267e7abd0337d58e6dd40f54777f9aebf1d·...·]-2">)</span><span·class="w">132 <p>A·process·is·created·by·calling·<a·href="../../erts-15.2.3/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="7870801365-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="7870801365-1">)</span><s[·...·truncated·by·diffoscope;·len:·195,·SHA:·94a01959b2ca553f90d2e7d10ed5e17fd261f633bca4aca2a6c45512d2ee9dab·...·]-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="8808614399-3">(</span><span·class="p"·data-group-id="8808614399-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="7870801365-3">(</span><span·class="p"·data-group-id="7870801365-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="8808614399-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="8808614399-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="7870801365-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="7870801365-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="8808614399-5">(</span><span·class="p"·data-group-id="8808614399-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="7870801365-5">(</span><span·class="p"·data-group-id="7870801365-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.3/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/1,2,3,4</code></a></li><li><a·href="../../erts-15.2.3/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.3/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.3/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.3/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.3/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/1,2,3,4</code></a></li><li><a·href="../../erts-15.2.3/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.3/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.3/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.3/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="8702833545-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8702833545-2">{</span><span·class="n">Field1</span><span·class="w">·</span><span·class="p"·data-group-id="8702833545-3">[</span>[·...·truncated·by·diffoscope;·len:·117,·SHA:·a92fa4d6dc41814e18a9f84a9c99defb96baca9b0a3b3845a0901011573af513·...·]-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="1216351136-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1216351136-2">{</span><span·class="n">Field1</span><span·class="w">·</span><span·class="p"·data-group-id="1216351136-3">[</span>[·...·truncated·by·diffoscope;·len:·117,·SHA:·31caa89f468e0328e8b9d79f6908b9105cef15d4f44b2f0f15f8145b477d4b46·...·]-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="8702833545-4">[</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ExprN</span><span·class="p"·data-group-id="8702833545-4">]</span><span·class="p"·data-group-id="8702833545-2">}</span><span·class="p"·data-group-id="8702833545-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="1216351136-4">[</span><span·class="o">=</span><span·class="w">·</span><span·class="n">ExprN</span><span·class="p"·data-group-id="1216351136-4">]</span><span·class="p"·data-group-id="1216351136-2">}</span><span·class="p"·data-group-id="1216351136-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.1/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.1/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="7445823968-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7445823968-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:·e8d88dc24a9538c0a564e2eac9c0f9bd12aed92d79c60c7d2a78fd6e74da0a81·...·]-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="0322598762-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0322598762-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:·0f2901ef02a291b1cc5d5e0ed56d779e88722b0bea5f60bf77b8086b8c4f183a·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
151 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="7445823968-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="7445823968-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="0322598762-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="0322598762-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="7445823968-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="7445823968-5">{</span><span·class="ss">name</span><span·class="o">=</span><[·...·truncated·by·diffoscope;·len:·251,·SHA:·34259058b95b50662e911d508d3204ac8dd5202f801c075061c9aced17a871cd·...·]-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="0322598762-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="0322598762-5">{</span><span·class="ss">name</span><span·class="o">=</span><[·...·truncated·by·diffoscope;·len:·251,·SHA:·4d69e2277c01f02b18ee0cb90e27dd92c391da46147edd3c6b2aa0127a3a7c28·...·]-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="1522922954-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1522922954-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</span[·...·truncated·by·diffoscope;·len:·174,·SHA:·131e92f9c981cc8c3627d4be186dbdb012ae2716cae59f30f4c59467ca1f61e0·...·]-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="1328579925-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1328579925-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</span[·...·truncated·by·diffoscope;·len:·174,·SHA:·6f0d7cffb65c1af98aac065bfed26833fac77b74893340c617870684e89c01bf·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
160 </span><span·class="nf">get_person_name</span><span·class="p"·data-group-id="1522922954-3">(</span><span·class="n">Person</span><span·class="p"·data-group-id="1522922954-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="1328579925-3">(</span><span·class="n">Person</span><span·class="p"·data-group-id="1328579925-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="6270609948-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6270609948-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·173,·SHA:·770825e4eb5aa829adb9b529c38c89b5abdcfe251a9c28bfe17c793fd2af43dd·...·]48-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="9395131348-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9395131348-2">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">phone</spa[·...·truncated·by·diffoscope;·len:·173,·SHA:·b2a1b60bacec45c3d85d2c40c477df226078ea64e70fb3e183e203d828bfe124·...·]48-1">)</span><span·class="p">.</span><span·class="w">
  
163 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="6270609948-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="6270609948-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="9395131348-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="9395131348-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="6270609948-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:·61,·SHA:·b0dfeec8ee579860f0cafdbe0d0d1547e71fbd497911fae076958b72c98f44fd·...·]48-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="9395131348-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:·61,·SHA:·281cee35ccafe85f77b19bfc7b602dfd2056da484e9a8d369bfb65a9bee9bbe6·...·]48-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="8565685222-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="8565685222-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·442,·SHA:·005aec5ece4cb77bd6788a187c3e45e9ea394e19c06482f9742cb1db74eb128b·...·]-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="0015525645-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="0015525645-1">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·442,·SHA:·ee6d893017981c74e918c8054777b62d41189152db46a2773c8116840956348d·...·]-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="8565685222-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="8565685222-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="0015525645-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="0015525645-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.3/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="8895829069-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="8895829069-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="8895829069-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·4ac0a8666c904cabb2d7eacac3bd7b8b36fab84e3947c15b6e00fd8d1717ad9e·...·]9-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.3/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="5613900789-1">(</span><span·class="n">P</span><span·class="p"·data-group-id="5613900789-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="5613900789-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·07697de694f2fdea14670fbb27c12b88a25179fc2126a383d1cf7c0c8759019d·...·]9-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="8895829069-3">(</span><span·class="p">_</span><span·class="n">P</span><span·class="p"·data-group-id="8895829069-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="5613900789-3">(</span><span·class="p">_</span><span·class="n">P</span><span·class="p"·data-group-id="5613900789-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="2733387942-1">(</span><span·class="ss">nrec0</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2733387942-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;nested0&quot;</span><span·class="p"·data-group-id="2733387942-2">}</span><span·class="p"·data-group-id="2733387942-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="2733387942-3">(</span><span·class="ss">nrec1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2733387942-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;nested1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">nrec0</span><span·class="o">=</span><span·class="o">#</span><span·class="ss">nrec0</span><span·class="p"·data-group-id="2733387942-5">{</span><span·class="p"·data-group-id="2733387942-5">}</span><span·class="p"·data-group-id="2733387942-4">}</span><span·class="p"·data-group-id="2733387942-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="2733387942-6">(</span><span·class="ss">nrec2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2733387942-7">{</span><span·class="[·...·truncated·by·diffoscope;·len:·485,·SHA:·3a14857838dc631eb46901df41a5f74346dadde0ae2ade816e582cea6cdabb24·...·]">)</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="3049951204-1">(</span><span·class="ss">nrec0</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·313,·SHA:·86be37de1c4c10e776a5d5be365a029d6e101ce4bf0776eb06b68a510d043eca·...·]">)</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="3049951204-3">(</span><span·class="ss">nrec1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3049951204-4">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;nested1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">nrec0</span><span·class="o">=</span><span·class="o">#</span><span·class="ss">nrec0</span><span·class="p"·data-group-id="3049951204-5">{</span><span·class="p"·data-group-id="3049951204-5">}</span><span·class="p"·data-group-id="3049951204-4">}</span><span·class="p"·data-group-id="3049951204-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="3049951204-6">(</span><span·class="ss">nrec2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3049951204-7">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;nested2&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">nrec1</span><span·class="o">=</span><span·class="o">#</span><span·class="ss">nrec1</span><span·class="p"·data-group-id="3049951204-8">{</span><span·class="p"·data-group-id="3049951204-8">}</span><span·class="p"·data-group-id="3049951204-7">}</span><span·class="p"·data-group-id="3049951204-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="2733387942-9">{</span><span·class="p"·data-group-id="2733387942-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="3049951204-9">{</span><span·class="p"·data-group-id="3049951204-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="8721873570-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8721873570-2">{</span><span·class="n">Field1</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span[·...·truncated·by·diffoscope;·len:·214,·SHA:·68b6b65275c03263abbc7b73c76b5c9ba9b50ed1c03e5d3ebe72a0867fa86a14·...·]-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·to217 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="5526343931-1">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5526343931-2">{</span><span·class="n">Field1</span><span·class="p">,</span><span·class="w">·</span><span·class="p">.</span><span[·...·truncated·by·diffoscope;·len:·214,·SHA:·cdfd0f3bd6e3d1c30e92302712cf3f7adf6cfda44c977acbe3f5c1c54b3bad0f·...·]-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="1078887004-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="1078887004-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·124,·SHA:·18020b42a46d6bb9f1f3aa6901c2caf99ab11b2917b120fe699fdadad1b57df4·...·]-2">]</span><span·class="w">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="4544318698-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="4544318698-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·124,·SHA:·79751e79638559910ffea93b2e8e174c77a3c71a13070fb1d63b48f14eeb1481·...·]-2">]</span><span·class="w">
219 </span><span·class="nf">record_info</span><span·class="p"·data-group-id="1078887004-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="1078887004-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·the219 </span><span·class="nf">record_info</span><span·class="p"·data-group-id="4544318698-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="4544318698-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.1/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.1/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="2060516343-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="2060516343-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="2060516343-2">}</span><span·class="p"·data-group-id="2060516343-1">}</span><span·class="w"> 
231 </span><span·class="p"·data-group-id="2060516343-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:·8481c5ab694b5edfaa69e56a0a938d09e3b77b2dbd97e120dd1418931585ba68·...·]230 instructions·are·used:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="0766787845-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:·0f2bb8bf34e7d2bbab096e7e619caa9a96219e62348c63bd5dad4c8744c373eb·...·]
 231 </span><span·class="p"·data-group-id="0766787845-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="0766787845-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="3463568154-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:·a05dbfc118ef0dc845f26f7a31d39ff08049252772340e8dfad43b431ac5acf8·...·]-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="9196869351-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:·0767548570077d311349fadd0b90c1144ab065b52608811336903d55f0bb10f8·...·]-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="8285533907-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="8285533907-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="9914454575-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="9914454575-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="7128208147-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="7128208147-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="3999998699-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="3999998699-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="0160721399-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="0160721399-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="3368157760-1">(</span><span·class="ss">ch3</span><span·class="p"·data-group-id="3368157760-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="0160721399-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="0160721399-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="3368157760-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="3368157760-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="0160721399-3">(</span><span·class="p"·data-group-id="0160721399-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0160721399-4">]</span><span·class="p"·data-group-id="0160721399-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="3368157760-3">(</span><span·class="p"·data-group-id="3368157760-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3368157760-4">]</span><span·class="p"·data-group-id="3368157760-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="0160721399-5">(</span><span·class="p"·data-group-id="0160721399-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:·5ee3f3b3f79a752af2ada12c690857ad4035bfa4822f9c66b64262f20cc4faf9·...·]-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="3368157760-5">(</span><span·class="p"·data-group-id="3368157760-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:·6e67b124538f7bbc9d638a50c27924f8f070d9f85cd5e121563ea1d492372910·...·]-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="0160721399-7">(</span><span·class="p"·data-group-id="0160721399-8">[</span><span·class="ss">available</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0160721399-8">]</span><span·class="p"·data-group-id="0160721399-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="3368157760-7">(</span><span·class="p"·data-group-id="3368157760-8">[</span><span·class="ss">available</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3368157760-8">]</span><span·class="p"·data-group-id="3368157760-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="0160721399-9">(</span><span·class="p"·data-group-id="0160721399-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:·37b07ad085dd4f2e3d8d2b9f34ded09c9a901d52107c856e3eb8495fc291c1ee·...·]-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="3368157760-9">(</span><span·class="p"·data-group-id="3368157760-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:·e88dc47f1b528525d20f8a14fecd624eb87db7b0bc8688b7fc92b48884c9377a·...·]-9">)</span><span·class="p">.</span><span·class="w">
  
355 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="0160721399-11">(</span><span·class="p"·data-group-id="0160721399-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="3368157760-11">(</span><span·class="p"·data-group-id="3368157760-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="0160721399-12">(</span><span·class="p"·data-group-id="0160721399-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="0160721399-13">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·7ef98fb45a8faafd6d9296b0546740005b614690d81d4cdd7f0218d70c66474b·...·]-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="3368157760-12">(</span><span·class="p"·data-group-id="3368157760-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="3368157760-13">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·407,·SHA:·f4b1e40d52bfbc151e320d056095b196b69986fc39dabc1bd8ea2945028ed22b·...·]-12">)</span><span·class="p">.</span><span·class="w">
  
357 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="0160721399-16">(</span><span·class="p"·data-group-id="0160721399-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="3368157760-16">(</span><span·class="p"·data-group-id="3368157760-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="0160721399-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="0160721399-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="3368157760-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="3368157760-17">)</span><span·class="p">.</span><span·class="w">
  
359 </span><span·class="nf">free</span><span·class="p"·data-group-id="0160721399-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="0160721399-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="3368157760-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="3368157760-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="0160721399-19">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0160721399-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:·98b839dedcfddeb5bde292c4c6a0a36473f8b75db62cdfa4f9653383192f0136·...·]-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="3368157760-19">(</span><span·class="ss">ch3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3368157760-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:·ac38e1138d08293b2b449fb0074fc16d48f52499fd06a8957aab44fb36886185·...·]-19">)</span><span·class="p">.</span><span·class="w">
  
361 </span><span·class="nf">available</span><span·class="p"·data-group-id="0160721399-21">(</span><span·class="p"·data-group-id="0160721399-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="3368157760-21">(</span><span·class="p"·data-group-id="3368157760-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="0160721399-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="0160721399-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="3368157760-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="3368157760-22">)</span><span·class="p">.</span><span·class="w">
  
363 </span><span·class="nf">init</span><span·class="p"·data-group-id="0160721399-23">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="0160721399-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="3368157760-23">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="3368157760-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
364 ····</span><span·class="p"·data-group-id="0160721399-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="0160721399-25">(</span><span·class="p"·data-group-id="0160721399-25">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·144973439703ea7a60802f8e245cb398d87ea840a83c5c48186f564338210a3e·...·]-24">}</span><span·class="p">.</span><span·class="w">364 ····</span><span·class="p"·data-group-id="3368157760-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="3368157760-25">(</span><span·class="p"·data-group-id="3368157760-25">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·832c13115ac72cb29bf6551db4f99766caf47c7b9640c4966feff510b8df136e·...·]-24">}</span><span·class="p">.</span><span·class="w">
  
365 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="0160721399-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:·04b42ed9bc6e3e08d1a79f73a1bbb9653647ea04159c0addd096b471e6b4420b·...·]-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="3368157760-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:·686e4ee4feebbe10f391d517f59aa938ebb0a9e0de01d90d564a87c3ac5bbf37·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
366 ····</span><span·class="p"·data-group-id="0160721399-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="0160721399-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·73f8b68762d11b94d0b1be01ee0fc790e588db7ca9c7c0e17fe18ae781e927e3·...·]-28">)</span><span·class="p">,</span><span·class="w">366 ····</span><span·class="p"·data-group-id="3368157760-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="3368157760-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·dff20c438eb5ae7044d38f40e28eda05e9965087158eba83dada371a02dd0c60·...·]-28">)</span><span·class="p">,</span><span·class="w">
367 ····</span><span·class="p"·data-group-id="0160721399-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="0160721399-29">}</span><span·class="p">;</span><span·class="w">367 ····</span><span·class="p"·data-group-id="3368157760-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="3368157760-29">}</span><span·class="p">;</span><span·class="w">
368 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="0160721399-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:·9f4d6ae521fec41ebf1cba729a6a02d7b7d2ccd9ee219a0aa55288e2bf3773bb·...·]-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="3368157760-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:·c6d9e70902d6f575b3dbf33e256974f266bc2de9de3fced62d99cbab8327836f·...·]-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="0160721399-31">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="0160721399-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="3368157760-31">(</span><span·class="n">Chs</span><span·class="p"·data-group-id="3368157760-31">)</span><span·class="p">,</span><span·class="w">
370 ····</span><span·class="p"·data-group-id="0160721399-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="0160721399-32">}</span><span·class="p">.</span><span·class="w">370 ····</span><span·class="p"·data-group-id="3368157760-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="3368157760-32">}</span><span·class="p">.</span><span·class="w">
  
371 </span><span·class="nf">handle_cast</span><span·class="p"·data-group-id="0160721399-33">(</span><span·class="p"·data-group-id="0160721399-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="0160721399-34">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·08ab05cc22dc770c8296334546a30b840735e628dccf8f4b357ef6febfed8a62·...·]-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="3368157760-33">(</span><span·class="p"·data-group-id="3368157760-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="3368157760-34">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·91,·SHA:·a6222637651a3bc47d611a854eed02848cd492557d231a1e798dc83e3056068e·...·]-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="0160721399-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="0160721399-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="3368157760-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="3368157760-35">)</span><span·class="p">,</span><span·class="w">
373 ····</span><span·class="p"·data-group-id="0160721399-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="0160721399-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="3368157760-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="3368157760-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="7176549544-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="6313949778-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="7176549544-2">[</span><span·class="p"·data-group-id="7176549544-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="7176549544-3">}</span><span·class="p">,</span><span·class="w">375 ·</span><span·class="p"·data-group-id="6313949778-2">[</span><span·class="p"·data-group-id="6313949778-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="6313949778-3">}</span><span·class="p">,</span><span·class="w">
376 ··</span><span·class="p"·data-group-id="7176549544-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="7176549544-4">}</span><span·class="p">,</span><span·class="w">376 ··</span><span·class="p"·data-group-id="6313949778-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="6313949778-4">}</span><span·class="p">,</span><span·class="w">
377 ··</span><span·class="p"·data-group-id="7176549544-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7176549544-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:·0baf3b98d12a0bd74cdac073bf7b7e30f7ad516d4b0f7e35f8e3355d7fabfcfb·...·]-5">}</span><span·class="p">,</span><span·class="w">377 ··</span><span·class="p"·data-group-id="6313949778-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6313949778-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:·4259458e76bb4d9a4ed403f91547ba659811bf6dbf3f767e7ba63de056038763·...·]-5">}</span><span·class="p">,</span><span·class="w">
378 ··</span><span·class="p"·data-group-id="7176549544-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7176549544-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="7176549544-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·1b24261687955af93290f900e45bfa62b861f2ee45162f2bb5776c287cf33ae6·...·]-7">}</span><span·class="p">,</span><span·class="w">378 ··</span><span·class="p"·data-group-id="6313949778-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6313949778-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="6313949778-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·8bc5f1d9f9f77e14528250efa2c6118f7aaaa519467842dc2a2abac79ecaf1f6·...·]-7">}</span><span·class="p">,</span><span·class="w">
379 ··</span><span·class="p"·data-group-id="7176549544-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7176549544-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:·cc932e226841857d9a84dec9423ef8832343e7b40576331d179663d6d07452ec·...·]-9">}</span><span·class="p">,</span><span·class="w">379 ··</span><span·class="p"·data-group-id="6313949778-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6313949778-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:·e2b518bcb7248051eda82ccb62f96e5b4217ea4b7cba0b956c81ce4c6f25f09b·...·]-9">}</span><span·class="p">,</span><span·class="w">
380 ··</span><span·class="p"·data-group-id="7176549544-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7176549544-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="7176549544-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·18310b50db07060281ffb05e33f7926b0df77cb0c1bc2c9247e475d4a1fed7bf·...·]-11">}</span><span·class="w">380 ··</span><span·class="p"·data-group-id="6313949778-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6313949778-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="6313949778-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·d5f49e5ca00e4df41f3ba544a2854de3da7185ef38da98cef90c2eff1786bb48·...·]-11">}</span><span·class="w">
381 ·</span><span·class="p"·data-group-id="7176549544-2">]</span><span·class="p"·data-group-id="7176549544-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="6313949778-2">]</span><span·class="p"·data-group-id="6313949778-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="0068992340-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="8621021033-1">{</span><span·class="s">&quot;2&quot;</span><span·class="p">,</span><span·class="w">
384 ·</span><span·class="p"·data-group-id="0068992340-2">[</span><span·class="p"·data-group-id="0068992340-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0068992340-4">[</span><span·class="p"·data-group-id="0068992340-5"[·...·truncated·by·diffoscope;·len:·319,·SHA:·0d321ecc3d5509b631e3ac26d3526ebcf33066c909d1446e58e8bcea367eb8b5·...·]-2">]</span><span·class="p">,</span><span·class="w">384 ·</span><span·class="p"·data-group-id="8621021033-2">[</span><span·class="p"·data-group-id="8621021033-3">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8621021033-4">[</span><span·class="p"·data-group-id="8621021033-5"[·...·truncated·by·diffoscope;·len:·319,·SHA:·95d84eafa5a608faf97402f25e8c55767025299eefcfe0ad441816040be74610·...·]-2">]</span><span·class="p">,</span><span·class="w">
385 ·</span><span·class="p"·data-group-id="0068992340-6">[</span><span·class="p"·data-group-id="0068992340-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0068992340-8">[</span><span·class="p"·data-group-id="0068992340-9"[·...·truncated·by·diffoscope;·len:·319,·SHA:·58c624f065d7181c3a1aced4cfa15a5bc1a61d30bc6ec7020ac98448af4d18d4·...·]-6">]</span><span·class="w">385 ·</span><span·class="p"·data-group-id="8621021033-6">[</span><span·class="p"·data-group-id="8621021033-7">{</span><span·class="s">&quot;1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8621021033-8">[</span><span·class="p"·data-group-id="8621021033-9"[·...·truncated·by·diffoscope;·len:·319,·SHA:·c7703c949828491631ea61161e594876fd483cb4e44878d46145c98e335cac71·...·]-6">]</span><span·class="w">
386 </span><span·class="p"·data-group-id="0068992340-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="8621021033-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="7974061977-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="4654350041-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
413 ·</span><span·class="p"·data-group-id="7974061977-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="7974061977-2">}</span><span·class="p">,</span><span·class="w">413 ·</span><span·class="p"·data-group-id="4654350041-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="4654350041-2">}</span><span·class="p">,</span><span·class="w">
414 ·</span><span·class="p"·data-group-id="7974061977-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="7974061977-3">}</span><span·class="p">,</span><span·class="w">414 ·</span><span·class="p"·data-group-id="4654350041-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="4654350041-3">}</span><span·class="p">,</span><span·class="w">
415 ·</span><span·class="p"·data-group-id="7974061977-4">[</span><span·class="p"·data-group-id="7974061977-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="7974061977-5">}</span><span·class="p">,</span><span·class="w">415 ·</span><span·class="p"·data-group-id="4654350041-4">[</span><span·class="p"·data-group-id="4654350041-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="4654350041-5">}</span><span·class="p">,</span><span·class="w">
416 ··</span><span·class="p"·data-group-id="7974061977-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="7974061977-6">}</span><span·class="p">,</span><span·class="w">416 ··</span><span·class="p"·data-group-id="4654350041-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="4654350041-6">}</span><span·class="p">,</span><span·class="w">
417 ··</span><span·class="p"·data-group-id="7974061977-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="7974061977-7">}</span><span·class="p">,</span><span·class="w">417 ··</span><span·class="p"·data-group-id="4654350041-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="4654350041-7">}</span><span·class="p">,</span><span·class="w">
418 ··</span><span·class="p"·data-group-id="7974061977-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="7974061977-8">}</span><span·class="p"·data-group-id="7974061977-4">]</span><span·class="w">418 ··</span><span·class="p"·data-group-id="4654350041-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="4654350041-8">}</span><span·class="p"·data-group-id="4654350041-4">]</span><span·class="w">
419 </span><span·class="p"·data-group-id="7974061977-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="4654350041-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/68951 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="6675318740-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6675318740-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:·46b4a976887acd25c4418764b0e551b42b36ba96494128d368846a364b0378ad·...·]-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="5452221746-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5452221746-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:·67324a7604daed366a4d4ba27c6133aab06e1674cdda73ff6decd62d0f652e72·...·]-3">}</span><span·class="p">,</span><span·class="w">
144 ·</span><span·class="p"·data-group-id="6675318740-4">[</span><span·class="p"·data-group-id="6675318740-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="6675318740-5">}</span><span·class="p">,</span><span·class="w">144 ·</span><span·class="p"·data-group-id="5452221746-4">[</span><span·class="p"·data-group-id="5452221746-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="5452221746-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="6675318740-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="6675318740-6">}</span><span·class="p"·data-group-id="6675318740-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·f43a405dd408eaa381e7a868f1d328f00966978a72e57bcefe26a5d8a261744d·...·]-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="5452221746-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="5452221746-6">}</span><span·class="p"·data-group-id="5452221746-4">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·94eb7d8e3bb2d9f4fe72a34342c1949bb99cf3162d75213e66d3959158089162·...·]-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="7373115229-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="0711136865-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="7373115229-2">[</span><span·class="p"·data-group-id="7373115229-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="7373115229-3">}</span><span·class="p">,</span><span·class="w">151 ·</span><span·class="p"·data-group-id="0711136865-2">[</span><span·class="p"·data-group-id="0711136865-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="0711136865-3">}</span><span·class="p">,</span><span·class="w">
152 ··</span><span·class="p"·data-group-id="7373115229-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="7373115229-4">}</span><span·class="p">,</span><span·class="w">152 ··</span><span·class="p"·data-group-id="0711136865-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="0711136865-4">}</span><span·class="p">,</span><span·class="w">
153 ··</span><span·class="p"·data-group-id="7373115229-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7373115229-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:·1f1e8d0e52dcdfd111df549a5c23b0842bd63d670df8a1eda38c7b04223287b6·...·]-5">}</span><span·class="p">,</span><span·class="w">153 ··</span><span·class="p"·data-group-id="0711136865-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0711136865-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:·ee29aaf67acf41cde48734ea11597f039d095d06010f27436515962e551e8a64·...·]-5">}</span><span·class="p">,</span><span·class="w">
154 ··</span><span·class="p"·data-group-id="7373115229-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7373115229-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="7373115229-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·232135d5ce2ce04aae804822242fad7b76a38d3f002f86bd7b6d998589d381bb·...·]-7">}</span><span·class="p">,</span><span·class="w">154 ··</span><span·class="p"·data-group-id="0711136865-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0711136865-8">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="0711136865-8">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·168215ea002061df4987da260e967eb3a93fb57c11049f3069ce33a3e9a6dcf6·...·]-7">}</span><span·class="p">,</span><span·class="w">
155 ··</span><span·class="p"·data-group-id="7373115229-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7373115229-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:·f908a61080d162d8bb854448d1e9e0efcb7e211bd7c442fe6409ba2328d8848d·...·]-9">}</span><span·class="p">,</span><span·class="w">155 ··</span><span·class="p"·data-group-id="0711136865-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0711136865-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:·7d548eaac76e4f041bb0d7e2c10f99ad3f24d76293d9e44bdbd65b0958b7adcf·...·]-9">}</span><span·class="p">,</span><span·class="w">
156 ··</span><span·class="p"·data-group-id="7373115229-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7373115229-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="7373115229-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·0cf25f1e974514f8f017b4226cf7d26d999f7711e3ab5d57e061ea38ae0be42e·...·]-11">}</span><span·class="w">156 ··</span><span·class="p"·data-group-id="0711136865-11">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0711136865-12">{</span><span·class="ss">ch_app</span><span·class="p">,</span><span·class="p"·data-group-id="0711136865-13">[</s[·...·truncated·by·diffoscope;·len:·153,·SHA:·b0001cd685ebafd84e7603f61c735d50762160d4913a2a09a1b6775774302dd3·...·]-11">}</span><span·class="w">
157 ·</span><span·class="p"·data-group-id="7373115229-2">]</span><span·class="p"·data-group-id="7373115229-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="0711136865-2">]</span><span·class="p"·data-group-id="0711136865-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="4279995867-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="4066352933-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">
159 ·</span><span·class="p"·data-group-id="4279995867-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="4279995867-2">}</span><span·class="p">,</span><span·class="w">159 ·</span><span·class="p"·data-group-id="4066352933-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="4066352933-2">}</span><span·class="p">,</span><span·class="w">
160 ·</span><span·class="p"·data-group-id="4279995867-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="4279995867-3">}</span><span·class="p">,</span><span·class="w">160 ·</span><span·class="p"·data-group-id="4066352933-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="4066352933-3">}</span><span·class="p">,</span><span·class="w">
161 ·</span><span·class="p"·data-group-id="4279995867-4">[</span><span·class="p"·data-group-id="4279995867-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="4279995867-5">}</span><span·class="p">,</span><span·class="w">161 ·</span><span·class="p"·data-group-id="4066352933-4">[</span><span·class="p"·data-group-id="4066352933-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="4066352933-5">}</span><span·class="p">,</span><span·class="w">
162 ··</span><span·class="p"·data-group-id="4279995867-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="4279995867-6">}</span><span·class="p">,</span><span·class="w">162 ··</span><span·class="p"·data-group-id="4066352933-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="4066352933-6">}</span><span·class="p">,</span><span·class="w">
163 ··</span><span·class="p"·data-group-id="4279995867-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="4279995867-7">}</span><span·class="p">,</span><span·class="w">163 ··</span><span·class="p"·data-group-id="4066352933-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="4066352933-7">}</span><span·class="p">,</span><span·class="w">
164 ··</span><span·class="p"·data-group-id="4279995867-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="4279995867-8">}</span><span·class="p"·data-group-id="4279995867-4">]</span><span·class="w">164 ··</span><span·class="p"·data-group-id="4066352933-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="4066352933-8">}</span><span·class="p"·data-group-id="4066352933-4">]</span><span·class="w">
165 </span><span·class="p"·data-group-id="4279995867-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="4066352933-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="6042052329-1">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="6042052329-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="5258784594-1">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="5258784594-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="6042052329-2">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="6042052329-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="5258784594-2">(</span><span·class="s">&quot;ch_rel-1&quot;</span><span·class="p"·data-group-id="5258784594-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="2632608239-1">(</span><span·class="ss">tut19</span><span·class="p"·data-group-id="2632608239-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="6349724608-1">(</span><span·class="ss">tut19</span><span·class="p"·data-group-id="6349724608-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="2632608239-2">(</span><span·class="p"·data-group-id="2632608239-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:·b400e37ba6e581e5b5aa006ffb7efff3cf892db590136f54d18f916195d0fc02·...·]-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="6349724608-2">(</span><span·class="p"·data-group-id="6349724608-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:·4227bad24dd74a81a64393001960b7296a9720ff8f0268e0e919ad698115127f·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
138 </span><span·class="nf">ping</span><span·class="p"·data-group-id="2632608239-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="2632608239-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="6349724608-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="6349724608-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="2632608239-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="2632608239-6">[</span><span·class="p"·data-group-id="26326[·...·truncated·by·diffoscope;·len:·58,·SHA:·0ec6b3276723f36ef5deb50762bf4fb57a2a5f67b54f8d0af254e63d0bbc21ce·...·]-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="6349724608-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="6349724608-6">[</span><span·class="p"·data-group-id="63497[·...·truncated·by·diffoscope;·len:·58,·SHA:·965a293d897ac16a3d4ddba49c7f43b3a18ff0d113efdb3dd9281dd291b8946b·...·]-5">)</span><span·class="p">;</span><span·class="w">
  
140 </span><span·class="nf">ping</span><span·class="p"·data-group-id="2632608239-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="2632608239-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="6349724608-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="6349724608-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
141 ····</span><span·class="p"·data-group-id="2632608239-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="2632608239-8">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·305,·SHA:·4f1bb06248bfdae94e8a1cfcc91705279861edbe28fdd83e22d9bb3f6978e8bc·...·]-9">}</span><span·class="p">,</span><span·class="w">141 ····</span><span·class="p"·data-group-id="6349724608-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="6349724608-8">}</span><span·class="w">·</span><span·class="o">!</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·305,·SHA:·0191d395a62c95512edab805c001f55d1ecdcdf26fcf9d6f47e6d6bea284649b·...·]-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="2632608239-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="2632608239-12">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·71fe73064c94be1773b62187cb022b2d3e6bfa211607fdc448e5605e80592a62·...·]-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="6349724608-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="6349724608-12">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·a9fb55d0864c6cb3247737e6fd282021b149662c6cbf95015434c6edda6d3311·...·]-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="2632608239-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="2[·...·truncated·by·diffoscope;·len:·9,·SHA:·c017b882095149aa1190088b9b904a6096ac5ab2e298b6c70672409ec62bab3a·...·]-13">)</span><span·class="p">.</span><span·class="w">146 ····</span><span·class="nf">ping</span><span·class="p"·data-group-id="6349724608-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="6[·...·truncated·by·diffoscope;·len:·9,·SHA:·e357aae835aea981fc992b4e9b5aab2089b998330369c7ee47a1b0855efc04a0·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
147 </span><span·class="nf">pong</span><span·class="p"·data-group-id="2632608239-14">(</span><span·class="p"·data-group-id="2632608239-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="6349724608-14">(</span><span·class="p"·data-group-id="6349724608-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="2632608239-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="2632608239-15">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">149 ········</span><span·class="p"·data-group-id="6349724608-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="6349724608-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="2632608239-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="2632608239-17">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·07b02bb8dc80e2dfe3c0828130e12474a317dd583cfdeda2821bbe6a92a738e7·...·]-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="6349724608-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="6349724608-17">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·6cd61e5cedf6331eeaffe4c20cd74069b30568b0f7561ee07710d587f8f0090b·...·]-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="2632608239-18">(</span><span·class="p"·data-group-id="2632608239-18">)</span><span·class="w">152 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="6349724608-18">(</span><span·class="p"·data-group-id="6349724608-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="2632608239-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="2632608239-20">[</span><span·class="p"·data-group-id="26[·...·truncated·by·diffoscope;·len:·62,·SHA:·52a1cca1ef59aae5fa8ca580ffb28f642d3bf4ac30f8dc380f2bbeb73c911dfc·...·]-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="6349724608-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="6349724608-20">[</span><span·class="p"·data-group-id="63[·...·truncated·by·diffoscope;·len:·62,·SHA:·9c6c88a443657e84f41135a6808694f9a9e7c18b9b1d4c6c944bde338507ffc0·...·]-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="2632608239-21">(</span><span·class="p"·data-group-id="2632608239-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="6349724608-21">(</span><span·class="p"·data-group-id="6349724608-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="2632608239-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="2632608239-23">(</span><span·class="ss">tut19</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·282,·SHA:·d4b00b8283c4c1dbdc2fc2b4d6d46cecf78d05878d794b4485441a48d2c4a938·...·]-22">)</span><span·class="p">.</span><span·class="w">157 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="6349724608-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="6349724608-23">(</span><span·class="ss">tut19</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·282,·SHA:·907498d7e87b437263bff25e0400d17db6ba6881c2c5e1caea5ad0c787778eac·...·]-22">)</span><span·class="p">.</span><span·class="w">
  
158 </span><span·class="nf">start_ping</span><span·class="p"·data-group-id="2632608239-25">(</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="2632608239-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="6349724608-25">(</span><span·class="n">Pong_Node</span><span·class="p"·data-group-id="6349724608-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="2632608239-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="2632608239-27">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·174,·SHA:·19f7ff00432f9dfd3c5e124af64f03b6964c65bf03b83011960dd40e5f7039bc·...·]-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="6349724608-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="6349724608-27">[</span><span·class="mi">3</span><[·...·truncated·by·diffoscope;·len:·174,·SHA:·127eaf3e5b360f8db6592325a7690a641515670cebc6b55210101a8da9445d65·...·]-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="8699168535-1">(</span><span·class="p"·data-group-id="8699168535-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="9109020835-1">(</span><span·class="p"·data-group-id="9109020835-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="8699168535-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="8699168535-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 ········</span><span·class="p"·data-group-id="9109020835-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="9109020835-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="8699168535-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="8699168535-4">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·61,·SHA:·31e00b250e09707231e1691ddbf3966bbc4f73f70839c8388085704452db8983·...·]35-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="9109020835-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="9109020835-4">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·61,·SHA:·e0b4ef92ad3bac481002d062d3b3cb948deedc29c9785616b38fd49d12724519·...·]35-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="8699168535-5">(</span><span·class="p"·data-group-id="8699168535-5">)</span><span·class="w">175 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="9109020835-5">(</span><span·class="p"·data-group-id="9109020835-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="8699168535-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="8699168535-7">[</span><span·class="p"·data-group-id="8699[·...·truncated·by·diffoscope;·len:·57,·SHA:·3665cd357c0a8e671d573cda562b7e137e8b9ac6e5cc77d0ad5af40e15c3c3ee·...·]35-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="9109020835-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="9109020835-7">[</span><span·class="p"·data-group-id="9109[·...·truncated·by·diffoscope;·len:·57,·SHA:·850d953dc772c732b14957557f8e16502ce62a4de00f24c2a80b65da9ca33021·...·]35-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="9598333518-1">(</span><span·class="p"·data-group-id="9598333518-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="8888594304-1">(</span><span·class="p"·data-group-id="8888594304-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.3/doc/html/erlang.html#spawn_link/1">spawn_link</a>·that·does·the215 time,·there·is·a·special·BIF,·<a·href="../../erts-15.2.3/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="0824937727-1">(</span><span·class="ss">tut20</span><span·class="p"·data-group-id="0824937727-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="1961444629-1">(</span><span·class="ss">tut20</span><span·class="p"·data-group-id="1961444629-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="0824937727-2">(</span><span·class="p"·data-group-id="0824937727-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:·03f818d0d7f8ce19ef1a05b5d61c415386122559354cdccf26946a82ff913bff·...·]-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="1961444629-2">(</span><span·class="p"·data-group-id="1961444629-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:·e4e8c4ec6b665abc6edea6b91f7185086589d5ae2bfaa4243168be824a4a8f29·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
219 </span><span·class="nf">ping</span><span·class="p"·data-group-id="0824937727-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="0824937727-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="1961444629-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="1961444629-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="0824937727-5">(</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="0824937727-5">)</span><span·class="p">,</span><span·class="w">220 ····</span><span·class="nf">link</span><span·class="p"·data-group-id="1961444629-5">(</span><span·class="n">Pong_Pid</span><span·class="p"·data-group-id="1961444629-5">)</span><span·class="p">,</span><span·class="w">
221 ····</span><span·class="nf">ping1</span><span·class="p"·data-group-id="0824937727-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="0824937727-6">)</span><span·class="p">.</span><span·class="w">221 ····</span><span·class="nf">ping1</span><span·class="p"·data-group-id="1961444629-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="1961444629-6">)</span><span·class="p">.</span><span·class="w">
  
222 </span><span·class="nf">ping1</span><span·class="p"·data-group-id="0824937727-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="0824937727-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="1961444629-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="1961444629-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="0824937727-8">(</span><span·class="ss">ping</span><span·class="p"·data-group-id="0824937727-8">)</span><span·class="p">;</span><span·class="w">223 ····</span><span·class="nf">exit</span><span·class="p"·data-group-id="1961444629-8">(</span><span·class="ss">ping</span><span·class="p"·data-group-id="1961444629-8">)</span><span·class="p">;</span><span·class="w">
  
224 </span><span·class="nf">ping1</span><span·class="p"·data-group-id="0824937727-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="0824937727-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="1961444629-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="1961444629-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="0824937727-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="0824937727-11">(</span><span·class="p"·data-group-id="0824937727-11">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·675428eac34298b5cb4ffb40ef491ee74a37270d2e9d316e15a8a764ba16718b·...·]-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="1961444629-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="1961444629-11">(</span><span·class="p"·data-group-id="1961444629-11">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·ac5d57f0476164a0d94967ad130aadeefc11df61807fbae88a5dbc8149839f89·...·]-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="0824937727-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="0824937727-13">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·397b4f23ffb2da48659251a25c44062c1d557762f4effe0570cbf76df34dc4a3·...·]-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="1961444629-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="1961444629-13">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·d54b2eb3ebbe90d9772a841954e8f1c96b7b3b38d4db395489f01e1883d89530·...·]-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="0824937727-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="08[·...·truncated·by·diffoscope;·len:·8,·SHA:·b825e801fccffa55b5fea33c5ec90263f3f834baf17d371a97c3574c6c817646·...·]-14">)</span><span·class="p">.</span><span·class="w">230 ····</span><span·class="nf">ping1</span><span·class="p"·data-group-id="1961444629-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="19[·...·truncated·by·diffoscope;·len:·8,·SHA:·6506f5a8e125d1359f987b96dd295e02fe4c98e7abe611f3335fee41cdd63c51·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
231 </span><span·class="nf">pong</span><span·class="p"·data-group-id="0824937727-15">(</span><span·class="p"·data-group-id="0824937727-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="1961444629-15">(</span><span·class="p"·data-group-id="1961444629-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="0824937727-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="0824937727-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">233 ········</span><span·class="p"·data-group-id="1961444629-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="1961444629-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="0824937727-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="0824937727-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·310a00431f6e659fa72f6c92b49386a55f7a8fa94a83edb7a183ca87911ed0ce·...·]-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="1961444629-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="1961444629-18">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·8df69eedd9289b62c6c715d0cfcd750cf7fc3f48fa7dc391774d96b654b9e5ad·...·]-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="0824937727-19">(</span><span·class="p"·data-group-id="0824937727-19">)</span><span·class="w">236 ············</span><span·class="nf">pong</span><span·class="p"·data-group-id="1961444629-19">(</span><span·class="p"·data-group-id="1961444629-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="0824937727-20">(</span><span·class="n">Ping_Node</span><span·class="p"·data-group-id="0824937727-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="1961444629-20">(</span><span·class="n">Ping_Node</span><span·class="p"·data-group-id="1961444629-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="0824937727-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="0824937727-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·a964e767ecf36f4549cdf00d0793a50ecc973aaa30cbad8f4d25b9ba47ce9fc8·...·]-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="1961444629-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="1961444629-22">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·9a2eca0e08c3c8d2f0456302c02e74cf897cfecb8d77c7df1b2c814d9bac05c7·...·]-21">)</span><span·class="p">,</span><span·class="w">
240 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="0824937727-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:·1ea560f66321e01453dcb64de5ee289c19be930774234a14c6e8dffe6e0c104a·...·]-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="1961444629-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:·01c93d84b1da327237c6415e1144cb2b7f3df9903e6d89027997295ababaf092·...·]-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.3/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.3/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="8069375390-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="8069375390-1">)</span></code></pre><p>There·are·several·other·process·flags,·see·<a·href="../../erts-15.2.3/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="1244990766-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="1244990766-1">)</span></code></pre><p>There·are·several·other·process·flags,·see·<a·href="../../erts-15.2.3/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="0855654649-1">(</span><span·class="ss">tut21</span><span·class="p"·data-group-id="0855654649-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="6825998969-1">(</span><span·class="ss">tut21</span><span·class="p"·data-group-id="6825998969-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="0855654649-2">(</span><span·class="p"·data-group-id="0855654649-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:·241,·SHA:·3a371b2f36188d49d42cfcade794d3e5f39d66a17665f26dd6befab4150576de·...·]9-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="6825998969-2">(</span><span·class="p"·data-group-id="6825998969-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:·241,·SHA:·c4e2b2cb8277b55424419c5a858d18187b1f4d413cde9713d0100f82118e0144·...·]9-2">)</span><span·class="p">.</span><span·class="w">
  
260 </span><span·class="nf">ping</span><span·class="p"·data-group-id="0855654649-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="0855654649-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="6825998969-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="6825998969-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.3/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.3/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="9713043250-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="9713043250-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="4461202087-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="4461202087-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.3/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="1023522762-1">(</span><span·class="p"·data-group-id="1023522762-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.3/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="7990181837-1">(</span><span·class="p"·data-group-id="7990181837-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="8900522038-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="8900522038-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="8900522038-2">(</span><span·class="p"·data-group-id="8900522038-3">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·clas[·...·truncated·by·diffoscope;·len:·86,·SHA:·599057907572e8803729bad004ef1219cc4013d94050cd8ace39133f23325c3e·...·]">)</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="6924033214-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="6924033214-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="6924033214-2">(</span><span·class="p"·data-group-id="6924033214-3">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6924033214-3">]</span><span·class="p"·data-group-id="6924033214-2">)</span><span·class="p">.</span><span·class="w">
  
165 </span><span·class="nf">double</span><span·class="p"·data-group-id="8900522038-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="8900522038-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="6924033214-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="6924033214-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="9616068706-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="9616068706-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="9236375861-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="9236375861-1">)</span><span·class="p">.</span><span·class="w">
169 </span><span·class="p"·data-group-id="9616068706-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut</span><span·class="p"·data-group-id="9616068706-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="9236375861-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut</span><span·class="p"·data-group-id="9236375861-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="2145312560-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="2145312560-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="0805666731-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="0805666731-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="1036230550-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="1036230550-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="6787421320-1">(</span><span·class="ss">tut</span><span·class="p"·data-group-id="6787421320-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="6573217038-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="6573217038-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="8999692079-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="8999692079-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="8349398958-1">(</span><span·class="p"·data-group-id="8349398958-2">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="8349398958-2">]</span><span·class="p"·data-group-id="8349398958-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="6092314300-1">(</span><span·class="p"·data-group-id="6092314300-2">[</span><span·class="ss">double</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6092314300-2">]</span><span·class="p"·data-group-id="6092314300-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="2087806059-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="2087806059-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="1229333499-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="1229333499-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="2087806059-2">(</span><span·class="p"·data-group-id="2087806059-3">[</span><span·class="ss">fac</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="2087806059-3">]</span><span·class="p"·data-group-id="2087806059-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="1229333499-2">(</span><span·class="p"·data-group-id="1229333499-3">[</span><span·class="ss">fac</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="1229333499-3">]</span><span·class="p"·data-group-id="1229333499-2">)</span><span·class="p">.</span><span·class="w">
  
186 </span><span·class="nf">fac</span><span·class="p"·data-group-id="2087806059-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="2087806059-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="1229333499-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="1229333499-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="2087806059-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="2087806059-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="1229333499-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="1229333499-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="2087806059-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="2087806059-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="1229333499-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="1229333499-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="6708970623-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="6708970623-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="3159600877-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="3159600877-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="8781717434-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="8781717434-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="8781717434-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="8781717434-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="4590603093-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="4590603093-1">)</span><span·class="p">.</span><span·class="w"> 
196 </span><span·class="p"·data-group-id="4590603093-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="4590603093-2">}</span></code></pre><p>And·now·calculate·the·factorial·of·4.</p><pre><co[·...·truncated·by·diffoscope;·len:·310,·SHA:·33bfef7d5e6f64d86b960bc0f884bb7cfa4a45a8a6d6d9603de3736c736099c3·...·]</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="4822449372-1">(</span><span·class="n">N</span><span·class="p"·data-group-id="4822449372-1">)</span><span·class="w">·</span><span·class="p">-[·...·truncated·by·diffoscope;·len:·4,·SHA:·77d57e39b407cbca2770fb31b55c148c757f4f84d1e2ce824c7d5cf9412a6298·...·]</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="4822449372-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="4822449372-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="5045298142-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="5045298142-1">)</span><span·class="p">.</span><span·class="w">
 196 </span><span·class="p"·data-group-id="5045298142-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="5045298142-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="7790285377-1">(</span><span·class="mi">4</span><span·class="p"·data-group-id="7790285377-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="9980104757-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="9980104757-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="8238508514-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="8238508514-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="9980104757-2">(</span><span·class="p"·data-group-id="9980104757-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:·37a06b1449ba649c6791c404fe88bc9b761597a96b5d01661f07776c1fdd5d42·...·]-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="8238508514-2">(</span><span·class="p"·data-group-id="8238508514-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:·574636ac6e5eebdfc44d6a4f01ed29af7d2b9cc8398c898ee0bffa8aa3096057·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="nf">fac</span><span·class="p"·data-group-id="9980104757-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="9980104757-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="8238508514-4">(</span><span·class="mi">1</span><span·class="p"·data-group-id="8238508514-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="9980104757-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="9980104757-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="8238508514-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="8238508514-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="9980104757-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="9980104757-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="8238508514-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="8238508514-6">)</span><span·class="p">.</span><span·class="w">
  
204 </span><span·class="nf">mult</span><span·class="p"·data-group-id="9980104757-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="9980104757-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="8238508514-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="8238508514-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="6156826603-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="6156826603-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="3060085588-1">(</span><span·class="ss">tut1</span><span·class="p"·data-group-id="3060085588-1">)</span><span·class="p">.</span><span·class="w">
207 </span><span·class="p"·data-group-id="6156826603-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="6156826603-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:·c7cd5ad3f3ff57b9d44339994de3bf02d70daa69ecb801b6a866affb28db3a4d·...·]-1">)</span><span·class="p">.</span><span·class="w">207 </span><span·class="p"·data-group-id="3060085588-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut1</span><span·class="p"·data-group-id="3060085588-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:·9b88895d84f9bd63141920d1f9496f5a625ca52cd9d639534605a7bc42d9bfb8·...·]-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="1823236405-1">(</span><span·class="ss">tut2</span><span·class="p"·data-group-id="1823236405-1">)</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="2947767494-1">(</span><span·class="ss">tut2</span><span·class="p"·data-group-id="2947767494-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="1823236405-2">(</span><span·class="p"·data-group-id="1823236405-3">[</span><span·class="ss">convert</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="1823236405-3">]</span><span·class="p"·data-group-id="1823236405-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="2947767494-2">(</span><span·class="p"·data-group-id="2947767494-3">[</span><span·class="ss">convert</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="2947767494-3">]</span><span·class="p"·data-group-id="2947767494-2">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">convert</span><span·class="p"·data-group-id="1823236405-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="1823236405-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="2947767494-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="2947767494-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="1823236405-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="1823236405-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="2947767494-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="2947767494-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="6354430427-1">(</span><span·class="ss">tut2</span><span·class="p"·data-group-id="6354430427-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="5372022781-1">(</span><span·class="ss">tut2</span><span·class="p"·data-group-id="5372022781-1">)</span><span·class="p">.</span><span·class="w">
227 </span><span·class="p"·data-group-id="6354430427-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut2</span><span·class="p"·data-group-id="6354430427-2">}</span></code></pre><p>Test:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">[·...·truncated·by·diffoscope;·len:·292,·SHA:·f7ab00fdf7c91264b01908ef73b07525314e87444dbb8447eb2fff9c494df7fc·...·]-1">)</span><span·class="p">.</span><span·class="w">227 </span><span·class="p"·data-group-id="5372022781-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">tut2</span><span·class="p"·data-group-id="5372022781-2">}</span></code></pre><p>Test:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">[·...·truncated·by·diffoscope;·len:·292,·SHA:·56cb5ac5e113ac856df116afc779384c87b6574bc858a690a6f785dfd0dcaee2·...·]-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="6457645451-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="6457645451-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="4305833564-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="4305833564-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="3730896761-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="3730896761-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="6510434073-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="6510434073-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="4530481602-1">(</span><span·class="mi">12</span><span·class="p"·data-group-id="4530481602-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="4124661085-1">(</span><span·class="mi">12</span><span·class="p"·data-group-id="4124661085-1">)</span><span·class="p">.</span><span·class="w">
238 </span><span·class="p"·data-group-id="4530481602-2">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4530481602-3">{</span><span·class="ss">function_clause</span><span·class="p">,</span><span·class="p"·data-group-id="4530481602-4">[</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·842d363360d8b6ba6938e8411b7a1aeeb2af555522a02d2550ff1e8841a2dba2·...·]-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="4124661085-2">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4124661085-3">{</span><span·class="ss">function_clause</span><span·class="p">,</span><span·class="p"·data-group-id="4124661085-4">[</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·ba830f29e1cdca34729ca0e093ee29ba12b693c1af33654ae545997700642b79·...·]-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="4530481602-6">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">miles</span><span·class="p"·data-group-id="4530481602-6">]</span><span·class="p">,</span><span·class="w">239 ································</span><span·class="p"·data-group-id="4124661085-6">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">miles</span><span·class="p"·data-group-id="4124661085-6">]</span><span·class="p">,</span><span·class="w">
240 ································</span><span·class="p"·data-group-id="4530481602-7">[</span><span·class="p"·data-group-id="4530481602-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="4530481602-8">}</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·267,·SHA:·3be4fddbac8240f9da6c4285ce853146254ba6d1404c6d681e5771241d68d3e5·...·]-5">}</span><span·class="p">,</span><span·class="w">240 ································</span><span·class="p"·data-group-id="4124661085-7">[</span><span·class="p"·data-group-id="4124661085-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="4124661085-8">}</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·267,·SHA:·ff5be310b5089e3897d40e971d886b5f2ef30f68e068fecedc868e0df423d7c9·...·]-5">}</span><span·class="p">,</span><span·class="w">
241 ··························</span><span·class="p"·data-group-id="4530481602-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="4124661085-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="4530481602-11">[</span><span·class="p"·data-group-id="4530481602-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="4530481602-12">}</span><span·class="p">,</span><span·class="p"·data-group-id="4530481602-13">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">677</span><span·class="p"·data-group-id="4530481602-13">}</span><span·class="p"·data-group-id="4530481602-11">]</span><span·class="p"·data-group-id="4530481602-10">}</span><span·class="p">,</span><span·class="w"> 
243 ··························</span><span·class="p"·data-group-id="4530481602-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="453048160[·...·truncated·by·diffoscope;·len:·527,·SHA:·96c8b0f31771534d496da8e7cde09f157895b9d4a797df3f35bf336256c69f06·...·]">}</span><span·class="p">,</span><span·class="w">242 ····································</span><span·class="p"·data-group-id="4124661085-11">[</span><span·class="p"·data-group-id="4124661085-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="4[·...·truncated·by·diffoscope;·len:·331,·SHA:·5b9e8193fc0f52cb940a3154d1d336ac39479e30bc5e1fb73b8134ab8b8f4db8·...·]">}</span><span·class="p">,</span><span·class="w">
 243 ··························</span><span·class="p"·data-group-id="4124661085-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="4124661085-15">[</span><span·class="p"·data-group-id="4124661085-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="4124661085-16">}</span><span·class="p">,</span><span·class="p"·data-group-id="4124661085-17">{</span><span·class="ss">line</span><span·class="p">,</span><span·class="mi">687</span><span·class="p"·data-group-id="4124661085-17">}</span><span·class="p"·data-group-id="4124661085-15">]</span><span·class="p"·data-group-id="4124661085-14">}</span><span·class="p">,</span><span·class="w">
244 ··························</span><span·class="p"·data-group-id="4530481602-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="4530481602-19">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·490,·SHA:·ee11c245b75ccb9e61cd51491cd4bc4e2889be7487a9b5cbaf4d9a5a753df3e9·...·]-18">}</span><span·class="p">,</span><span·class="w">244 ··························</span><span·class="p"·data-group-id="4124661085-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="4124661085-19">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·490,·SHA:·2eb21944f077581dd3f3ea3f679eecc60ce2191f0833981627775d2d1d92e9a6·...·]-18">}</span><span·class="p">,</span><span·class="w">
245 ··························</span><span·class="p"·data-group-id="4530481602-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="4124661085-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="4530481602-23">[</span><span·class="p"·data-group-id="4530481602-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="4530481602-24">}</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·436,·SHA:·68a473fe57100a37de0cfa45ed6bec5afc1b461ca5ceaae4e3d19ce22242cc34·...·]-2">}</span></code></pre><h2·id="tuples"·class="section-heading">246 ·································</span><span·class="p"·data-group-id="4124661085-23">[</span><span·class="p"·data-group-id="4124661085-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="4124661085-24">}</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·436,·SHA:·336be1025d1a29e657ad5bdd715514edabc90d451d5083a6ad6d7dafb9770845·...·]-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; 386622/436231 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.1/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.1/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="3238911889-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="3238911889-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="3238911889-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1073,·SHA:·fb69096c71d82d473284e16c6b4d50065ba2d8022a94e8e9b24672596653bdbe·...·]-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="7202921575-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="7202921575-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="7202921575-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1073,·SHA:·39979fc6891a22c6537408af4ba2d114e22c9ee946dacb670a65c3cf33abe285·...·]-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="3238911889-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:·e79152570cd3f5e6521ce0fbacb0f0dac2ef346e94a430dcda7c6b31a646d280·...·]-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="7202921575-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:·acd1a26294487b5acf3e9216c099e8b12ea38cd8aa509594d45dacd33c3fda9c·...·]-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="3238911889-9">(</span><span·class="p"·data-group-id="3238911889-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:·ebc220a7eba02d68646732115b98862fabf5a1ddb5c87dc36b1e766ab0d038d0·...·]-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="7202921575-9">(</span><span·class="p"·data-group-id="7202921575-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:·e55ab9b9d44d29e63a13a9967e48dc7bcbf29b3181ff9fadd11c571012c560ef·...·]-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="3238911889-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="3238911889-11">}</span><span·class="gp·unselectable">134 </span><span·class="p"·data-group-id="7202921575-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="7202921575-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="3238911889-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="3238911889-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="7202921575-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="7202921575-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="3238911889-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="3238911889-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="7202921575-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="7202921575-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="3238911889-14">(</span><span·class="mi">1</span><span·class="p"·data-group-id="3238911889-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="7202921575-14">(</span><span·class="mi">1</span><span·class="p"·data-group-id="7202921575-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="3238911889-15">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3238911889-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="7202921575-15">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7202921575-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="3238911889-16">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3238911889-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="7202921575-16">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7202921575-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="3238911889-17">(</span><span·class="mi">2</span><span·class="p"·data-group-id="3238911889-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="7202921575-17">(</span><span·class="mi">2</span><span·class="p"·data-group-id="7202921575-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="3238911889-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3238911889-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="7202921575-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7202921575-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="3238911889-19">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3238911889-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="7202921575-19">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7202921575-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="3238911889-20">(</span><span·class="mi">3</span><span·class="p"·data-group-id="3238911889-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="7202921575-20">(</span><span·class="mi">3</span><span·class="p"·data-group-id="7202921575-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="3238911889-21">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3238911889-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="7202921575-21">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7202921575-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="3238911889-22">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3238911889-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="7202921575-22">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7202921575-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="3238911889-23">(</span><span·class="mi">4</span><span·class="p"·data-group-id="3238911889-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="7202921575-23">(</span><span·class="mi">4</span><span·class="p"·data-group-id="7202921575-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="3238911889-24">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="3238911889-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="7202921575-24">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="7202921575-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="3238911889-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="3238911889-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="7202921575-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="7202921575-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="3238911889-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="3238911889-27">[</span><span·class="[·...·truncated·by·diffoscope;·len:·82,·SHA:·406e53edda219b76838727a3c741e25403adf56c341cc909128255347f6e1aeb·...·]-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="7202921575-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="7202921575-27">[</span><span·class="[·...·truncated·by·diffoscope;·len:·82,·SHA:·8190a7cc3568495a50efac55c52d205759e4ae002224878fa2989b9b0d199a1b·...·]-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="3238911889-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="3238911889-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="7202921575-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="7202921575-28">)</span><span·class="p">.</span><span·class="w">
161 </span><span·class="p"·data-group-id="3238911889-29">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-30">[</span><span·class="p"·data-group-id="3238911889-31">{</span><span·class="ss">start_time</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-32">{</span><span·class="p"·data-group-id="3238911889-33">{</span><span·class="mi">2024</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3238911889-33">}</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-34">{</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3238911889-34">}</span><span·class="p"·data-group-id="3238911889-32">}</span><span·class="p"·data-group-id="3238911889-31">}</span><span·class="p">,</span><span·class="w"> 
162 ·····</span><span·class="p"·data-group-id="3238911889-35">{</span><span·class="ss">current_time</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-36">{</span><span·class="p"·data-group-id="3238911889-37">{</span><span·class="mi">2024<[·...·truncated·by·diffoscope;·len:·513,·SHA:·e4b821f862d847a7de8bb1fab940bb272ceb34c16b83dc44ac89b2724933cc66·...·]">}</span><span·class="p">,</span><span·class="w">161 </span><span·class="p"·data-group-id="7202921575-29">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-30">[</span><span·class="p"·data-group-id="7202921575-31">{</span><span·class="ss">start_time</span><sp[·...·truncated·by·diffoscope;·len:·663,·SHA:·f7216d5bfc121314c3b49329e699f079d28b6fe8769b44d4b64851deddf1f545·...·]">}</span><span·class="p">,</span><span·class="w">
 162 ·····</span><span·class="p"·data-group-id="7202921575-35">{</span><span·class="ss">current_time</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-36">{</span><span·class="p"·data-group-id="7202921575-37">{</span><span·class="mi">2024</span><span·class="p">,</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7202921575-37">}</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-38">{</span><span·class="mi">8</span><span·class="p">,</span><span·class="mi">11</span><span·class="p">,</span><span·class="mi">48</span><span·class="p"·data-group-id="7202921575-38">}</span><span·class="p"·data-group-id="7202921575-36">}</span><span·class="p"·data-group-id="7202921575-35">}</span><span·class="p">,</span><span·class="w">
163 ·····</span><span·class="p"·data-group-id="3238911889-39">{</span><span·class="ss">reductions</span><span·class="p">,</span><span·class="mi">4098</span><span·class="p"·data-group-id="3238911889-39">}</span><span·class="p">,</span><span·class="w">163 ·····</span><span·class="p"·data-group-id="7202921575-39">{</span><span·class="ss">reductions</span><span·class="p">,</span><span·class="mi">4098</span><span·class="p"·data-group-id="7202921575-39">}</span><span·class="p">,</span><span·class="w">
164 ·····</span><span·class="p"·data-group-id="3238911889-40">{</span><span·class="ss">messages_in</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="3238911889-40">}</span><span·class="p">,</span><span·class="w">164 ·····</span><span·class="p"·data-group-id="7202921575-40">{</span><span·class="ss">messages_in</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="7202921575-40">}</span><span·class="p">,</span><span·class="w">
165 ·····</span><span·class="p"·data-group-id="3238911889-41">{</span><span·class="ss">messages_out</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3238911889-41">}</span><span·class="p"·data-group-id="3238911889-30">]</span><span·class="p"·data-group-id="323891188[·...·truncated·by·diffoscope;·len:·1,·SHA:·19581e27de7ced00ff1ce50b2047e7a567c76b1cbaebabe5ef03f7c3017bb5b7·...·]-29">}</span><span·class="gp·unselectable">165 ·····</span><span·class="p"·data-group-id="7202921575-41">{</span><span·class="ss">messages_out</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7202921575-41">}</span><span·class="p"·data-group-id="7202921575-30">]</span><span·class="p"·data-group-id="720292157[·...·truncated·by·diffoscope;·len:·1,·SHA:·ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d·...·]-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="3238911889-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="3238911889-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="7202921575-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="7202921575-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="3238911889-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="3238911889-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="7202921575-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="7202921575-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="3238911889-44">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="3238911889-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="7202921575-44">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="7202921575-44">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="3238911889-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="7202921575-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="3238911889-46">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="3238911889-46">}</span><span·class="p">,</span><span·class="w">172 ········</span><span·class="p"·data-group-id="7202921575-46">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="7202921575-46">}</span><span·class="p">,</span><span·class="w">
173 ········</span><span·class="p"·data-group-id="3238911889-47">[</span><span·class="p"·data-group-id="3238911889-48">[</span><span·class="p"·data-group-id="3238911889-49">{</span><span·class="ss">&#39;$initial_call&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-50">{</span>[·...·truncated·by·diffoscope;·len:·229,·SHA:·a6549ef57da60ac3b197a89886ee4c383b682c8dbcd8ecd78e9b52a207ebe5d4·...·]-49">}</span><span·class="p">,</span><span·class="w">173 ········</span><span·class="p"·data-group-id="7202921575-47">[</span><span·class="p"·data-group-id="7202921575-48">[</span><span·class="p"·data-group-id="7202921575-49">{</span><span·class="ss">&#39;$initial_call&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-50">{</span>[·...·truncated·by·diffoscope;·len:·229,·SHA:·e52143d49afc59b30c1e375bdf7d17f845ba4bb9955fb5774675ca43c10e0811·...·]-49">}</span><span·class="p">,</span><span·class="w">
174 ··········</span><span·class="p"·data-group-id="3238911889-51">{</span><span·class="ss">&#39;$ancestors&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-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="7202921575-51">{</span><span·class="ss">&#39;$ancestors&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-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="3238911889-52">]</span><span·class="p"·data-group-id="3238911889-51">}</span><span·class="p"·data-group-id="3238911889-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="7202921575-52">]</span><span·class="p"·data-group-id="7202921575-51">}</span><span·class="p"·data-group-id="7202921575-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="3238911889-53">[</span><span·class="p"·data-group-id="3238911889-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="7202921575-53">[</span><span·class="p"·data-group-id="7202921575-53">]</span><span·class="p">,</span><span·class="w">
177 ·········</span><span·class="p"·data-group-id="3238911889-54">[</span><span·class="p"·data-group-id="3238911889-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="3238911889-55">}</span><span·class="p">,</span><span·class="w">177 ·········</span><span·class="p"·data-group-id="7202921575-54">[</span><span·class="p"·data-group-id="7202921575-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="7202921575-55">}</span><span·class="p">,</span><span·class="w">
178 ··········</span><span·class="p"·data-group-id="3238911889-56">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-57">[</span><span·class="p"·data-group-id="3238911889-58">{</span><span·class="s">&quot;Status&quot;</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·64,·SHA:·688dac88758e89786b2fb308f0d12c744a6473fab085806d15020a1f839473d3·...·]-58">}</span><span·class="p">,</span><span·class="w">178 ··········</span><span·class="p"·data-group-id="7202921575-56">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-57">[</span><span·class="p"·data-group-id="7202921575-58">{</span><span·class="s">&quot;Status&quot;</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·64,·SHA:·4f7d6b5696c4271536e911bed79697027d04c101594f8d7fd348c91836739f9c·...·]-58">}</span><span·class="p">,</span><span·class="w">
179 ·················</span><span·class="p"·data-group-id="3238911889-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="323891[·...·truncated·by·diffoscope;·len:·4,·SHA:·285f8e7a01879313d77ac190b169982649e54303f4dcbff74f5d298f8f830aa2·...·]-59">}</span><span·class="p">,</span><span·class="w">179 ·················</span><span·class="p"·data-group-id="7202921575-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="720292[·...·truncated·by·diffoscope;·len:·4,·SHA:·679b0ecadd205e5143506d637aaec6849987ae11c8c8280fb79f4d1080326eec·...·]-59">}</span><span·class="p">,</span><span·class="w">
180 ·················</span><span·class="p"·data-group-id="3238911889-60">{</span><span·class="s">&quot;Modules&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-61">[</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="3238911889-61">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·cb6d1ba3848324082f943deabe5c614c07bc4e0a46831727da92693859e6f755·...·]-60">}</span><span·class="p">,</span><span·class="w">180 ·················</span><span·class="p"·data-group-id="7202921575-60">{</span><span·class="s">&quot;Modules&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-61">[</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="7202921575-61">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·940f2722b605cd285c9d0dde3324bd2083720936e282cc0b4f4d2ac262b28ac0·...·]-60">}</span><span·class="p">,</span><span·class="w">
181 ·················</span><span·class="p"·data-group-id="3238911889-62">{</span><span·class="s">&quot;Time-outs&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-63">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-64">[</span><span·cl[·...·truncated·by·diffoscope;·len:·141,·SHA:·ce994ba4706d90b6c1f73d8acf2cbe3f44983a69bb38fd5fd50afb4dfa563017·...·]-62">}</span><span·class="p">,</span><span·class="w">181 ·················</span><span·class="p"·data-group-id="7202921575-62">{</span><span·class="s">&quot;Time-outs&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-63">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-64">[</span><span·cl[·...·truncated·by·diffoscope;·len:·141,·SHA:·bc75f30090c7c9d610a03eb83f1f3b9c0f270729de6b4466b59b877e02ab9a31·...·]-62">}</span><span·class="p">,</span><span·class="w">
182 ·················</span><span·class="p"·data-group-id="3238911889-65">{</span><span·class="s">&quot;Logged·Events&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-66">[</span><span·class="p"·data-group-id="3238911889-66">]</span><span·class="p"·data-group-id="3238911889-65">}</span><span·class="p">,</span><span·class="w">182 ·················</span><span·class="p"·data-group-id="7202921575-65">{</span><span·class="s">&quot;Logged·Events&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-66">[</span><span·class="p"·data-group-id="7202921575-66">]</span><span·class="p"·data-group-id="7202921575-65">}</span><span·class="p">,</span><span·class="w">
183 ·················</span><span·class="p"·data-group-id="3238911889-67">{</span><span·class="s">&quot;Postponed&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-68">[</span><span·class="p"·data-group-id="3238911889-68">]</span><span·class="p"·data-group-id="3238911889-67">}</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·c07fa9145a2038a6f2ed8034d70093ecce73b8d3dba2dda12991797af744c9d7·...·]-56">}</span><span·class="p">,</span><span·class="w">183 ·················</span><span·class="p"·data-group-id="7202921575-67">{</span><span·class="s">&quot;Postponed&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-68">[</span><span·class="p"·data-group-id="7202921575-68">]</span><span·class="p"·data-group-id="7202921575-67">}</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·b28e48f772e29a270048f45d390d14ee9a385c4ae9f31417c5fc619f3caf5809·...·]-56">}</span><span·class="p">,</span><span·class="w">
184 ··········</span><span·class="p"·data-group-id="3238911889-69">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-70">[</span><span·class="p"·data-group-id="3238911889-71">{</span><span·class="s">&quot;State&quot;</span><span·class="p">,</span><span·class="w">184 ··········</span><span·class="p"·data-group-id="7202921575-69">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-70">[</span><span·class="p"·data-group-id="7202921575-71">{</span><span·class="s">&quot;State&quot;</span><span·class="p">,</span><span·class="w">
185 ··················</span><span·class="p"·data-group-id="3238911889-72">{</span><span·class="ss">locked</span><span·class="p">,</span><span·class="p"·data-group-id="3238911889-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:·1e053b450d6b048fec95efb5a196cdeac3e9558431a4d153cb613d932a0bef98·...·]-74">]</span><span·class="p">,</span><span·class="w">185 ··················</span><span·class="p"·data-group-id="7202921575-72">{</span><span·class="ss">locked</span><span·class="p">,</span><span·class="p"·data-group-id="7202921575-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:·52c7e426a03cf3d287f8df744af0cf18ed64415ef84f8bf087b8b4975c405d31·...·]-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="3238911889-75">[</span><span·class="p"·data-group-id="3238911889-75">]</span><span·class="p"·data-group-id="3238911889-73">}</span><span·class="p"·data-group-id="3238911889-72">}</span><span·class="p"·data-group-id="3238911889-71">}</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·240,·SHA:·abe0dce96bca45635f9b7bb05197479787d0669b0423919ec28983d799043a4b·...·]-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="7202921575-75">[</span><span·class="p"·data-group-id="7202921575-75">]</span><span·class="p"·data-group-id="7202921575-73">}</span><span·class="p"·data-group-id="7202921575-72">}</span><span·class="p"·data-group-id="7202921575-71">}</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·240,·SHA:·54ece83f8e0bd3fa52b67e07bc231e04eea53a49c01a13481023c974261fc7b1·...·]-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="6290950385-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="6290950385-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="5502017921-1">(</span><span·class="ss">ch4</span><span·class="p"·data-group-id="5502017921-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="6290950385-2">(</span><span·class="p"·data-group-id="6290950385-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6290950385-3">]</span><span·class="p"·data-group-id="6290950385-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="5502017921-2">(</span><span·class="p"·data-group-id="5502017921-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5502017921-3">]</span><span·class="p"·data-group-id="5502017921-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="6290950385-4">(</span><span·class="p"·data-group-id="6290950385-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:·f3738be7008e215995569b2a87116f4b70db3ce62020a3f621fc5fbc17ef6b93·...·]-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="5502017921-4">(</span><span·class="p"·data-group-id="5502017921-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:·d9de6e0ecdb1773ed74500f54279b54346f66af697137daa927cba2946b22f34·...·]-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="6290950385-6">(</span><span·class="p"·data-group-id="6290950385-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6290950385-7">]</span><span·class="p"·data-group-id="6290950385-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="5502017921-6">(</span><span·class="p"·data-group-id="5502017921-7">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5502017921-7">]</span><span·class="p"·data-group-id="5502017921-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="6290950385-8">(</span><span·class="p"·data-group-id="6290950385-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="5502017921-8">(</span><span·class="p"·data-group-id="5502017921-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="6290950385-9">]</span><span·class="p"·data-group-id="6290950385-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="5502017921-9">]</span><span·class="p"·data-group-id="5502017921-8">)</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="6290950385-10">(</span><span·class="p"·data-group-id="6290950385-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="5502017921-10">(</span><span·class="p"·data-group-id="5502017921-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="6290950385-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="6290950385-12">[</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·e5dddc9c13fdd95883860bfbf400a96f1a9979bc6d54a039882a031b140c85a6·...·]-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="5502017921-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="5502017921-12">[</span><span·class="nf">self</span>[·...·truncated·by·diffoscope;·len:·203,·SHA:·f09369a42bd9c7656289cf4fa9b5ea4dddb9c122b4baa361d0955fe4a1538828·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
214 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="6290950385-14">(</span><span·class="p"·data-group-id="6290950385-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="5502017921-14">(</span><span·class="p"·data-group-id="5502017921-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="6290950385-15">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6290950385-16">(</span><span·class="p"·data-group-id="6290950385-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:·f506fcd2b285bf4db3cbe49baf0f33d54afc64f28d3230324efd7652c48e655b·...·]-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="5502017921-15">{</span><span·class="nf">self</span><span·class="p"·data-group-id="5502017921-16">(</span><span·class="p"·data-group-id="5502017921-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:·6d0c56d68397713ddb8cc580ae6f808d483bd05e45919eb8f806156eab320de4·...·]-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="6290950385-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="6290950385-17">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">217 ········</span><span·class="p"·data-group-id="5502017921-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="5502017921-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="6290950385-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="6290950385-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="5502017921-18">(</span><span·class="n">Ch</span><span·class="p"·data-group-id="5502017921-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="6290950385-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="6290950385-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="5502017921-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="5502017921-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="6290950385-20">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="6290950385-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="5502017921-20">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="5502017921-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="6290950385-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="6290950385-22">(</span><span·class="p"·data-group-id="6290950385-22">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·e3500cadaa9fba458526c552a0806bfd7172f45ed5c4ddd89d957b1bbc0e63eb·...·]-21">)</span><span·class="p">,</span><span·class="w">224 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="5502017921-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="5502017921-22">(</span><span·class="p"·data-group-id="5502017921-22">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·cc578901207c671fa689bb12ed44f234c35a9302e9a7261ff27daa4255b16130·...·]-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="6290950385-23">(</span><span·class="p"·data-group-id="6290950385-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="5502017921-23">(</span><span·class="p"·data-group-id="5502017921-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="6290950385-24">(</span><span·class="p"·data-group-id="6290950385-25">[</span><span·class="p"·data-group-id="6290950385-25">]</span><span·class="p"·data-group-id="6290950385-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="5502017921-24">(</span><span·class="p"·data-group-id="5502017921-25">[</span><span·class="p"·data-group-id="5502017921-25">]</span><span·class="p"·data-group-id="5502017921-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="6290950385-26">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6290950385-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:·0b8317196a493eb98364853297edaace6e02023466104c7949a5e38b6f7dafb2·...·]-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="5502017921-26">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5502017921-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:·0b432d3fea79c9ed8584e46605a23fe43cde6c0fca82a69afcc110ac148892e4·...·]-26">)</span><span·class="p">,</span><span·class="w">
228 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="6290950385-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="6290950385-29">)</span><span·class="p">.</span><span·class="w">228 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="5502017921-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="5502017921-29">)</span><span·class="p">.</span><span·class="w">
  
229 </span><span·class="nf">loop</span><span·class="p"·data-group-id="6290950385-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="6290950385-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="5502017921-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="5502017921-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="6290950385-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="6290950385-31">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 ········</span><span·class="p"·data-group-id="5502017921-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="5502017921-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="6290950385-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="5502017921-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="6290950385-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="6290950385-33">}</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·bd56733a2c7baee96b98e3efad2eb36441ff7a241346ae9886d918bce92cbc34·...·]-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="5502017921-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="5502017921-33">}</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·220aa41dafa98062a549d9268b1f7d2bdc52019f74be653911ee04c3a6635312·...·]-32">)</span><span·class="p">,</span><span·class="w">
234 ············</span><span·class="p"·data-group-id="6290950385-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="6290950385-34">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·90eff92dadcd0b8d1912f1e4cbf9615510a485f8b69b28d77cd492e78bea98f1·...·]-35">)</span><span·class="p">,</span><span·class="w">234 ············</span><span·class="p"·data-group-id="5502017921-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="5502017921-34">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·143,·SHA:·6499f558f1cad075299abf8bc1b408cd692e277daa2a057fb8f122e227a2b0c2·...·]-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="6290950385-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="6290950385-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="5502017921-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="5502017921-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="6290950385-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="5502017921-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="6290950385-38">{</span><span·class="ss">out</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6290950385-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:·84ac4f67adf924a2fb960949a30d617d3ee3f475c82565185d20e9e92dacb0cd·...·]-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="5502017921-38">{</span><span·class="ss">out</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5502017921-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:·8d8373d3f4377215eaa36c2d64c37778094f89a17fb92ce7f5c599ac0acc7457·...·]-37">)</span><span·class="p">,</span><span·class="w">
238 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="6290950385-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="6290950385-40">)</span><span·class="p">;</span><span·class="w">238 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="5502017921-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="5502017921-40">)</span><span·class="p">;</span><span·class="w">
239 ········</span><span·class="p"·data-group-id="6290950385-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="6290950385-41">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 ········</span><span·class="p"·data-group-id="5502017921-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="5502017921-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="6290950385-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="5502017921-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="6290950385-43">{</span><span·class="ss">in</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6290950385-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:·84d5b33e03b6c5dbcced304235ff6f41461aeb944e3ce699ecedbdd30841f32e·...·]-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="5502017921-43">{</span><span·class="ss">in</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5502017921-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:·5a459660a4da0aec5e2dbfc5eefe8153d7bfbe261a5ccdf14587c30bb00b600e·...·]-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="6290950385-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="6290950385-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="5502017921-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="5502017921-45">)</span><span·class="p">,</span><span·class="w">
243 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="6290950385-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="6290950385-46">)</span><span·class="p">;</span><span·class="w">243 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="5502017921-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="5502017921-46">)</span><span·class="p">;</span><span·class="w">
  
244 ········</span><span·class="p"·data-group-id="6290950385-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="6290950385-47">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">244 ········</span><span·class="p"·data-group-id="5502017921-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="5502017921-47">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
Max diff block lines reached; 121697/200959 bytes (60.56%) 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="9918004101-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="9918004101-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="9918004101-2">(</span><spa[·...·truncated·by·diffoscope;·len:·532,·SHA:·329df7964aa75d9c23a6b32ac2b45b1c8338c9e85486443346d76e43eb157c18·...·]1-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="9177187831-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="9177187831-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="9177187831-2">(</span><spa[·...·truncated·by·diffoscope;·len:·532,·SHA:·40574d4849dcb645a47aab0e3adf744b1b61d172177b26047ec7050dfa948bac·...·]1-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.1/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.1/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="2533218129-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="2533218129-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="2966451097-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="2966451097-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="2533218129-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="2533218129-2">}</span><span·class="p">;</span><span·class="w">414 ····</span><span·class="p"·data-group-id="2966451097-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="2966451097-2">}</span><span·class="p">;</span><span·class="w">
415 </span><span·class="n">StateName</span><span·class="p"·data-group-id="2533218129-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="2533218129-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="2966451097-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="2966451097-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="2533218129-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="253321812[·...·truncated·by·diffoscope;·len:·1,·SHA:·19581e27de7ced00ff1ce50b2047e7a567c76b1cbaebabe5ef03f7c3017bb5b7·...·]-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="2966451097-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="296645109[·...·truncated·by·diffoscope;·len:·1,·SHA:·7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451·...·]-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.1/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.1/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.1/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.1/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="4447057496-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="4447057496-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="0957047820-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="0957047820-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="4447057496-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="4447057496-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="0957047820-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="0957047820-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="4447057496-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="4447057496-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="0957047820-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="0957047820-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="4447057496-4">(</span><span·class="p"·data-group-id="4447057496-5">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4447057496-5">]</span><span·class="p"·data-group-id="4447057496-4">)</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="0957047820-4">(</span><span·class="p"·data-group-id="0957047820-5">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="0957047820-5">]</span><span·class="p"·data-group-id="0957047820-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="4447057496-6">(</span><span·class="p"·data-group-id="4447057496-7">[</span><span·class="ss">button</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4447057496-7">]</span><span·class="p"·data-group-id="4447057496-6">)</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="0957047820-6">(</span><span·class="p"·data-group-id="0957047820-7">[</span><span·class="ss">button</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="0957047820-7">]</span><span·class="p"·data-group-id="0957047820-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="4447057496-8">(</span><span·class="p"·data-group-id="4447057496-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:·34dc015ede6ed1f10cb6045c85302f0f1f2f3455592dc64dad33ba87b9353c06·...·]-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="0957047820-8">(</span><span·class="p"·data-group-id="0957047820-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:·484f06b0748e5bdc8746b378a7e5f0a7305f196fdb97cd6dca4272f6eece9b19·...·]-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="4447057496-10">(</span><span·class="p"·data-group-id="4447057496-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:·57ac9597237bdb12627642904cc57ee930d66359096222d20e63183c99e1a1bc·...·]-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="0957047820-10">(</span><span·class="p"·data-group-id="0957047820-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:·fce8d890602fc42a817e4b8158a06a105748cb28c15172986c4a4ac3a3f69992·...·]-10">)</span><span·class="p">.</span><span·class="w">
  
512 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="4447057496-12">(</span><span·class="n">Code</span><span·class="p"·data-group-id="4447057496-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="0957047820-12">(</span><span·class="n">Code</span><span·class="p"·data-group-id="0957047820-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="4447057496-13">(</span><span·class="p"·data-group-id="4447057496-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="4447057496-14">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·051729655e6ef8aa6bfa5bf1b338ee7536b780cdb987f61445e22d6f8095cfd9·...·]-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="0957047820-13">(</span><span·class="p"·data-group-id="0957047820-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="0957047820-14">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·5d12fd0ab49b2592da1f90df83c966fac24d507202b6c9ffbf8facae0723bd13·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
514 </span><span·class="nf">button</span><span·class="p"·data-group-id="4447057496-16">(</span><span·class="n">Button</span><span·class="p"·data-group-id="4447057496-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="0957047820-16">(</span><span·class="n">Button</span><span·class="p"·data-group-id="0957047820-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="4447057496-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="4447057496-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·21af49b4ccf4e06672c4317c23c7b66337fea93ea2888b112424cc40adb98bfb·...·]-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="0957047820-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="0957047820-18">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·9290dc33a0982dc9c83daf3ceed198e56a46d0dea38eac7a1d900496ece78437·...·]-17">)</span><span·class="p">.</span><span·class="w">
  
516 </span><span·class="nf">init</span><span·class="p"·data-group-id="4447057496-19">(</span><span·class="n">Code</span><span·class="p"·data-group-id="4447057496-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="0957047820-19">(</span><span·class="n">Code</span><span·class="p"·data-group-id="0957047820-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="4447057496-20">(</span><span·class="p"·data-group-id="4447057496-20">)</span><span·class="p">,</span><span·class="w">517 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="0957047820-20">(</span><span·class="p"·data-group-id="0957047820-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="4447057496-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:·836a051262bacfdd52184ca097d0ca14b3ce231423c851e22bf76106f3652080·...·]-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="0957047820-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:·608f4f886573ea7d56ac96f47f7d2a2e60296cab03862d184242e32d56501c8c·...·]-21">}</span><span·class="p">,</span><span·class="w">
519 ····</span><span·class="p"·data-group-id="4447057496-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="4447057496-24">}</span><span·class="p">.</span><span·class="w">519 ····</span><span·class="p"·data-group-id="0957047820-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="0957047820-24">}</span><span·class="p">.</span><span·class="w">
  
520 </span><span·class="nf">callback_mode</span><span·class="p"·data-group-id="4447057496-25">(</span><span·class="p"·data-group-id="4447057496-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="0957047820-25">(</span><span·class="p"·data-group-id="0957047820-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="3536436819-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="8159266074-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="3536436819-2">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</span><span·class="p"·data-group-id="3536436819-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="8159266074-2">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Button</span><span·class="p"·data-group-id="8159266074-2">}</span><span·class="p">,</span><span·class="w">
523 ··</span><span·class="p"·data-group-id="3536436819-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:·42ba5d81da2c3f7348f4337a01594d586f7684cfc88b5756f9b6df11ddf2a843·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">523 ··</span><span·class="p"·data-group-id="8159266074-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:·1daf381f77acf9cdafce3735a385d5e9d90ea73c842041923aa6b4cb74eac26a·...·]-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="3536436819-4">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="3536436819-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="8159266074-4">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="8159266074-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="3536436819-5">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="3536436819-5">)</span><span·class="w">529 ················</span><span·class="nf">tl</span><span·class="p"·data-group-id="8159266074-5">(</span><span·class="n">Buttons</span><span·class="p"·data-group-id="8159266074-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="3536436819-6">[</span><span·class="n">Button</span><span·class="p"·data-group-id="3536436819-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="8159266074-6">[</span><span·class="n">Button</span><span·class="p"·data-group-id="8159266074-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="3536436819-7">(</span><span·class="p"·data-group-id="3536436819-7">)</span><span·class="p">,</span><span·class="w">533 »       ····</span><span·class="nf">do_unlock</span><span·class="p"·data-group-id="8159266074-7">(</span><span·class="p"·data-group-id="8159266074-7">)</span><span·class="p">,</span><span·class="w">
534 ············</span><span·class="p"·data-group-id="3536436819-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="3536436819-9">#{</[·...·truncated·by·diffoscope;·len:·258,·SHA:·ffc7f3454f7f507035d6fa9fdeed59f431d542d1eb3ed86f09a9c64707078e50·...·]-9">}</span><span·class="p">,</span><span·class="w">534 ············</span><span·class="p"·data-group-id="8159266074-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="8159266074-9">#{</[·...·truncated·by·diffoscope;·len:·258,·SHA:·ee93dfc330d87bab28fd18c8d5acd7c1dbb25c89702ceb5d5ebfb242fe827a28·...·]-9">}</span><span·class="p">,</span><span·class="w">
535 ·············</span><span·class="p"·data-group-id="3536436819-11">[</span><span·class="p"·data-group-id="3536436819-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:·ee4a92313860ec8112b5955a2463779c46f9dc6dd0ccf6494fb95b59bf6add61·...·]-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="8159266074-11">[</span><span·class="p"·data-group-id="8159266074-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:·ecc28326b510585873ce8714ff37e51d1144160342036c056dcf17f54a591fa8·...·]-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="3536436819-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="3536436819-14">[·...·truncated·by·diffoscope;·len:·241,·SHA:·6692b57d19e1d850e55cec4028e7c4804e15165ab6fb1821b47c61808a75c5dd·...·]-13">}</span><span·class="w">537 ············</span><span·class="p"·data-group-id="8159266074-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="8159266074-14">[·...·truncated·by·diffoscope;·len:·241,·SHA:·866b9702354de7ab48406c4ce0b78f9057f1382a75b0ef2771153c9007a94d01·...·]-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="3767681373-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="3767681373-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="2800030445-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="2800030445-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="3767681373-2">(</span><span·class="p"·data-group-id="3767681373-2">)</span><span·class="p">,</span><span·class="w">539 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="2800030445-2">(</span><span·class="p"·data-group-id="2800030445-2">)</span><span·class="p">,</span><span·class="w">
540 ····</span><span·class="p"·data-group-id="3767681373-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="3767681373-3">}</span><span·class="p">;</span><span·class="w">540 ····</span><span·class="p"·data-group-id="2800030445-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="2800030445-3">}</span><span·class="p">;</span><span·class="w">
541 </span><span·class="nf">open</span><span·class="p"·data-group-id="3767681373-4">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3767681373-5">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·142,·SHA:·83ba190a3ac55698c3e88583781b27ad5c6dfb784a9ba055fda371dba134b4bb·...·]-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="2800030445-4">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2800030445-5">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·142,·SHA:·09fe5e757d71776abd3fb1152811d25ec33a37eb5314ecfd9311c2612f794ca0·...·]-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
542 ····</span><span·class="p"·data-group-id="3767681373-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="3767681373-6">}</s[·...·truncated·by·diffoscope;·len:·214,·SHA:·93fbb0ed4b45b1ec3bec5fe49546b5c76863ea429838b516705eb0912065497c·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">542 ····</span><span·class="p"·data-group-id="2800030445-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="2800030445-6">}</s[·...·truncated·by·diffoscope;·len:·214,·SHA:·039d917c70c588d90f88002c35448526e600e779644a2863ccfa352f2b4bbee5·...·]-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="1306720456-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="1306720456-3">[</span><span·class="p"·data-group-id="1306720456-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·24136b0891a6b379bb0df74e0423c62460088f3a4a254a437481d07df2d64b9e·...·]-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="2366960341-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="2366960341-3">[</span><span·class="p"·data-group-id="2366960341-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·4d31196f96defc8087852a82826de7aca8bfcfeee0a6d9d4827a859e3ba5ec32·...·]-2">)</span><span·class="p">.</span><span·class="w">
544 </span><span·class="nf">do_unlock</span><span·class="p"·data-group-id="1306720456-4">(</span><span·class="p"·data-group-id="1306720456-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="2366960341-4">(</span><span·class="p"·data-group-id="2366960341-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="1306720456-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="1306720456-6">[</span><span·class="p"·data-group-id="1306720456-6[·...·truncated·by·diffoscope;·len:·51,·SHA:·b8139c25c2480fb3a38bd46f16f1cc9050b85e871927d3c1599b4364303ffc04·...·]-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="2366960341-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="2366960341-6">[</span><span·class="p"·data-group-id="2366960341-6[·...·truncated·by·diffoscope;·len:·51,·SHA:·ce8df99f234225f2c5b161c15381aae80f70849329263a3632e1a9903324604f·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
546 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="1306720456-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:·6dbd4e99e15daa147e715599d873f2d0b6e5527d6b864084d0256e6cd65aab7a·...·]-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="2366960341-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:·a5485d48a00ef472f61e17404e08cdf8f0825877940d5be1aed9cc79411cd2be·...·]-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="1306720456-8">(</span><span·class="p"·data-group-id="1306720456-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="2366960341-8">(</span><span·class="p"·data-group-id="2366960341-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="9710914345-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="9710914345-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="6761320007-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="6761320007-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="9710914345-2">(</span><span·class="p"·data-group-id="9710914345-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="9710914345-3">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·347,·SHA:·a97729bd2733a5947c37abd654f38327110ec7338268d6d5907319f177918b68·...·]-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">start_link/1</code>·calls·function·<a·href="../../lib/stdlib-6.2.1/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="6761320007-2">(</span><span·class="p"·data-group-id="6761320007-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="6761320007-3">}</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·347,·SHA:·470bea2679290c067de2f9587cdaf14598a20bb311eaa8ee014090521c836ecb·...·]-2">)</span><span·class="p">.</span></code></pre><p><code·class="inline">start_link/1</code>·calls·function·<a·href="../../lib/stdlib-6.2.1/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.3/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.3/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.1/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.1/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.1/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.1/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="4372235326-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="4372235326-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="6261072874-1">(</span><span·class="n">Code</span><span·class="p"·data-group-id="6261072874-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="4372235326-2">(</span><span·class="p"·data-group-id="4372235326-2">)</span><span·class="p">,</span><span·class="w">582 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="6261072874-2">(</span><span·class="p"·data-group-id="6261072874-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="4372235326-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:·d2a79879b15bf6f4cb2b9650cfba125fb2daa3f4debad5579beb3301e2b11e87·...·]-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="6261072874-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:·e83ae3e846d824e2517daf9da52960d778bc793531863a8cb77ea8991aa9a54b·...·]-3">}</span><span·class="p">,</span><span·class="w">
584 ····</span><span·class="p"·data-group-id="4372235326-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="4372235326-6">}</span><span·class="p">.</span></code></pre><p>Function·<a·href="../../lib/stdlib-6.2.1/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="6261072874-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="6261072874-6">}</span><span·class="p">.</span></code></pre><p>Function·<a·href="../../lib/stdlib-6.2.1/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.1/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.1/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.1/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.1/doc/html/gen_statem.html#start/3"><code·class="inline">gen_statem:start/3,4</code></a>·can·be·used·to·start
590 a·standalone·<code·class="inline">gen_statem</code>,·meaning·it·is·not·part·of·a·supervision·tree.</p><p>Function·<a·href="../../lib/stdlib-6.2.1/doc/html/gen_statem.html#c:callback_mode/0"><code·class="inline">Module:callback_mode/0</code></a>·selects590 a·standalone·<code·class="inline">gen_statem</code>,·meaning·it·is·not·part·of·a·supervision·tree.</p><p>Function·<a·href="../../lib/stdlib-6.2.1/doc/html/gen_statem.html#c:callback_mode/0"><code·class="inline">Module:callback_mode/0</code></a>·selects
Max diff block lines reached; 326200/377138 bytes (86.49%) 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="3355179740-1">(</span><span·class="ss">ch_sup</span><span·class="p"·data-group-id="3355179740-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="6746761971-1">(</span><span·class="ss">ch_sup</span><span·class="p"·data-group-id="6746761971-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="3355179740-2">(</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="3355179740-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="6746761971-2">(</span><span·class="ss">supervisor</span><span·class="p"·data-group-id="6746761971-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="3355179740-3">(</span><span·class="p"·data-group-id="3355179740-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3355179740-4">]</span><span·class="p"·data-group-id="3355179740-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="3355179740-5">(</span><span·class="p"·data-group-id="3355179740-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3355179740-6">]</span><span·class="p"·data-group-id="3355179740-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="6746761971-3">(</span><span·class="p"·data-group-id="6746761971-4">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6746761971-4">]</span><span·class="p"·data-group-id="6746761971-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="6746761971-5">(</span><span·class="p"·data-group-id="6746761971-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6746761971-6">]</span><span·class="p"·data-group-id="6746761971-5">)</span><span·class="p">.</span><span·class="w">
  
140 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="3355179740-7">(</span><span·class="p"·data-group-id="3355179740-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="6746761971-7">(</span><span·class="p"·data-group-id="6746761971-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="3355179740-8">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3355179740-9">[</span><span·class="p"·data-group-id="3355179740-9">]</span><span·class="p"·data-group-id="3355179740-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="6746761971-8">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6746761971-9">[</span><span·class="p"·data-group-id="6746761971-9">]</span><span·class="p"·data-group-id="6746761971-8">)</span><span·class="p">.</span><span·class="w">
  
142 </span><span·class="nf">init</span><span·class="p"·data-group-id="3355179740-10">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="3355179740-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="6746761971-10">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="6746761971-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="3355179740-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:·a34b264b11102904501a0bb1a23b95e1b8d05132f7e2295fcee45f5e2893c05a·...·]-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="6746761971-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:·7ca11c3f324a8f95ba5ea78d58f6b01a759c84e49b8cf718ac8fd4389da472fd·...·]-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="3355179740-12">[</span><span·class="p"·data-group-id="3355179740-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="6746761971-12">[</span><span·class="p"·data-group-id="6746761971-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="3355179740-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="3355179740-15">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·73,·SHA:·57e24245d8ec5d57c51567bda03026e613453ab05118c898f1d5a6d47b879f0c·...·]-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="6746761971-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="6746761971-15">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·73,·SHA:·5eb93bf8273d74db0fd7baf0d7a262b137430999f96e292f17cd15dcc2340bed·...·]-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="3355179740-16">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="3355179740-16">]</span><span·class="p"·data-group-id="3355179740-13">}</span><span·class="p"·data-group-id="3355179740-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="6746761971-16">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="6746761971-16">]</span><span·class="p"·data-group-id="6746761971-13">}</span><span·class="p"·data-group-id="6746761971-12">]</span><span·class="p">,</span><span·class="w">
150 ····</span><span·class="p"·data-group-id="3355179740-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3355179740-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:·4e0eda996036e67a1ef063f6d4395fe7e261fff58250a6eb745285043b0cdddd·...·]-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="6746761971-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6746761971-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:·bc80f799dbb1b2e7d1dddc3a4df066e0f6bbbb460dbf8fae093868ab575572a3·...·]-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="9017021975-1">(</span><span·class="p"·data-group-id="9017021975-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9017021975-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="9017021975-3">(</span><span·class="p"·data-group-id="9017021975-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="9017021975-4">(</span><span·class="p"·data-group-id="9017021975-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="9017021975-5">(</span><span·class="p"·data-group-id="90170219[·...·truncated·by·diffoscope;·len:·54,·SHA:·296a91b5c1244729820392a68f8cd1f6bee06e8a1baf34c03699a4dda63f8241·...·]··········</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="9831249049-1">(</span><span·class="p"·data-group-id="9831249049-1">)</span><span·cla[·...·truncated·by·diffoscope;·len:·404,·SHA:·f8e812c7e51d21d692293a89f427ba9644bd78a938a19a5785fb3d30e79c0709·...·]··········</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="9831249049-4">(</span><span·class="p"·data-group-id="9831249049-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="9831249049-5">(</span><span·class="p"·data-group-id="9831249049-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="9017021975-6">(</span><span·class="p"·data-group-id="9017021975-6">)</span><span·class="p"·data-group-id="9017021975-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="9831249049-6">(</span><span·class="p"·data-group-id="9831249049-6">)</span><span·class="p"·data-group-id="9831249049-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="9017021975-7">(</span><span·class="p"·data-group-id="9017021975-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="9831249049-7">(</span><span·class="p"·data-group-id="9831249049-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="9017021975-8">(</span><span·class="p"·data-group-id="9017021975-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="9831249049-8">(</span><span·class="p"·data-group-id="9831249049-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="9536701112-1">(</span><span·class="p"·data-group-id="9536701112-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9536701112-2">#{</span><span·class="ss">id</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="nf">child_id</span><span·class="p"·data-group-id="9536701112-3">(</span><span·class="p"·data-group-id="9536701112-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="9536701112-4">(</span><span·class="p"·data-group-id="9536701112-4"[·...·truncated·by·diffoscope;·len:·49,·SHA:·c1348d10958a20c35f38d142a04c14e1c06497b5a79bf818fd20ae814b33f142·...·]············</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="6725426256-1">(</span><span·class="p"·data-group-id="6725426256-1">)</span><[·...·truncated·by·diffoscope;·len:·406,·SHA:·250786f4a3afd25442ee14e6806360ae3dbe329b6bc0574311f820ae73e04e30·...·]············</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="6725426256-4">(</span><span·class="p"·data-group-id="6725426256-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="9536701112-5">(</span><span·class="p"·data-group-id="9536701112-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="6725426256-5">(</span><span·class="p"·data-group-id="6725426256-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="9536701112-6">(</span><span·class="p"·data-group-id="9536701112-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="9536701112-7">(</span><span·class="p"·data-group-id="9536701112-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="9536701112-8">(</span><span·class="p"·data-group-id="9536701112-8">)</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·19,·SHA:·cdc41c3b86f778a70c395180e042b4243a73269f3386d415d4b2c2ecbdfd1fa7·...·]·</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="6725426256-6">(</span><span·class="p"·data-group-id="6725426256-6">)</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·19,·SHA:·887e09d9f57385f2929afb80f23f02203796ca6431e1f51107d90a29beb84747·...·]·</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="6725426256-7">(</span><span·class="p"·data-group-id="6725426256-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="6725426256-8">(</span><span·class="p"·data-group-id="6725426256-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="9536701112-9">(</span><span·class="p"·data-group-id="9536701112-9">)</span><span·class="p"·data-group-id="9536701112-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="6725426256-9">(</span><span·class="p"·data-group-id="6725426256-9">)</span><span·class="p"·data-group-id="6725426256-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="9536701112-10">(</span><span·class="p"·data-group-id="9536701112-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="9536701112-11">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·dbade2d1e61ac12a0502c30d08afa538ad6ed33796ecb526bd28fcb692a13dde·...·]-11">)</span><span·class="w">422 ····</span><span·class="nf">child_id</span><span·class="p"·data-group-id="6725426256-10">(</span><span·class="p"·data-group-id="6725426256-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="6725426256-11">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·55874340bf6fd48efed2c5a8ac3c2ba8d305114c95b77b30f5459d52744ceed4·...·]-11">)</span><span·class="w">
423 ····</span><span·class="nf">mfargs</span><span·class="p"·data-group-id="9536701112-12">(</span><span·class="p"·data-group-id="9536701112-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9536701112-13">{</span><span·class="n">M</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·962,·SHA:·8a668f7fb9731d1a2dd5fc370804753199c88f04ac5af4a9ef4b36bdccd7b794·...·]-13">}</span><span·class="w">423 ····</span><span·class="nf">mfargs</span><span·class="p"·data-group-id="6725426256-12">(</span><span·class="p"·data-group-id="6725426256-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6725426256-13">{</span><span·class="n">M</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·962,·SHA:·ff44cddfc49a0da634e5d1a74150ca5f0cb1fff51d97395875c27ffde398ad70·...·]-13">}</span><span·class="w">
424 ····</span><span·class="nf">modules</span><span·class="p"·data-group-id="9536701112-18">(</span><span·class="p"·data-group-id="9536701112-18">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="9536701112-19">[</span><span·class="nf">module</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·126,·SHA:·dac80dd25d9ae17df41db30b7678232ef916ab6e441ca3aaeeab7c4dd7c75147·...·]-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="6725426256-18">(</span><span·class="p"·data-group-id="6725426256-18">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6725426256-19">[</span><span·class="nf">module</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·126,·SHA:·3b6db6c1fd22a8fc771d07bc67f9ebbcdaf5213ec3d995fe5e5b9da3e4b21fb0·...·]-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="9536701112-21">(</span><span·class="p"·data-group-id="9536701112-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="6725426256-21">(</span><span·class="p"·data-group-id="6725426256-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="9536701112-22">(</span><span·class="p"·data-group-id="9536701112-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="9536701112-23">(</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·edc47aa57c353461e21c9abca0dd1c674a61253ac8300b1c28c1b1222e21657b·...·]-23">)</span><span·class="w">426 ····</span><span·class="nf">significant</span><span·class="p"·data-group-id="6725426256-22">(</span><span·class="p"·data-group-id="6725426256-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="6725426256-23">(</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·f69bd5e64d730a0ab55cbec35c67e3976b3c3a8b187c0c33867fb3ac9a4afd6d·...·]-23">)</span><span·class="w">
427 ····</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="9536701112-24">(</span><span·class="p"·data-group-id="9536701112-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:·5204456046f8a53cd695ca10de720433b452bafce5e81347d0ce4e217af11874·...·]-25">)</span><span·class="w">427 ····</span><span·class="nf">shutdown</span><span·class="p"·data-group-id="6725426256-24">(</span><span·class="p"·data-group-id="6725426256-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:·8f98bc166860c9c255b2ddc3061bd2cf30a48fbca189449925d64beed893af4e·...·]-25">)</span><span·class="w">
428 ····</span><span·class="nf">worker</span><span·class="p"·data-group-id="9536701112-26">(</span><span·class="p"·data-group-id="9536701112-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="6725426256-26">(</span><span·class="p"·data-group-id="6725426256-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.3/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.1/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.1/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.1/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.1/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.3/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.1/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.1/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.1/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.1/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.1/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.1/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="8573812772-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="3420301283-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="8573812772-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="8573812772-3">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·7a9dea7660de1b78ab8a44ce5200638da4a3e60005b671a9810f134eaac454e9·...·]-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="3420301283-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="3420301283-3">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·d97150088b0f236ae81587c59856a35ea997b5343804ce142ed25762aad36bcd·...·]-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="8573812772-4">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="8573812772-4">]</span><span·class="p"·data-group-id="8573812772-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="3420301283-4">[</span><span·class="ss">ch3</span><span·class="p"·data-group-id="3420301283-4">]</span><span·class="p"·data-group-id="3420301283-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="2379903158-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="5861896967-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="2379903158-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="2379903158-3">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·292,·SHA:·0e24b5171987a71b3823cabfc959d6a0f384f2d427bad66ef01102bf5da068f0·...·]-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="5861896967-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="5861896967-3">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·292,·SHA:·251141509e39af3ec457a0118406d21209df2f26938390193ae39c7cf0f45e07·...·]-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="2379903158-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="5861896967-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="6850359460-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="0320249305-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="6850359460-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="6850359460-3">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·4e4c0e02b3e6f9f5e00e4c3cd4f9602839c79cfbd6cf97d907eee08a423bbc6c·...·]-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="0320249305-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="0320249305-3">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·e14a359cbf853aae09efc3da3c2516a0d67551755fb3baa00e76720184726b79·...·]-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="6850359460-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="0320249305-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="0216220595-1">(</span><span·class="p"·data-group-id="0216220595-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="2581053577-1">(</span><span·class="p"·data-group-id="2581053577-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="0216220595-2">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0216220595-3">[</span><span·class="p"·data-group-id="0216220595-3">]</span><span·class="p"·data-group-id="0216220595-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.1/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="2581053577-2">(</span><span·class="ss">ch_sup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2581053577-3">[</span><span·class="p"·data-group-id="2581053577-3">]</span><span·class="p"·data-group-id="2581053577-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.1/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.1/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.1/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.1/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.1/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="1381798849-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="1381798849-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="4608353179-1">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="4608353179-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="1381798849-2">#{</span><span·class="p"·data-group-id="1381798849-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="4608353179-2">#{</span><span·class="p"·data-group-id="4608353179-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="1381798849-3">[</span><span·class="p"·data-group-id="1381798849-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="4608353179-3">[</span><span·class="p"·data-group-id="4608353179-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">
Max diff block lines reached; 12024/65236 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="2199485747-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="2199485747-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="6022697288-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="6022697288-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
154 ····</span><span·class="p"·data-group-id="2199485747-2">[</span><span·class="p"·data-group-id="2199485747-2">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">154 ····</span><span·class="p"·data-group-id="6022697288-2">[</span><span·class="p"·data-group-id="6022697288-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="2199485747-3">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class="p"·data-group-id="2199485747-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">156 ····</span><span·class="p"·data-group-id="6022697288-3">[</span><span·class="p">_</span><span·class="p">|</span><span·class="p">_</span><span·class="p"·data-group-id="6022697288-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="2199485747-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="2199485747-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="6022697288-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="6022697288-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="8644901378-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="8644901378-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="5085928665-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="5085928665-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="8644901378-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="8644901378-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="5085928665-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="5085928665-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
172 ········</span><span·class="p"·data-group-id="8644901378-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="8644901378-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">172 ········</span><span·class="p"·data-group-id="5085928665-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="5085928665-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="8644901378-4">(</span><span·class="n">Person</span><span·class="p"·data-group-id="8644901378-4">)</span><span·class="p">,</span><span·class="w">173 ············</span><span·class="nf">print_name</span><span·class="p"·data-group-id="5085928665-4">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5085928665-4">)</span><span·class="p">,</span><span·class="w">
174 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="8644901378-5">(</span><span·class="n">Person</span><span·class="p"·data-group-id="8644901378-5">)</span><span·class="p">,</span><span·class="w">174 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="5085928665-5">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5085928665-5">)</span><span·class="p">,</span><span·class="w">
175 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="8644901378-6">(</span><span·class="n">Person</span><span·class="p"·data-group-id="8644901378-6">)</span><span·class="p">;</span><span·class="w">175 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="5085928665-6">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5085928665-6">)</span><span·class="p">;</span><span·class="w">
176 ········</span><span·class="p"·data-group-id="8644901378-7">[</span><span·class="p"·data-group-id="8644901378-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 ········</span><span·class="p"·data-group-id="5085928665-7">[</span><span·class="p"·data-group-id="5085928665-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="8644901378-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="8644901378-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·7b9034a28cf40a4c19a30f6b15c2b2fc0a120a68fff06453f7535eba8f98e856·...·]-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="5085928665-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="5085928665-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·c3deb678c3f98f6dda1f2e861a5971f0712a1cfbd014e1c4b142be766649c3e7·...·]-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="8644901378-10">(</span><span·class="n">Person</span><span·class="p"·data-group-id="8644901378-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="5085928665-10">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5085928665-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="8644901378-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="8644901378-12">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·06a4769890308f4c756d87a800ebdd4852d92c660d20c01f461c440c6655ab1e·...·]-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="5085928665-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="5085928665-12">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·9d40b33536828b0ea4e66bd2854e508255ac418d7bc2dc25c55b331b740fb4ef·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
182 </span><span·class="nf">print_age</span><span·class="p"·data-group-id="8644901378-13">(</span><span·class="n">Person</span><span·class="p"·data-group-id="8644901378-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="5085928665-13">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5085928665-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="8644901378-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="8644901378-15">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·83f9b8fa1c32df4b09e73c688e146bd9d382d5650e4cf7b71e29ad5e3a23d5b2·...·]-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="5085928665-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="5085928665-15">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·356e6c26cd42f302fb11e73f6af1ac512e3586b2ae8f31edd73347fc638d04b5·...·]-14">)</span><span·class="p">.</span><span·class="w">
  
184 </span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="8644901378-16">(</span><span·class="n">Person</span><span·class="p"·data-group-id="8644901378-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="5085928665-16">(</span><span·class="n">Person</span><span·class="p"·data-group-id="5085928665-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="8644901378-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="8644901378-18">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·e5144062a6ee023431e3e42acdbeef207391132781d2db55bdbca640a28acaf5·...·]-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="5085928665-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="5085928665-18">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·d12b31708b35d2fca1dc71b6aa1e4be19b9c9589494ba653809dbce383c4ce69·...·]-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="1945444796-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="1945444796-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="9540648828-1">(</span><span·class="n">PersonId</span><span·class="p"·data-group-id="9540648828-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="1945444796-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="1945444796-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="9540648828-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="9540648828-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
189 ········</span><span·class="p"·data-group-id="1945444796-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="1945444796-3">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 ········</span><span·class="p"·data-group-id="9540648828-3">[</span><span·class="n">Person</span><span·class="p"·data-group-id="9540648828-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="1945444796-4">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="1945444796-4">)</span><span·class="p">,</span><span·class="w">190 ············</span><span·class="nf">print_name</span><span·class="p"·data-group-id="9540648828-4">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="9540648828-4">)</span><span·class="p">,</span><span·class="w">
191 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="1945444796-5">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="1945444796-5">)</span><span·class="p">,</span><span·class="w">191 ············</span><span·class="nf">print_age</span><span·class="p"·data-group-id="9540648828-5">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="9540648828-5">)</span><span·class="p">,</span><span·class="w">
192 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="1945444796-6">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="1945444796-6">)</span><span·class="p">;</span><span·class="w">192 ············</span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="9540648828-6">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="9540648828-6">)</span><span·class="p">;</span><span·class="w">
193 ········</span><span·class="p"·data-group-id="1945444796-7">[</span><span·class="p"·data-group-id="1945444796-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 ········</span><span·class="p"·data-group-id="9540648828-7">[</span><span·class="p"·data-group-id="9540648828-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="1945444796-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="1945444796-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·3ee678869f92f2ee4c9b7a2cc65802d56efe6b806d22bda5b49906113ab6aaa1·...·]-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="9540648828-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="9540648828-9">[</span><sp[·...·truncated·by·diffoscope;·len:·122,·SHA:·b80883191ad65d7df712d62ce82595882b5ba087591bfaa757443df912a0f958·...·]-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="1945444796-10">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="1945444796-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="9540648828-10">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="9540648828-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
198 ····</span><span·class="p"·data-group-id="1945444796-11">[</span><span·class="n">Person</span><span·class="p"·data-group-id="1945444796-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:·55d294fc0a1a38c129fdea59b50855db06184a85a03918fd609626adf190268f·...·]-12">)</span><span·class="p">,</span><span·class="w">198 ····</span><span·class="p"·data-group-id="9540648828-11">[</span><span·class="n">Person</span><span·class="p"·data-group-id="9540648828-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:·62a73c2b218b6a36c72e5998cba69b70ddea773324b539434275b8b322c4b923·...·]-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="1945444796-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="1945444796-14">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·83bd7c2e8cfe136223df43d2455816dd9153bfc17c3745508bce082105a7911b·...·]-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="9540648828-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="9540648828-14">[</span><span·class[·...·truncated·by·diffoscope;·len:·219,·SHA:·a2c48f26b7cdebeef5971fd4b9a3c1e276218f2e1c2c31224a78b99924f5f43d·...·]-13">)</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="nf">print_age</span><span·class="p"·data-group-id="1945444796-15">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="1945444796-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="9540648828-15">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="9540648828-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
201 ····</span><span·class="p"·data-group-id="1945444796-16">[</span><span·class="n">Person</span><span·class="p"·data-group-id="1945444796-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:·07cd1577b8d879ecb53ccfe14c2625dd73c8a972909b2c6e1835f20aa449591c·...·]-17">)</span><span·class="p">,</span><span·class="w">201 ····</span><span·class="p"·data-group-id="9540648828-16">[</span><span·class="n">Person</span><span·class="p"·data-group-id="9540648828-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:·f174e38352a9d5a082acd808785fed736b6227b8cf119b815c9bef67f47e7b2a·...·]-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="1945444796-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="1945444796-19">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·69360f2f72e60596b82b1373220fe813aa3cdc071f38892caa0c41ab3e73fce1·...·]-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="9540648828-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="9540648828-19">[</span><span·class[·...·truncated·by·diffoscope;·len:·218,·SHA:·5907eb27ecd20ed1b105d68fce6a678ddc7e725dc69e7a831456ce0228979d95·...·]-18">)</span><span·class="p">.</span><span·class="w">
  
203 </span><span·class="nf">print_occupation</span><span·class="p"·data-group-id="1945444796-20">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="1945444796-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="9540648828-20">(</span><span·class="n">PersonID</span><span·class="p"·data-group-id="9540648828-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
204 ····</span><span·class="p"·data-group-id="1945444796-21">[</span><span·class="n">Person</span><span·class="p"·data-group-id="1945444796-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:·74cb5444c9495960c4976e37babdac06b612ec8eab707381f6046e04c865dc21·...·]-22">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="p"·data-group-id="9540648828-21">[</span><span·class="n">Person</span><span·class="p"·data-group-id="9540648828-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:·706b58b522cf22010d5e1f5ea985dc5a7b654edab6a508826eaac3a22d0bb6ba·...·]-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="1945444796-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="1945444796-24">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·0e446df0a279de3b789c0da6bd1aac8b0a29d73c8e2f986990df19c47c0326cd·...·]-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="9540648828-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="9540648828-24">[</span><span·class[·...·truncated·by·diffoscope;·len:·225,·SHA:·42652e7904e7d7d15672438de7551fb0940a20d4e12a51201c435e527bcfe5cc·...·]-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.1/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.1/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.1/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.1/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="1151239661-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1151239661-2">[</span><span·class="p"·data-group-id="1151239661-3">{</span><span·class="o">#</span><span·class="ss">person</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·ccd7ebfd09d89a00774812a0be318baf1f1ce9ccad00c70b007735bdce909b54·...·]-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="8133754089-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8133754089-2">[</span><span·class="p"·data-group-id="8133754089-3">{</span><span·class="o">#</span><span·class="ss">person</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·da5b13fa75dfba126bd40537b325ce75690d63728d3870457c1a53270c4fca51·...·]-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="1151239661-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="8133754089-4">}</span><span·class="p">,</span><span·class="w">
237 ················</span><span·class="p"·data-group-id="1151239661-5">[</span><span·class="p"·data-group-id="1151239661-5">]</span><span·class="p">,</span><span·class="w">237 ················</span><span·class="p"·data-group-id="8133754089-5">[</span><span·class="p"·data-group-id="8133754089-5">]</span><span·class="p">,</span><span·class="w">
238 ················</span><span·class="p"·data-group-id="1151239661-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="1151239661-6">]</span><span·class="p"·data-group-id="1151239661-3">}</span><span·class="p"·data-group-id="1151239661-2">]</span><span·class="p"·data-group-id="11512396[·...·truncated·by·diffoscope;·len:·434,·SHA:·462e6e316100242fb1288575f58d764a5f72b90cd1de8f9ffdfc2d15093b2fcb·...·]-1">)</span><span·class="p">,</span><span·class="w">238 ················</span><span·class="p"·data-group-id="8133754089-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8133754089-6">]</span><span·class="p"·data-group-id="8133754089-3">}</span><span·class="p"·data-group-id="8133754089-2">]</span><span·class="p"·data-group-id="81337540[·...·truncated·by·diffoscope;·len:·434,·SHA:·faec106a514f993aef6d13e1737a143d20b94ccfab763a1fe537e596acf31334·...·]-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="8607054596-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8607054596-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="8607054596-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·919,·SHA:·25cb2afb3113b791768f4e624ac457027d41e426aab6a035cd70f93a44086868·...·]-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="9897793661-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9897793661-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="9897793661-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·919,·SHA:·708c2216340f4b516487c1bdf1cb082553fe6b4ca20c6f0b942b480fb86e9cb7·...·]-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="7599419804-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="9001619095-4">}</span><span·class="p">,</span><span·class="w">
243 ················</span><span·class="p"·data-group-id="7599419804-5">[</span><span·class="p"·data-group-id="7599419804-5">]</span><span·class="p">,</span><span·class="w">243 ················</span><span·class="p"·data-group-id="9001619095-5">[</span><span·class="p"·data-group-id="9001619095-5">]</span><span·class="p">,</span><span·class="w">
244 ················</span><span·class="p"·data-group-id="7599419804-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="7599419804-6">]</span><span·class="p"·data-group-id="7599419804-3">}</span><span·class="p"·data-group-id="7599419804-2">]</span><span·class="p"·data-group-id="75994198[·...·truncated·by·diffoscope;·len:·410,·SHA:·ae21a1982066886c6eea82d9c9539aa79eae2a4271a7f6bb59b69a225c3d655d·...·]-1">)</span><span·class="p">,</span><span·class="w">244 ················</span><span·class="p"·data-group-id="9001619095-6">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="9001619095-6">]</span><span·class="p"·data-group-id="9001619095-3">}</span><span·class="p"·data-group-id="9001619095-2">]</span><span·class="p"·data-group-id="90016190[·...·truncated·by·diffoscope;·len:·410,·SHA:·93c9953eb9b83adac36b1c9e8a9d7f236062f2fae6616e04ed8a080235860ec5·...·]-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="1226605985-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1226605985-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="1226605985-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="2504068440-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2504068440-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="2504068440-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="1226605985-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="1226605985-4">]</span><span·class="p">;</span><span·class="w">247 ····································</span><span·class="p"·data-group-id="2504068440-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="2504068440-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="1226605985-5">[</span><span·class="p"·data-group-id="1226605985-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabList</span><span·class="p"·data-group-id="1226605985-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="2504068440-5">[</span><span·class="p"·data-group-id="2504068440-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">TabList</span><span·class="p"·data-group-id="2504068440-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="8094538654-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8094538654-2">[</span><span·class="p"·data-group-id="8094538654-3">{</span><span·class="o">#</span><span·class="ss">person</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·c4bcad5eebdd5163c59dcafee5ca9c29f61356441f3445efa7889c7095371c9d·...·]-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="4137866919-1">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4137866919-2">[</span><span·class="p"·data-group-id="4137866919-3">{</span><span·class="o">#</span><span·class="ss">person</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·b76a5d8c11b6be14f0cce03947c10cf6e35aeedd01f53b7fe780dbbef9a8fb2b·...·]-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="8094538654-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8094538654-5">[</span><span·class="p"·data-group-id="8094538654-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8[·...·truncated·by·diffoscope;·len:·688,·SHA:·162715f6c67714ee44ac89869a5dddaa41733ecc5284afacae709e07b97a9e0e·...·]5-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="4137866919-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4137866919-5">[</span><span·class="p"·data-group-id="4137866919-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·688,·SHA:·6ea0e9be7af999ee6c3d40f879fb7b28ff07cfc9090918fd8cd7780e2b2de106·...·]5-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="9142704425-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9142704425-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="9142704425-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·410,·SHA:·93c92c507a5e94f26b71e928287e77d72a60b3535620468cf61548f73c5da259·...·]5-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="4570305755-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4570305755-3">(</span><span·class="n">X</span><span·class="p"·data-group-id="4570305755-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·410,·SHA:·ae96726f7d4fd549c5ea96aab27e42513ea4d1fc26b39af125b89305aef0a580·...·]5-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="9866633965-1">(</span><span·class="n">IndexTable</span><span·class="p">,</span><span·class="s">&quot;Bryan&quot;</span><span·class="p"·data-group-id="9866633965-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="2006675350-1">(</span><span·class="n">IndexTable</span><span·class="p">,</span><span·class="s">&quot;Bryan&quot;</span><span·class="p"·data-group-id="2006675350-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="9866633965-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9866633965-3">(</span><span·class="o">#</span><span·class="ss">index_entry</span><span·class="p"·data-group-id="9866633965-4">{</span><span·class="ss">idno</span><span·class="w[·...·truncated·by·diffoscope;·len:·177,·SHA:·68455800eb67a10fdf01d9d2b02698adf1ff8f23b294962c54e43cd39c483ce1·...·]-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="2006675350-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2006675350-3">(</span><span·class="o">#</span><span·class="ss">index_entry</span><span·class="p"·data-group-id="2006675350-4">{</span><span·class="ss">idno</span><span·class="w[·...·truncated·by·diffoscope;·len:·177,·SHA:·1c11d66a346ab5424298840c81da4b7bdf7eb4ca17c6d754d599be69f77d00c4·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
302 ·················</span><span·class="p"·data-group-id="9866633965-5">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="9866633965-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:·b6c1682c8c332e80564cf69c8871c61ba76976e92931c4cbbf9e83208720f77b·...·]-7">)</span><span·class="p">,</span><span·class="w">302 ·················</span><span·class="p"·data-group-id="2006675350-5">[</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="2006675350-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:·7a28b7e0dd731545e92c04dfabda2499d55ffc6bf4a7afb65159f43cd6dbc00b·...·]-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="9866633965-2">)</span><span·class="p">,</span></code></pre><p>Notice·that·this·code·does·not·use·<a·href="../../lib/stdlib-6.2.1/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="2006675350-2">)</span><span·class="p">,</span></code></pre><p>Notice·that·this·code·does·not·use·<a·href="../../lib/stdlib-6.2.1/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.1/doc/html/ets.html#lookup/2"><code·class="inline">ets:lookup/2</code></a>·call.·The·<a·href="../../lib/stdlib-6.2.1/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.1/doc/html/ets.html#lookup/2"><code·class="inline">ets:lookup/2</code></a>·call.·The·<a·href="../../lib/stdlib-6.2.1/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/71675 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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>·|·<a·href="../../erts-15.2.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/doc/html/erlang.html#node/0"><code·class="inline">node/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/doc/html/erlang.html#t:integer/0"><code·class="inline">integer/0</code></a>·|·<a·href="../../erts-15.2.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/doc/html/erlang.html#node/0"><code·class="inline">node/0</code></a></td><td·style="text-align:·left;"><a·href="../../erts-15.2.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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.3/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="4667815137-1">(</span><span·class="p"·data-group-id="4667815137-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="46[·...·truncated·by·diffoscope;·len:·375,·SHA:·dc4d1bb01f908033ff566af3f5f9c03aa81a0f03b22fe7cb056d619a3b03e1e1·...·]-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="6576283360-1">(</span><span·class="p"·data-group-id="6576283360-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="65[·...·truncated·by·diffoscope;·len:·375,·SHA:·1c1e508db95eb6fcbcbf025aa99a86d0a17c3f7f409fdb098c8b36e9a2517e8b·...·]-2">)</span><span·class="w">
246 </span><span·class="nf">nonempty_improper_list</span><span·class="p"·data-group-id="4667815137-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="4667815137-5">)</span><span·class="w">246 </span><span·class="nf">nonempty_improper_list</span><span·class="p"·data-group-id="6576283360-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="6576283360-5">)</span><span·class="w">
247 </span><span·class="nf">nonempty_maybe_improper_list</span><span·class="p"·data-group-id="4667815137-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="4667815137-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="6576283360-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="6576283360-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="1444185710-1">{</span><span·class="p"·data-group-id="1444185710-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="4541444981-1">{</span><span·class="p"·data-group-id="4541444981-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="1444185710-2">{</span><span·class="n">Fields</span><span·class="p"·data-group-id="1444185710-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="4541444981-2">{</span><span·class="n">Fields</span><span·class="p"·data-group-id="4541444981-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="7460970397-1">(</span><span·class="p"·data-group-id="7460970397-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="7460970397-2">{</span><span·class="ss">&#39;gadget&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">reference</span><span·class="p"·data-group-id="7460970397-3">(</span><span·class="p"·data-group-id="7460970397-3">)</span><span·class="p"·data-group-id="7460970397-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="2382198577-1">(</span><span·class="p"·data-group-id="23[·...·truncated·by·diffoscope;·len:·335,·SHA:·fa31fce7dc4b75616327b05d1ad13e8d9e54e60b5e0be08a55242f98c8e7f174·...·]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="3580007921-1[·...·truncated·by·diffoscope;·len:·638,·SHA:·06f85ef6f68f3fe60fe76550c727ef3e01c887adc1b540a7544287104efcb842·...·]
 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="8379286973-1">(</span><span·class="p"·data-group-id="8379286973-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8379286973-2">#{</span><span·class="p"·data-group-id="8379286973-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="8279626851-1">(</span><span·class="p"·data-group-id="8279626851-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="1661036463-1">(</span><span·class="p"·data-group-id="1661036463-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="8279626851-2">(</span><span·class="p"·data-group-id="8279626851-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="1661036463-2">(</span><span·class="p"·data-group-id="1661036463-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="6970483200-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="6970483200-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·clas[·...·truncated·by·diffoscope;·len:·313,·SHA:·9bd143363e4977a6eea97b47a38a489a053de09ee343f0eb0468bdb379d36111·...·]0-2">]</span><span·class="p">.</span></code></pre><p>A·module·can·export·some·types·to·declare·that·other·modules·are·allowed·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="6667684460-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="6667684460-1">)</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><span·clas[·...·truncated·by·diffoscope;·len:·313,·SHA:·9762de72250cb02cf8bc36e031783891c2a6458d991248664ed63ef0a52aceae·...·]0-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="8779889226-1">(</span><span·class="p"·data-group-id="8779889226-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=[·...·truncated·by·diffoscope;·len:·964,·SHA:·7a3d3bfe6beeb829d89da6a12184dbe04a5c6e630a061ae0473608def96139f2·...·]-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·to282 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="8376712302-1">(</span><span·class="p"·data-group-id="8376712302-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=[·...·truncated·by·diffoscope;·len:·964,·SHA:·9da1e29a7ac35dfe82e7fd52d0f5c9d57e64c1c4ee6f5beb78f1e5df3f4c9a12·...·]-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="5220982735-1">(</span><span·class="p"·data-group-id="5220982735-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="0536321989-1">(</span><span·class="p"·data-group-id="0536321989-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="5220982735-2">(</span><span·class="nf">atom</span><span·class="p"·data-group-id="5220982735-3">(</span><span·class="p"·data-group-id="5220982735-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:·647eae6353a511fd22f91ca89f273d03c7b1081bd35b9c1cec88d80e40fb97b7·...·]-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="0536321989-2">(</span><span·class="nf">atom</span><span·class="p"·data-group-id="0536321989-3">(</span><span·class="p"·data-group-id="0536321989-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:·540894a13553a684293907d869d869ea358b20e9474e7642e2cf573729e06b47·...·]-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="9041100798-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9041100798-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:·15b1783b209e2eddb2e2f6ee87c2c9eb930129bbc034cbd65de5a03c7f9adbf5·...·]-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="5679279254-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5679279254-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:·8af504a0cc7b3655165ec6fa70b83614dd6c8a96efb03fef9e5b517fe5e70c17·...·]-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="6517212084-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6517212084-2">{</span><span·class="ss">field1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><spa[·...·truncated·by·diffoscope;·len:·651,·SHA:·10385dfba2fd1814cb2e3af40169aed84ec7398dbd7a28c36039c020b4c94633·...·]-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="9508964140-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9508964140-2">{</span><span·class="ss">field1</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><spa[·...·truncated·by·diffoscope;·len:·651,·SHA:·977461d10efd79860581fb4cf1a525d3625f1edbfce953de03f5418fdc1e2324·...·]-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="6871773066-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6871773066-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:·142c399dd469d26190f04331c24dd4434cd8b1dffb99bca9c4f59b6b7cb50abf·...·]-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="9677484983-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9677484983-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:·ff67652b36ca914c60a09e9d8ae6e68cc77f688bd30e17fbbc89d1fb8d7ba6cc·...·]-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="6909107819-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6909107819-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:·8102f3a6e9ad943455384031a7b1ec215fca22264173c94a7b6e837813607d87·...·]-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="8188673366-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8188673366-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:·ff93fada225490cca4f24fb8fed6e1040ea1ada748786c3a46097a6d62ca616b·...·]-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="6909107819-4">(</span><span·class="p"·data-group-id="6909107819-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="8188673366-4">(</span><span·class="p"·data-group-id="8188673366-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="6909107819-2">}</span><span·class="p"·data-group-id="6909107819-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="8188673366-2">}</span><span·class="p"·data-group-id="8188673366-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="6909107819-5">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6909107819-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:·cf18ab9e46552b343153b428e48a5e563e0d45b4c441b818fc3276b6f5ffe16a·...·]-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="8188673366-5">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8188673366-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:·8768b7a37d6bd50073b47868a3492bf691b7d4be1fb1e22fedd912d383869649·...·]-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="6909107819-8">(</span><span·class="p"·data-group-id="6909107819-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="8188673366-8">(</span><span·class="p"·data-group-id="8188673366-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="6909107819-6">}</span><span·class="p"·data-group-id="6909107819-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="8188673366-6">}</span><span·class="p"·data-group-id="8188673366-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="7737223873-1">(</span><span·class="p"·data-group-id="7737223873-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="7737223873-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·3e95712d8b22cc6ff3765e43d1323a3ef331048e460ded5326d9a365a32aeb9e·...·]-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="3877956705-1">(</span><span·class="p"·data-group-id="3877956705-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="3877956705-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·585fd8d19bc1919e86a8690ecf5152ae7c2e965f9bf24be70ba989292cc6d46a·...·]-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="7737223873-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7737223873-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:·8300ed2fcede78e7d749a5449c340df79355c1c940aa9d42f147df5f87526bcb·...·]-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="3877956705-3">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3877956705-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:·644c9f216293d1fea1a65b77b3bbcb764c766f22e930fd90ece1196c07475605·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
314 </span><span·class="nf">lookup</span><span·class="p"·data-group-id="7737223873-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="7737223873-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="3877956705-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="3877956705-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="7737223873-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="7737223873-9">{</span><span·class="ss">name</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·95ae579e56459921479df662405be9a0419bab429622f046a1028e05e85a3b9d·...·]-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="3877956705-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="3877956705-9">{</span><span·class="ss">name</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·e0dce0024ee5da23bf2e8eedefcec64568e6c31baf2d08d5da41a2b3e6730b30·...·]-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="8460123423-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8460123423-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><sp[·...·truncated·by·diffoscope;·len:·667,·SHA:·8c19a6a01b933a28c5ea8025c79d03a13d82f927408e557270a83bd2ed8c1e70·...·]3-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="6680646653-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6680646653-2">{</span><span·class="ss">name</span><span·class="w">·</span><span·class="p">:</span><span·class="p">:</span><sp[·...·truncated·by·diffoscope;·len:·667,·SHA:·b48da1dfc29a501c112862ace7e931b5118a723f7f0df3b4666b9734758bf8e5·...·]3-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="8460123423-5">(</span><span·class="p"·data-group-id="8460123423-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:·324,·SHA:·9188a1f9c10a1740f8f649f8078a638d2177905aaf2d11483817e3f9c9ff397a·...·]3-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="6680646653-5">(</span><span·class="p"·data-group-id="6680646653-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:·324,·SHA:·308661d109a0eca21d40bc222ccf4e45896fae30f205ff7636ab338777ca95a5·...·]3-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="7107435571-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="7107435571-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="3338065157-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="3338065157-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="7107435571-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="7107435571-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="3338065157-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="3338065157-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="1674205752-1">(</span><span·class="nf">pos_integer</span><span·class="p"·data-group-id="1674205752-2">(</span><span·class="p"·data-group-id="1674205752-2">)</span><span·class="p"·data-group-id="1674205752-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="1674205752-3">(</span><span·class="p"·data-group-id="1674205752-3">)</span><span·class="p">;</span><span·class="w"> 
337 ·········</span><span·class="p"·data-group-id="1674205752-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="1674205752-5">(</span><span·class="p"·data-group-id="1674205752-5">)</span><span·class="p"·data-group-id="1674205752-4">)</sp[·...·truncated·by·diffoscope;·len:·335,·SHA:·0f5fd780f534beaf8af5179f540055c1b94547f5704a6c8522228a91a105fc0c·...·]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="9178493918-1">(</span><span·class="[·...·truncated·by·diffoscope;·len:·438,·SHA:·aad925de9ddffef6a99cbff1466b70559f66dcbd9718487b8872faf3f681e1c2·...·]
 337 ·········</span><span·class="p"·data-group-id="9178493918-4">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="9178493918-5">(</span><span·class="p"·data-group-id="9178493918-5">)</span><span·class="p"·data-group-id="9178493918-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="9178493918-6">(</span><span·class="p"·data-group-id="9178493918-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="7634918563-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="7634918563-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:·ae8eff44c211e29f0f08c5c69cb7cb19c653aeae067594c166ca32ae80e31784·...·]-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="3802868740-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="3802868740-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:·300c5cb2f3e5254e336dd5c9a87ddeb04dccefe59c85eadf041e8ffa4ebfe752·...·]-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="4061080418-1">(</span><span·class="nf">tuple</span><span·class="p"·data-group-id="4061080418-2">(</span><span·class="p"·data-group-id="4061080418-2">)</span><span·class="p"·data-group-id="4061080418-1">)</span><span·class="w">·</span><span·class="p">-&gt;<[·...·truncated·by·diffoscope;·len:·153,·SHA:·f6f2972089c04e7a0328978acd3dc84eadb5e5bef1897941ebcd0c44d2d99acb·...·]-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="0588157797-1">(</span><span·class="nf">tuple</span><span·class="p"·data-group-id="0588157797-2">(</span><span·class="p"·data-group-id="0588157797-2">)</span><span·class="p"·data-group-id="0588157797-1">)</span><span·class="w">·</span><span·class="p">-&gt;<[·...·truncated·by·diffoscope;·len:·153,·SHA:·64fdc2e9c0ddfe033c70001425ba062456a1e38e40a2d370c0d95d79d9f55527·...·]-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="5151129936-1">(</span><span·class="p"·data-group-id="5151129936-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="5151129936-3">(</span><span·class="p"·data-group-id="5151129936-3">)</span><span·class="p"·data-group-id="5151129936-2">}</span><span·class="p"·data-group-id="5151129936-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="5151129936-4">(</span><span·class="p"·data-group-id="5151129936-4">)</span><span·class="p">;</span><span·class="w"> 
351 ·········</span><span·class="p"·data-group-id="5151129936-5">(</span><span·class="p"·data-group-id="5151129936-6">[</span><span·class="n">Y</span><span·class="p"·data-group-id="5151129936-6">]</span><span·class="p"·data-group-id="5151129936-5">)</span><spa[·...·truncated·by·diffoscope;·len:·543,·SHA:·d7c6754f32f4f428ea851a4c0e2c60bebb76e5edd99b2241d40435d103789697·...·]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="1042651466-1">(</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·807,·SHA:·85186f41a6a4e20c9f6ba97bd50fa0593a3cb17bfc94f7d083a0709dc5ffccdf·...·]
 351 ·········</span><span·class="p"·data-group-id="1042651466-5">(</span><span·class="p"·data-group-id="1042651466-6">[</span><span·class="n">Y</span><span·class="p"·data-group-id="1042651466-6">]</span><span·class="p"·data-group-id="1042651466-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="1042651466-7">(</span><span·class="p"·data-group-id="1042651466-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="1721698032-1">(</span><span·class="n">Err</span><span·class="p"·data-group-id="1721698032-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="1721698032-2">(</sp[·...·truncated·by·diffoscope;·len:·253,·SHA:·40b87373e444cf05098fc072073f3ba3267265f538c76781f2124eff1d1ab423·...·]-2">)</span><span·class="p">.</span></code></pre><p>For·such·functions,·it·is·recommended·to·use·the·special·<a·href="../../erts-15.2.3/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="8342480220-1">(</span><span·class="n">Err</span><span·class="p"·data-group-id="8342480220-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="8342480220-2">(</sp[·...·truncated·by·diffoscope;·len:·253,·SHA:·7c857bdd5424429247b72e5ee8dd7cc9b4548f2b151ca7d8b2b15cf09e2c1005·...·]-2">)</span><span·class="p">.</span></code></pre><p>For·such·functions,·it·is·recommended·to·use·the·special·<a·href="../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0"><code·class="inline">term/0</code></a>·or·<a·href="../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0"><code·class="inline">term/0</code></a>·or·<a·href="../../erts-15.2.3/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.
15.4 KB
./usr/share/doc/erlang-doc/html/doc/upcoming_incompatibilities.html
    
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="0892045154-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="0892045154-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="7528086839-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="7528086839-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="0892045154-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:·aaa4a440a8e3bb74df15e24bd2a3f94cab7ac480931161bfa1208bbfbbe979db·...·]-2">&gt;&gt;</span><span·class="gp·unselectable">157 </span><span·class="p"·data-group-id="7528086839-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:·8a24917b42012071d60fe5cee39b8fa63a327640d942ca9b44bb5cfe33ab870c·...·]-2">&gt;&gt;</span><span·class="gp·unselectable">
158 2&gt;·</span><span·class="p"·data-group-id="0892045154-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="0892045154-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">158 2&gt;·</span><span·class="p"·data-group-id="7528086839-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="7528086839-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p"·data-group-id="0892045154-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:·270e20aa5705db75d1a5d6fc74ce9158c58391aa5618ecca82f80e26fc213cea·...·]-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="7528086839-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:·add27f1ef6a331890dc15f6fbb70da28b5cb6e916639bc665d0157e9c0dd9737·...·]-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="1959058854-1">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="1959058854-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="1959058854-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·67a8b3db58e116d9e9dfcb86930bad09589b5cefcf667773317554b6cd002297·...·]-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="8677108191-1">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="8677108191-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="8677108191-2">(</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·aab5699ee41f35973d791959d49eb45ec92a66e61f788d3d681e8f6e6d4d2f53·...·]-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="1959058854-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="1959058854-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·196,·SHA:·071c1d306382469ca700e5bd14ab16aaf40b1c9d5133a4e591a1c55344a252e1·...·]-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="8677108191-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="8677108191-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·196,·SHA:·521aef677ad2a223e8eca42ea45c614898a014aec8843c5d45f05ba7c33fed21·...·]-4">}</span><span·class="p">.</span><span·class="w">
175 </span><span·class="nf">f</span><span·class="p"·data-group-id="1959058854-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="1959058854-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="8677108191-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="8677108191-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="0736434702-1">(</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">unbound</span><span·class="p"·data-group-id="0736434702-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="0375634322-1">(</span><span·class="ss">is</span><span·class="w">·</span><span·class="ss">unbound</span><span·class="p"·data-group-id="0375634322-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="4059083207-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="4059083207-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="1284358926-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="1284358926-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="8511208436-1">(</span><span·class="p"·data-group-id="8511208436-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="1102768591-1">(</span><span·class="p"·data-group-id="1102768591-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="8511208436-2">(</span><span·class="p"·data-group-id="8511208436-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="1102768591-2">(</span><span·class="p"·data-group-id="1102768591-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
53.7 KB
./usr/share/doc/erlang-doc/html/erts-15.2.3/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="2017497189-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="2017497189-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="9817916230-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="9817916230-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="2017497189-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2017497189-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:·ad2ad17a494d56a4b9a094a96827ac9a90c37c4cc26b8f6694a5bbc6e2a04d8c·...·]-4">}</span><span·class="w">245 </span><span·class="err"> </span><span·class="err"> </span><span·class="p"·data-group-id="9817916230-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9817916230-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:·d887052944bbf2d49a3e7c2f15b55fb650c9c7d9b66d6a59cb16d841dbb76f04·...·]-4">}</span><span·class="w">
246 </span><span·class="nf">listen</span><span·class="p"·data-group-id="2017497189-5">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">Host</span><span·class="p"·data-group-id="2017497189-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="9817916230-5">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">Host</span><span·class="p"·data-group-id="9817916230-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="2017497189-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2017497189-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:·744cbf54487e068cb9e53cc58ce69dd07d14db1681e8165d57c95334d36559db·...·]-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="9817916230-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9817916230-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:·b7f0126e3705bb8d8ecdf5ce128c6c0d80b96f05cc714d780ee9eff4980e574e·...·]-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="7698507576-1">(</span><span·class="p"·data-group-id="7698507576-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="5137342705-1">(</span><span·class="p"·data-group-id="5137342705-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="0780414440-1">(</span><span·class="p"·data-group-id="0780414440-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="7947804062-1">(</span><span·class="p"·data-group-id="7947804062-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
261 ····</span><span·class="p"·data-group-id="0780414440-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="0780414440-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·173,·SHA:·76ca426654800a5907d477fbde72673399b541d3267a2289a8c7298a3085fa49·...·]-3">)</span><span·class="p">,</span><span·class="w">261 ····</span><span·class="p"·data-group-id="7947804062-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="7947804062-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·173,·SHA:·36e818f022c4e194e3d22e062f0b687a7b0786eebd4575beadc12cdbae620908·...·]-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="0780414440-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:·75d69f22d02ba6f6b420576d69fffcc003c53b228fe91f4e593b09a1430c5961·...·]-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="7947804062-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:·b667f9624a3e1c30cd3b1ab5d7614c0812dd428245ba5ebf21c2eeafa6f69a71·...·]-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="9361463625-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="w[·...·truncated·by·diffoscope;·len:·156,·SHA:·d8711236595f06ac6bf4e423ba44df27ad02200c3549dc01e4f708644c26fbbe·...·]-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="9441103368-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="w[·...·truncated·by·diffoscope;·len:·156,·SHA:·8f2efa4b3ca9081f0dec7ddfbc9c3c6e28fe3894c66b1e0b69b483aa81b215c8·...·]-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="8861571781-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:·9add3710e0e1b347734293302166daa509dc4288955fb8ee07334656fef3fb51·...·]-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="9655333864-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:·718cbf09bdc80c7de2eed80fc0a98eb6e22d73e0b6a68288d24f413ab3663401·...·]-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="7824092767-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:·a6a80d8dc75521b1e83e6cf13c1bb82f1eb1bd072854cc80665d5e287f5efb93·...·]-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="3294028013-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:·086794bac48ef728004145ea6980a69cd79eeb2766bdfcbf40642bda8a07e127·...·]-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="0283020894-1">(</span><span·class="n">Listen</span><span·class="p"·data-group-id="0283020894-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="1470005689-1">(</span><span·class="n">Listen</span><span·class="p"·data-group-id="1470005689-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="0283020894-2">(</span><span·class="p"·data-group-id="0283020894-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="1470005689-2">(</span><span·class="p"·data-group-id="1470005689-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="1486333966-1">(</span><span·class="n">NodeName</span><span·class="p"·data-group-id="1486333966-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="3685517778-1">(</span><span·class="n">NodeName</span><span·class="p"·data-group-id="3685517778-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="1486333966-2">(</span><span·class="p"·data-group-id="1486333966-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="3685517778-2">(</span><span·class="p"·data-group-id="3685517778-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="6955974497-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="6955974497-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="6955974497-2">{</span><span·class="ss">error</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·216,·SHA:·063be0bc1177308b67586b5404f2af2608b85c605ba82ea481f97d962894d349·...·]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"·[·...·truncated·by·diffoscope;·len:·262,·SHA:·23b177301da21d8a928d9688579822a8da8fe6c02fa8989bdb8091bcef2b2a69·...·]
 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="8566510784-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="8566510784-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="6668298642-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="6668298642-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="7823720885-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="7823720885-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="6668298642-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="6668298642-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·199,·SHA:·01b59d53b1e4e5a80d592a467b02d738b50d16138c0cfca9ad1afe356ba3efd5·...·]-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="7823720885-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="7823720885-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·199,·SHA:·e2f2ab102c6e09ab847555f83e063cd6f663e3b4b652cc3d6217aba1a7d2da10·...·]-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="3388383024-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="3388383024-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="3388383024-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="3388383024-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"><s[·...·truncated·by·diffoscope;·len:·945,·SHA:·a31a4d42c7e04d6b5a08410ef045d7a1cabd017028a3b1a698966550bb19eb5c·...·]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"·[·...·truncated·by·diffoscope;·len:·809,·SHA:·0b5a99ea5a08cda888d392043a830336a219bd84a84f86ad7664f6712019fe39·...·]
 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="3523134116-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="3523134116-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3523134116-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Packet</span><span·class="p"·data-group-id="3523134116-2">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="3523134116-3">{</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="3523134116-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="2362295442-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="2362295442-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:·5afcd9f972c1fbeb2ef89afc81342ed329500ea3d489e339584df8d98e784b50·...·]-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="6894103537-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="6894103537-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:·36f8bc63ac99e09edb3834dbf4e4c4caea8e1e10f41dd1407841fcb07becb231·...·]-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="5907448046-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="5907448046-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:·101d38fe82a8e91ba59e175b00e6149d8517fa6bf56b92b099139fc2926cd1c4·...·]-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="9055078227-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="9055078227-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:·a5401cad282eba3f21ab245e11cb00a55c07fb3ed2fbe5d6a337b5014501cf99·...·]-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="9886971058-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="9886971058-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="9962480531-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="9962480531-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="7512025248-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="7512025248-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="2463859482-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="2463859482-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="9257411624-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="9257411624-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="9257411624-2">[·...·truncated·by·diffoscope;·len:·49,·SHA:·5ae34f35883155a2b52b67a0076d63492139df1b33bca98fbdc17d9d0f5c7d3c·...·]-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="7307667601-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="7307667601-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="7307667601-2">[·...·truncated·by·diffoscope;·len:·49,·SHA:·d8afd80420e724099fa39372461d66acd37f3b1084a54ac8307a149c5a2a4f6a·...·]-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="7765435024-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="7765435024-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7765435024-2">{</span><span·class="ss">ok<[·...·truncated·by·diffoscope;·len:·280,·SHA:·d7852760686a24d6ba2b574d3a7310222ca5378b2a4e70f192ab56033218e17a·...·]-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="4679915219-1">(</span><span·class="n">DistCtrlr</span><span·class="p"·data-group-id="4679915219-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4679915219-2">{</span><span·class="ss">ok<[·...·truncated·by·diffoscope;·len:·280,·SHA:·6dd4a418bfb084fed114e3b4c479aef0a567698d912b65b5427a361e595157bd·...·]-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="6438609771-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="6438609771-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="6438609771-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="6438609771-2">}</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.3/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="4788930899-1">(</span><span·class="p"·data-group-id="4788930899-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="4788930899-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="3048560056-1">(</span><span·class="p"·data-group-id="3048560056-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="3048560056-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="4788930899-2">}</span><span·class="w">218 </span><span·class="p"·data-group-id="3048560056-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.3/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="2576890578-1">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="2576890578-2">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">id</span><span·class="p"·data-group-id="2576890578-2">}</spa[·...·truncated·by·diffoscope;·len:·247,·SHA:·fb7cbab001976dabad4f8920417d3afdc0e4da25e168662886bdc2548aea2c90·...·]-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="7068765655-1">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="7068765655-2">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">id</span><span·class="p"·data-group-id="7068765655-2">}</spa[·...·truncated·by·diffoscope;·len:·247,·SHA:·b34fcb0c6bca78364160dcf3eb76bc264889651db6766110567ec44e7eafba5c·...·]-1">}</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p"·data-group-id="2576890578-4">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="2576890578-5">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="2576890578-5">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·09d314ccc49875eb842cf50a9e231e0aead92332a6b03dc4f17a97e1ebd8d015·...·]-4">}</span><span·class="p">.</span><span·class="w">159 </span><span·class="p"·data-group-id="7068765655-4">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="7068765655-5">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7068765655-5">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·544d2c48891d7b2270da0d4e2cd664e5eff82235a6a7bfccb5904abeff09d51b·...·]-4">}</span><span·class="p">.</span><span·class="w">
160 </span><span·class="p"·data-group-id="2576890578-7">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="2576890578-8">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2576890578-8">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·7e111ec81cb3e0b58699406491f2d170a42a7d776d3626507c0f43f187ad6175·...·]-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="7068765655-7">{</span><span·class="ss">move</span><span·class="p">,</span><span·class="p"·data-group-id="7068765655-8">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7068765655-8">}</span><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·2a2b4454ebb93708bc37ae5dead1a751129962fcea0a22883b9a9f3c15366769·...·]-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="7076725015-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="7076725015-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="7076725015-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="3974270656-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="3974270656-1">)</span><span·class="w">·</span><span·class="p"·data-group-id="3974270656-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="7076725015-2">}</span></code></pre><p>The·implementation·for·an·instruction·largely·follows·the·C·syntax,194 </span><span·class="p"·data-group-id="3974270656-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="4502042072-1">(</span><span·class="ss">move_cx</span><span·class="p"·data-group-id="4502042072-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="7202659229-1">(</span><span·class="ss">move_cx</span><span·class="p"·data-group-id="7202659229-1">)</span><span·class="p">:</span><span·class="w">
212 </span><span·class="p"·data-group-id="4502042072-2">{</span><span·class="w">212 </span><span·class="p"·data-group-id="7202659229-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="4502042072-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="4502042072-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="4502042072-4">]</span><span·class="p"·data-group-id="4502042072-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="7202659229-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="7202659229-4">[</span><span·class="mi">2</span><span·class="p"·data-group-id="7202659229-4">]</span><span·class="p"·data-group-id="7202659229-3">)</span><span·class="p">;</span><span·class="w">
214 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="4502042072-5">(</span><span·class="n">BeamExtraData</span><span·class="p"·data-group-id="4502042072-6">(</span><span·class="n">I</span><span·class="p"·data-group-id="4502042072-7">[</span><span·class="mi">0</span><span·class="p"·data-group-id="4502042072-7[·...·truncated·by·diffoscope;·len:·331,·SHA:·9ecba2858e99bc34949c8714fbd4f1b3ceac9a3364a41239b8fbf2c912b88538·...·]-8">]</span><span·class="p">;</span><span·class="w">214 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="7202659229-5">(</span><span·class="n">BeamExtraData</span><span·class="p"·data-group-id="7202659229-6">(</span><span·class="n">I</span><span·class="p"·data-group-id="7202659229-7">[</span><span·class="mi">0</span><span·class="p"·data-group-id="7202659229-7[·...·truncated·by·diffoscope;·len:·331,·SHA:·470d1cd41ac2e5ae2176ed231b8944f2c205bb623f17eb189bd7df3ccd0493ac·...·]-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="4502042072-9">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="4502042072-10">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="4502042072-10">)</span><span·class="p"·data-group-id="4502042072-9">)</span><span·class="p">;</span><span·class="w">216 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="7202659229-9">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="7202659229-10">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="7202659229-10">)</span><span·class="p"·data-group-id="7202659229-9">)</span><span·class="p">;</span><span·class="w">
217 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="4502042072-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="4502042072-11">)</span><span·class="p">;</span><span·class="w">217 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="7202659229-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="7202659229-11">)</span><span·class="p">;</span><span·class="w">
218 </span><span·class="p"·data-group-id="4502042072-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="7202659229-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="1818646215-1">(</span><span·class="ss">move_xx</span><span·class="p"·data-group-id="1818646215-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="8670922796-1">(</span><span·class="ss">move_xx</span><span·class="p"·data-group-id="8670922796-1">)</span><span·class="p">:</span><span·class="w">
233 </span><span·class="p"·data-group-id="1818646215-2">{</span><span·class="w">233 </span><span·class="p"·data-group-id="8670922796-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="1818646215-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="1818646215-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="1818646215-4">]</span><span·class="p"·data-group-id="1818646215-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="8670922796-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="8670922796-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8670922796-4">]</span><span·class="p"·data-group-id="8670922796-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="1818646215-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="1818646215-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="1818646215-6">]</span><span·class="p"·data-group-id="1818646215-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="8670922796-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="8670922796-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="8670922796-6">]</span><span·class="p"·data-group-id="8670922796-5">)</span><span·class="p">;</span><span·class="w">
236 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="1818646215-7">(</span><span·class="p"·data-group-id="1818646215-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="1818646215-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·174150b7ed2a52a188fd3efa019e36d0089e64370a94ec61ec0ce3db8c0a3de9·...·]-9">)</span><span·class="p">;</span><span·class="w">236 ··</span><span·class="nf">xb</span><span·class="p"·data-group-id="8670922796-7">(</span><span·class="p"·data-group-id="8670922796-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="8670922796-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·cd3bdb14e029c9e11f1f366a7303df4d08e1a02809ec28f46cb7c20c78b2f6dd·...·]-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="1818646215-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="1818646215-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="1818646215-11">)</span><span·class="p"·data-group-id="1818646215-10">)</span><span·class="p">;</span><span·class="w">238 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="8670922796-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="8670922796-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="8670922796-11">)</span><span·class="p"·data-group-id="8670922796-10">)</span><span·class="p">;</span><span·class="w">
239 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="1818646215-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="1818646215-12">)</span><span·class="p">;</span><span·class="w">239 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="8670922796-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="8670922796-12">)</span><span·class="p">;</span><span·class="w">
240 </span><span·class="p"·data-group-id="1818646215-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="8670922796-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="1154444001-1">(</span><span·class="ss">move_xy</span><span·class="p"·data-group-id="1154444001-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="5774278698-1">(</span><span·class="ss">move_xy</span><span·class="p"·data-group-id="5774278698-1">)</span><span·class="p">:</span><span·class="w">
250 </span><span·class="p"·data-group-id="1154444001-2">{</span><span·class="w">250 </span><span·class="p"·data-group-id="5774278698-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="1154444001-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="1154444001-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="1154444001-4">]</span><span·class="p"·data-group-id="1154444001-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="5774278698-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="5774278698-4">[</span><span·class="mi">0</span><span·class="p"·data-group-id="5774278698-4">]</span><span·class="p"·data-group-id="5774278698-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="1154444001-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="1154444001-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="1154444001-6">]</span><span·class="p"·data-group-id="1154444001-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="5774278698-5">(</span><span·class="n">I</span><span·class="p"·data-group-id="5774278698-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="5774278698-6">]</span><span·class="p"·data-group-id="5774278698-5">)</span><span·class="p">;</span><span·class="w">
253 ··</span><span·class="nf">yb</span><span·class="p"·data-group-id="1154444001-7">(</span><span·class="p"·data-group-id="1154444001-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="1154444001-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·ab04c46b0f8329f35c13eaa09ce9ac437dc08455349736f337f64ea3e6814cb8·...·]-9">)</span><span·class="p">;</span><span·class="w">253 ··</span><span·class="nf">yb</span><span·class="p"·data-group-id="5774278698-7">(</span><span·class="p"·data-group-id="5774278698-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="5774278698-8">)</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·325,·SHA:·06aaf0318b0d52c0c767ee787b694d5d4701d3285945669d734180536db3f569·...·]-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="1154444001-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="1154444001-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="1154444001-11">)</span><span·class="p"·data-group-id="1154444001-10">)</span><span·class="p">;</span><span·class="w">255 ··</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="5774278698-10">(</span><span·class="n">VALID_INSTR</span><span·class="p"·data-group-id="5774278698-11">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="5774278698-11">)</span><span·class="p"·data-group-id="5774278698-10">)</span><span·class="p">;</span><span·class="w">
256 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="1154444001-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="1154444001-12">)</span><span·class="p">;</span><span·class="w">256 ··</span><span·class="n">GotoPF</span><span·class="p"·data-group-id="5774278698-12">(</span><span·class="ss">next_pf</span><span·class="p"·data-group-id="5774278698-12">)</span><span·class="p">;</span><span·class="w">
257 </span><span·class="p"·data-group-id="1154444001-2">}</span></code></pre><h3·id="transformation-rules"·class="section-heading">257 </span><span·class="p"·data-group-id="5774278698-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="4091949400-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:·b65f1be7ab3b66895c5d91630346f0a549c0a54d9c471aa8d8ce7e3195c60c93·...·]-2">{</span><span·class="w">277 </span><span·class="nf">move2</span><span·class="p"·data-group-id="9056648676-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:·39f68da947070b214bb4f26ebf6dd699961ff54a969fe3273dec860c55e562b6·...·]-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="4091949400-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="9056648676-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.3/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="3431345428-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:·7c506c7c77587942a53122310ceb8a833f3b16905d0c72097b3470d817529d72·...·]-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="1410266247-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:·b535d9c63e0d2acfc496d5150b9c29183835bdbf1ad8184c60ac6277aa9b5dca·...·]-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="3431345428-3">(</span><span·class="nf">getArgRef</span><span·class="p"·data-group-id="3431345428-4">(</span><span·class="n">Src</span><span·class="p"·data-group-id="3431345428-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">imm<[·...·truncated·by·diffoscope;·len:·327,·SHA:·762c97e144a7d07f8974166682a75aa0f728aa7e0e4d925702d2016569dccdf3·...·]-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="1410266247-3">(</span><span·class="nf">getArgRef</span><span·class="p"·data-group-id="1410266247-4">(</span><span·class="n">Src</span><span·class="p"·data-group-id="1410266247-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">imm<[·...·truncated·by·diffoscope;·len:·327,·SHA:·de740e7311406961cf51ac9188f787ba511d8e641bee2e884269caa1d85508d9·...·]-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="3431345428-6">(</span><span·class="ss">labels</span><span·class="p"·data-group-id="3431345428-7">[</span><span·class="n">Fail</span><span·class="p">.</span><span·class="nf">getLabel</span><span·class="p"·data-group-id="3431345428-8">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·132,·SHA:·e7a3264f898f30553a3834e1fbd0d2056fc28fcd6f52efb06bbe08a1e66cecf9·...·]-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="1410266247-6">(</span><span·class="ss">labels</span><span·class="p"·data-group-id="1410266247-7">[</span><span·class="n">Fail</span><span·class="p">.</span><span·class="nf">getLabel</span><span·class="p"·data-group-id="1410266247-8">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·132,·SHA:·da258e194dacd29821a72d08d8222852a0b7b07d8a23d9ed107f3762f5ee5d87·...·]-6">)</span><span·class="p">;</span><span·class="w">
155 </span><span·class="p"·data-group-id="3431345428-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="1410266247-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="5229843486-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:·156,·SHA:·c2a6a532098540527d33c1fddd8516b0363cbd9b26486a241b22e7be944d733f·...·]6-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="6096113576-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:·156,·SHA:·ab3987a0aa3dac47cc914111f8b8bbc052675dd25ddb42090317c96209dfd136·...·]6-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="1717536634-1">(</span><span·class="p"·data-group-id="1717536634-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="7066523068-1">(</span><span·class="p"·data-group-id="7066523068-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="1717536634-2">(</span><span·class="n">FCALLS</span><span·class="p"·data-group-id="1717536634-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="7066523068-2">(</span><span·class="n">FCALLS</span><span·class="p"·data-group-id="7066523068-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="1717536634-3">(</span><span·class="nf">resolve_fragment</span><span·class="p"·data-group-id="1717536634-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="1717536634-5"[·...·truncated·by·diffoscope;·len:·156,·SHA:·db3610006a0b3e03c9ed8af8fd322f9b6394560107594c7159a2d6248c8a7da4·...·]-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="7066523068-3">(</span><span·class="nf">resolve_fragment</span><span·class="p"·data-group-id="7066523068-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="7066523068-5"[·...·truncated·by·diffoscope;·len:·156,·SHA:·03c7b3a1d40b6bd93a5eaf544db947615d9f5413cc61769a0b41f86981f9996e·...·]-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="1717536634-6">(</span><span·class="p"·data-group-id="1717536634-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="7066523068-6">(</span><span·class="p"·data-group-id="7066523068-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="6002847931-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="6002847931-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="9063884479-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="9063884479-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="6002847931-2">(</span><span·class="p"·data-group-id="6002847931-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="9063884479-2">(</span><span·class="p"·data-group-id="9063884479-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="6002847931-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="6002847931-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="9063884479-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="9063884479-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="6002847931-4">(</span><span·class="n">ARG2</span><span·class="p"·data-group-id="6002847931-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="9063884479-4">(</span><span·class="n">ARG2</span><span·class="p"·data-group-id="9063884479-4">)</span><span·class="p">;</span><span·class="w">
252 </span><span·class="nf">make_move_patch</span><span·class="p"·data-group-id="6002847931-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="6002847931-6">[</span><span·class="n">Fun</span><span·class="p">.</span><span·class="nf">getValue[·...·truncated·by·diffoscope;·len:·262,·SHA:·d334b83a44c6e9c31d876ba377f0b6ae0c256505fc7c186d520f58fa216890df·...·]-5">)</span><span·class="p">;</span><span·class="w">252 </span><span·class="nf">make_move_patch</span><span·class="p"·data-group-id="9063884479-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="9063884479-6">[</span><span·class="n">Fun</span><span·class="p">.</span><span·class="nf">getValue[·...·truncated·by·diffoscope;·len:·262,·SHA:·5d0aa4bb921df1da1ff1419ca6ab8bbf0e435a27701c53c4abb97d479f8e3af5·...·]-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="6002847931-8">(</span><span·class="ss">new_fun</span><span·class="p"·data-group-id="6002847931-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="9063884479-8">(</span><span·class="ss">new_fun</span><span·class="p"·data-group-id="9063884479-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="6002847931-9">(</span><span·class="p"·data-group-id="6002847931-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="9063884479-9">(</span><span·class="p"·data-group-id="9063884479-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="6002847931-10">(</span><span·class="nf">getXRef</span><span·class="p"·data-group-id="6002847931-11">(</span><span·class="mi">0</span><span·class="p"·data-group-id="6002847931-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RET</[·...·truncated·by·diffoscope;·len:·46,·SHA:·91abe31d6b58b76c2032097a59ba3aa9acb9d192d5ae92ee51d4d0ccc334ab05·...·]-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="9063884479-10">(</span><span·class="nf">getXRef</span><span·class="p"·data-group-id="9063884479-11">(</span><span·class="mi">0</span><span·class="p"·data-group-id="9063884479-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RET</[·...·truncated·by·diffoscope;·len:·46,·SHA:·386bc0adc0610bc3e5aea4ca8384d99696240a853c8d512ba5b0165f507dd4be·...·]-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="8897853131-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="8897853131-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="6949692563-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="6949692563-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="8703748119-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:·5cdbd9439097d254ea09340dd4f5ecd23af8ae8dc4f2a623c2e73b4f1c5bfc76·...·]-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="2244260628-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:·d1c08f9539917519a4948f58e11d26f0d132404c8ba7f335ca757faf7e10e738·...·]-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="8703748119-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="8703748119-3">)</span><span·class="p">;</span><span·class="w">300 ····</span><span·class="nf">erts_unseal_module</span><span·class="p"·data-group-id="2244260628-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="2244260628-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="8703748119-4">[</span><span·class="ss">i</span><span·class="p"·data-group-id="8703748119-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="2244260628-4">[</span><span·class="ss">i</span><span·class="p"·data-group-id="2244260628-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="8703748119-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="8703748119-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="2244260628-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="2244260628-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="8703748119-6">(</span><span·class="n">ErtsCodeInfo</span><span·class="o">*</span><span·class="p"·data-group-id="8703748119-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="2244260628-6">(</span><span·class="n">ErtsCodeInfo</span><span·class="o">*</span><span·class="p"·data-group-id="2244260628-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="8703748119-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="8703748119-7">)</span><span·class="p">;</span><span·class="w">304 ····</span><span·class="nf">uninstall_breakpoint</span><span·class="p"·data-group-id="2244260628-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="2244260628-7">)</span><span·class="p">;</span><span·class="w">
305 ····</span><span·class="nf">consolidate_bp_data</span><span·class="p"·data-group-id="8703748119-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="8703748119-8">)</span><span·class="p">;</span><span·class="w">305 ····</span><span·class="nf">consolidate_bp_data</span><span·class="p"·data-group-id="2244260628-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="2244260628-8">)</span><span·class="p">;</span><span·class="w">
306 ····</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="8703748119-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="8703748119-9">)</span><span·class="p">;</span><span·class="w">306 ····</span><span·class="n">ASSERT</span><span·class="p"·data-group-id="2244260628-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="2244260628-9">)</span><span·class="p">;</span><span·class="w">
  
307 ····</span><span·class="nf">erts_seal_module</span><span·class="p"·data-group-id="8703748119-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="8703748119-10">)</span><span·class="p">;</span><span·class="w">307 ····</span><span·class="nf">erts_seal_module</span><span·class="p"·data-group-id="2244260628-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="2244260628-10">)</span><span·class="p">;</span><span·class="w">
308 </span><span·class="p"·data-group-id="8703748119-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="2244260628-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.3/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="0731625702-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="0731625702-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="0731625702-2">(</span><span·class="p"·data-group-id="0731625702-3">[</span><span·class="n">LoaderState</span><span·class="p"[·...·truncated·by·diffoscope;·len:·199,·SHA:·7301b351865b1fd536ded34fc26d89995e3e570de4f716d8d3ce23fc0cc4a4e5·...·]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=[·...·truncated·by·diffoscope;·len:·306,·SHA:·7b002dfd147a6c80c069ae43ef4c94d4c95b779efd8c800d557ced557f7f6d73·...·]
 171 ··</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">finish_loading</span><span·class="p"·data-group-id="2556591582-2">(</span><span·class="p"·data-group-id="2556591582-3">[</span><span·class="n">LoaderState</span><span·class="p"·data-group-id="2556591582-3">]</span><span·class="p"·data-group-id="2556591582-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.3/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="1512105346-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="1512105346-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">·</span[·...·truncated·by·diffoscope;·len:·425,·SHA:·eb66779810d646ebca8ac1cfefa2c7812e952c3151047774cfc36174a571a7f3·...·]-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="1173940291-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="1173940291-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">·</span[·...·truncated·by·diffoscope;·len:·425,·SHA:·516c85010484f018a892f1bddcb8d5b11f69f63a4f5c4a62e449e262b4282308·...·]-2">)</span><span·class="w">
409 </span><span·class="p"·data-group-id="1512105346-3">(</span><span·class="mi">2</span><span·class="p"·data-group-id="1512105346-3">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="1512105346-4">(</span><span·class="mi">0</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·93,·SHA:·ea65f03283160f8d9d3c0f7212bf7d3a4358108c0c14c5158098deff47cdab75·...·]-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">409 </span><span·class="p"·data-group-id="1173940291-3">(</span><span·class="mi">2</span><span·class="p"·data-group-id="1173940291-3">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="1173940291-4">(</span><span·class="mi">0</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·93,·SHA:·dcc4fb94a8a7d06db9f02be5cffd6fa729b3c720850d40877aea55a141e9b49e·...·]-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="1512105346-6">(</span><span·class="mi">3</span><span·class="p"·data-group-id="1512105346-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="151[·...·truncated·by·diffoscope;·len:·7,·SHA:·3adc953201b7aa78cf68d183f9d49260b9b0f4063614454773a5d68ec12b6e1c·...·]-5">]</span><span·class="w">410 </span><span·class="p"·data-group-id="1173940291-6">(</span><span·class="mi">3</span><span·class="p"·data-group-id="1173940291-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="117[·...·truncated·by·diffoscope;·len:·7,·SHA:·eb6fe2282e48686ffe83e4ff0cf153c545121e0d1c31e0f8d71ad6190d3c22e5·...·]-5">]</span><span·class="w">
411 </span><span·class="p"·data-group-id="1512105346-7">(</span><span·class="mi">4</span><span·class="p"·data-group-id="1512105346-7">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="1512105346-8">(</span><span·class="mi">1</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·4fef079528b4d87412bb835c83ced47a9930edc60c48609dbf4cbce821aace06·...·]-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="1173940291-7">(</span><span·class="mi">4</span><span·class="p"·data-group-id="1173940291-7">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="1173940291-8">(</span><span·class="mi">1</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·dca005190b83cafa3e682cfaac21247d3745c364b6183f81670b524310f29934·...·]-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="1512105346-9">(</span><span·class="mi">5</span><span·class="p"·data-group-id="1512105346-9">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="1512105346-10">(</span><span·class="mi">2</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·256,·SHA:·fdeb04684d07062b7927a57df092018c565f6b29efdf1f03df0c242cde9db3bd·...·]-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="1173940291-9">(</span><span·class="mi">5</span><span·class="p"·data-group-id="1173940291-9">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="1173940291-10">(</span><span·class="mi">2</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·256,·SHA:·d05da5fb7cef4af4961fd72538822fe4cd670a57261435e003b89ece4ebf4b5e·...·]-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="1512105346-13">(</span><span·class="mi">6</span><span·class="p"·data-group-id="1512105346-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><spa[·...·truncated·by·diffoscope;·len:·560,·SHA:·d8df9db84a9f7c9c7131911bd1319f83904bd06a6bd529737f90734a6fd75b89·...·]-11">}</span><span·class="w">413 </span><span·class="p"·data-group-id="1173940291-13">(</span><span·class="mi">6</span><span·class="p"·data-group-id="1173940291-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><spa[·...·truncated·by·diffoscope;·len:·560,·SHA:·36978b3e58f6f4e646f211221c5746bbd822b6c0d05faf0a2dee14a9a5baca73·...·]-11">}</span><span·class="w">
414 </span><span·class="p"·data-group-id="1512105346-14">(</span><span·class="mi">7</span><span·class="p"·data-group-id="1512105346-14">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="1512105346-15">(</span><span·class="mi">3</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·91d6ad30e1dfff2f9f4e7eb5cedcdf0938fe322e0020356520aa00daca7a80ae·...·]-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="1173940291-14">(</span><span·class="mi">7</span><span·class="p"·data-group-id="1173940291-14">)</span><span·class="w">··</span><span·class="nf">y</span><span·class="p"·data-group-id="1173940291-15">(</span><span·class="mi">3</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·be2a7274827a628ac9ace9299d7f02c21a59c174d0f64a3d7d61dc47ec9c9f6f·...·]-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.3/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.3/doc/html/erl_ddll.html"><code·class="inline">erl_ddll</code></a>·module·(the·<a·href="../../../lib/kernel-10.2.3/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.3/doc/html/erl_ddll.html"><code·class="inline">erl_ddll</code></a>·module·(the·<a·href="../../../lib/kernel-10.2.3/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="8279607873-1">(</span><span·class="ss">pg_sync</span><span·class="p"·data-group-id="8279607873-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="0798395537-1">(</span><span·class="ss">pg_sync</span><span·class="p"·data-group-id="0798395537-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="8279607873-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="8279607873-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="0798395537-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="0798395537-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="8279607873-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="8279607873-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="0798395537-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="0798395537-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="8279607873-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="8279607873-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="0798395537-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="0798395537-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="8279607873-5">(</span><span·class="p"·data-group-id="8279607873-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:·9102329073451e65a299cece6d30faf04fd3d5cde17019a79f730eab073cee41·...·]-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="0798395537-5">(</span><span·class="p"·data-group-id="0798395537-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:·603d8d4a60852c82f95cc3cb3104fa6400ac47e21f0598df2a9b1db44e7cda63·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
378 </span><span·class="nf">connect</span><span·class="p"·data-group-id="8279607873-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="8279607873-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="0798395537-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="0798395537-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="8279607873-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="8279607873-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="0798395537-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="0798395537-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="8279607873-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="8279607873-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="0798395537-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="0798395537-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="8279607873-10">(</span><span·class="p"·data-group-id="8279607873-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="8279607873-11">}</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·035f61a890cdd49fac3cc53c53965097c991bc8a3a71ddd40db3b3547d26ad35·...·]-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="0798395537-10">(</span><span·class="p"·data-group-id="0798395537-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="0798395537-11">}</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·383cc3e2da6ff9ad8de3ad3975bfb5ecb13689418c56a34d36265aa22aaf593c·...·]-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="8279607873-12">(</span><span·class="p"·data-group-id="8279607873-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="8279607873-13">}</[·...·truncated·by·diffoscope;·len:·202,·SHA:·841bea1898f62d80331b10e0fdde4a93b557824b96b4b604fb27dbf5ec9adf72·...·]-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="0798395537-12">(</span><span·class="p"·data-group-id="0798395537-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="0798395537-13">}</[·...·truncated·by·diffoscope;·len:·202,·SHA:·07b3ecf7ac5efc83b047c347c15c8f3559e05535b3f2578984a045f1833e1eee·...·]-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="8279607873-15">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="8279607873-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:·f80503394ce8a20e4489dc4cc725c4c8cc5669818094fb8703658a65e9a6422d·...·]-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="0798395537-15">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="0798395537-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:·24c9f18d98bd8bdfe295d4eb831439b27410395f0166a091857d626fd1a2d4ad·...·]-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="8279607873-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="8279607873-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="0798395537-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="0798395537-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="8279607873-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8279607873-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="0798395537-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0798395537-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="8279607873-19">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="8279607873-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:·e025ce4e8bdcf3acbefe69902eb92c1d045d42817f019f78161dabdabd3e7c83·...·]-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="0798395537-19">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="0798395537-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:·9091b0387b0a39d13925553dfd652030bcf5d6b7087026c3bdf435ec60557c71·...·]-19">)</span><span·class="p">,</span><span·class="w">
391 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="8279607873-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="8279607873-21">)</span><span·class="p">,</span><span·class="w">391 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="0798395537-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="0798395537-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="8279607873-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="8279607873-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="0798395537-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="0798395537-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="8279607873-23">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="8279607873-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:·f6b537eadb550f9292f27e23883f58a7cf579d7cced22579c5a404ba9c364e3a·...·]-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="0798395537-23">(</span><span·class="nf">port_control</span><span·class="p"·data-group-id="0798395537-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:·1e13ba45d8be18f2fdc10949fbc968a1e9d37f75c3fec59f5d97d00d0e0dbdd5·...·]-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.3/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.3/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.3/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.3/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.3/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.3/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="3883796053-1">(</span><span·class="ss">pg_async</span><span·class="p"·data-group-id="3883796053-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="6158484456-1">(</span><span·class="ss">pg_async</span><span·class="p"·data-group-id="6158484456-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="3883796053-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="3883796053-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="6158484456-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="6158484456-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="3883796053-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="3883796053-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="6158484456-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="6158484456-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="3883796053-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="3883796053-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="6158484456-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="6158484456-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="3883796053-5">(</span><span·class="p"·data-group-id="3883796053-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:·89b488f6fb322661c0ced4947eead2bb68c17ee66da4a717a08047c8580f26d9·...·]-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="6158484456-5">(</span><span·class="p"·data-group-id="6158484456-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:·ded25f3e3117ca8a783c24b74f6e2a9bb67df026f9902845aa90b0d1510dcfc2·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
550 </span><span·class="nf">connect</span><span·class="p"·data-group-id="3883796053-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="3883796053-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="6158484456-7">(</span><span·class="n">ConnectStr</span><span·class="p"·data-group-id="6158484456-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="3883796053-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="3883796053-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="6158484456-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="6158484456-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="3883796053-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="3883796053-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="6158484456-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="6158484456-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="3883796053-10">(</span><span·class="p"·data-group-id="3883796053-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="3883796053-11">}</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·7192f1ea10deb2798e6e016d1af5a592b5aa0a2e380dde3cbff4f5d3ec47b907·...·]-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="6158484456-10">(</span><span·class="p"·data-group-id="6158484456-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="6158484456-11">}</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·57ec1660f00126ed453fad5853118b0f9f87acdc4aff3e5e76e1dfb660ff2fa1·...·]-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="3883796053-12">(</span><span·class="p"·data-group-id="3883796053-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="3883796053-13">}</[·...·truncated·by·diffoscope;·len:·232,·SHA:·96f8a34d80149e395affc17af5966c56454af66048af57e95549b84e63c2863a·...·]-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="6158484456-12">(</span><span·class="p"·data-group-id="6158484456-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="6158484456-13">}</[·...·truncated·by·diffoscope;·len:·232,·SHA:·246dff7af2d09b366760e88449d591dc3e74dbaeb912e19aa8263482343096a5·...·]-12">)</span><span·class="p">,</span><span·class="w">
557 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="3883796053-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:·22,·SHA:·64a6d9ca693b14d8fc8e0b11c5644030932d7de2966ceed0d300dd384d8d8aaf·...·]-15">)</span><span·class="p">,</span><span·class="w">557 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="6158484456-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:·22,·SHA:·f4d1d70d3014309800c82ceacc3ee7e75f75b11885302fcf19f6e51ca1c4b786·...·]-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="3883796053-16">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3883796053-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="6158484456-16">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6158484456-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="3883796053-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="3883796053-17">}</span><span·class="p">;</span><span·class="w">560 ············</span><span·class="p"·data-group-id="6158484456-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="6158484456-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="3883796053-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3883796053-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="6158484456-18">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6158484456-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="3883796053-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:·27,·SHA:·3afa387146ec8b029b6453c8b25a536cd15505699e4371f52b9582a8c93bd3a4·...·]-19">)</span><span·class="p">,</span><span·class="w">565 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="6158484456-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:·27,·SHA:·c6d5e28594a0a935c4ba7d1c20469528df0689a016f1adf6862062739969c58a·...·]-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="3883796053-20">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3883796053-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="6158484456-20">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6158484456-20">)</span><span·class="p">,</span><span·class="w">
567 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="3883796053-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3883796053-21">)</span><span·class="p">,</span><span·class="w">567 ····</span><span·class="nf">port_close</span><span·class="p"·data-group-id="6158484456-21">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6158484456-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="3883796053-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="3883796053-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="6158484456-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="6158484456-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="3883796053-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:·16,·SHA:·3e917a77690597bed8897e45b07d5a341ad39307536a522c02c93b0559e3693f·...·]-23">)</span><span·class="p">,</span><span·class="w">570 ····</span><span·class="nf">port_control</span><span·class="p"·data-group-id="6158484456-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:·16,·SHA:·65821967aba60bae7970d7e19f80953cddb127c8f3c6082ae5c04b7822f4122b·...·]-23">)</span><span·class="p">,</span><span·class="w">
571 ····</span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="3883796053-24">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3883796053-24">)</span><span·class="p">.</span><span·class="w">571 ····</span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="6158484456-24">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6158484456-24">)</span><span·class="p">.</span><span·class="w">
  
572 </span><span·class="nf">return_port_data</span><span·class="p"·data-group-id="3883796053-25">(</span><span·class="n">Port</span><span·class="p"·data-group-id="3883796053-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="6158484456-25">(</span><span·class="n">Port</span><span·class="p"·data-group-id="6158484456-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="3883796053-26">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3883796053-27">{</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:·080a10ed8fe66c221f527ac39640f1bd086f1ae25133d0f63e67b022380ec579·...·]-26">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">574 ········</span><span·class="p"·data-group-id="6158484456-26">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6158484456-27">{</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:·d14df4855c9cdccb50e1a5023c9146762f9a0c10b5afcc968612f5a9dbebbde6·...·]-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="3883796053-28">(</span><span·class="n">Data</span><span·class="p"·data-group-id="3883796053-28">)</span><span·class="w">575 ············</span><span·class="nf">binary_to_term</span><span·class="p"·data-group-id="6158484456-28">(</span><span·class="n">Data</span><span·class="p"·data-group-id="6158484456-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.3/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.3/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.3/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.3/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="9320482855-1">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="9320482855-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="9601618078-1">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="9601618078-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="9320482855-2">(</span><span·class="p"·data-group-id="9320482855-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:·378,·SHA:·9e02eb3b6acabb0f8cf2733bfe8738769688711924febadeb1ff7ae37e76db85·...·]-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="9601618078-2">(</span><span·class="p"·data-group-id="9601618078-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:·378,·SHA:·bf4011921f6a86e57c310a7db38a2c328f233875fa0a1565dc73643982430ffb·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
687 </span><span·class="nf">load</span><span·class="p"·data-group-id="9320482855-4">(</span><span·class="p"·data-group-id="9320482855-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="9601618078-4">(</span><span·class="p"·data-group-id="9601618078-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="9320482855-5">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="9320482855-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="9601618078-5">(</span><span·class="ss">next_perm</span><span·class="p"·data-group-id="9601618078-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="9320482855-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="9320482855-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="9601618078-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="9601618078-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="9320482855-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="9320482855-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="9601618078-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="9601618078-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="9320482855-8">(</span><span·class="n">E</span><span·class="p"·data-group-id="9320482855-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="9601618078-8">(</span><span·class="n">E</span><span·class="p"·data-group-id="9601618078-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="9320482855-9">(</span><span·class="p"·data-group-id="9320482855-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="9320482855-10">}</span><span·[·...·truncated·by·diffoscope;·len:·191,·SHA:·d46d2ca68988ddedcefbce5be3419fc4cfb68deb683f0e4d91bf4ee16ac289c2·...·]-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="9601618078-9">(</span><span·class="p"·data-group-id="9601618078-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="9601618078-10">}</span><span·[·...·truncated·by·diffoscope;·len:·191,·SHA:·1f11ff464c239a226e095e0c1a3af5d0f6f6ea2cee1bcdd1caa4e30c2ad656ef·...·]-9">)</span><span·class="p">,</span><span·class="w">
696 ············</span><span·class="nf">register</span><span·class="p"·data-group-id="9320482855-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="9320482855-12">)</span><span·class="p">;</span><span·class="w">696 ············</span><span·class="nf">register</span><span·class="p"·data-group-id="9601618078-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="9601618078-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="9320482855-13">(</span><span·class="n">L</span><span·class="p"·data-group-id="9320482855-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="9601618078-13">(</span><span·class="n">L</span><span·class="p"·data-group-id="9601618078-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
701 ····</span><span·class="p"·data-group-id="9320482855-14">[</span><span·class="p"·data-group-id="9320482855-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">nat[·...·truncated·by·diffoscope;·len:·309,·SHA:·d4cc8a001e9e46351fef2f759edbd73456a6929ad9789153fc05d0057bfb72e6·...·]-14">]</span><span·class="p">.</span><span·class="w">701 ····</span><span·class="p"·data-group-id="9601618078-14">[</span><span·class="p"·data-group-id="9601618078-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">nat[·...·truncated·by·diffoscope;·len:·309,·SHA:·5017d406e33b3b3af61d2835dad4698dae344523c6132e434e373fb729ecce0d·...·]-14">]</span><span·class="p">.</span><span·class="w">
  
702 </span><span·class="nf">next_perm</span><span·class="p"·data-group-id="9320482855-16">(</span><span·class="n">L</span><span·class="p"·data-group-id="9320482855-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="9601618078-16">(</span><span·class="n">L</span><span·class="p"·data-group-id="9601618078-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="9320482855-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="9320482855-17">)</span><span·class="p">.</span><span·class="w">703 ····</span><span·class="nf">next_perm</span><span·class="p"·data-group-id="9601618078-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="9601618078-17">)</span><span·class="p">.</span><span·class="w">
  
704 </span><span·class="nf">prev_perm</span><span·class="p"·data-group-id="9320482855-18">(</span><span·class="n">L</span><span·class="p"·data-group-id="9320482855-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="9601618078-18">(</span><span·class="n">L</span><span·class="p"·data-group-id="9601618078-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="9320482855-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="9320482855-19">)</span><span·class="p">.</span><span·class="w">705 ····</span><span·class="nf">next_perm</span><span·class="p"·data-group-id="9601618078-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="9601618078-19">)</span><span·class="p">.</span><span·class="w">
Max diff block lines reached; 8410/58065 bytes (14.48%) of diff not shown.
33.6 KB
./usr/share/doc/erlang-doc/html/erts-15.2.3/doc/html/erl_cmd.html
    
Offset 149, 26 lines modifiedOffset 149, 26 lines modified
149 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>.·It149 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
150 also·stores·any·remaining·flags,·the·<em>user·flags</em>.·The·latter·can·be·retrieved150 also·stores·any·remaining·flags,·the·<em>user·flags</em>.·The·latter·can·be·retrieved
151 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,·see151 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
152 the·description·below.</p></li><li><p>Plain·arguments·are·not·interpreted·in·any·way.·They·are·also·stored·by·the152 the·description·below.</p></li><li><p>Plain·arguments·are·not·interpreted·in·any·way.·They·are·also·stored·by·the
153 <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>.153 <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 Plain·arguments·can·occur·before·the·first·flag,·or·after·a·<code·class="inline">--</code>·flag.·Also,154 Plain·arguments·can·occur·before·the·first·flag,·or·after·a·<code·class="inline">--</code>·flag.·Also,
155 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">155 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 (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="7526662401-1">(</span><span·class="ss">sname</span><span·class="p"·data-group-id="7526662401-1">)</span><span·class="p">.</span><span·class="w">156 (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="2874453777-1">(</span><span·class="ss">sname</span><span·class="p"·data-group-id="2874453777-1">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="7526662401-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7526662401-3">[</span><span·class="p"·data-group-id="7526662401-4">[</span><span·class="s">&quot;arnie&quot;</span><span·class="p"·data-group-id="7526662[·...·truncated·by·diffoscope;·len:·109,·SHA:·ffbcb12d7b2badd6268b10c82fb9b0e29e5e605fde9970558d659d4dd7bacc5b·...·]-2">}</span><span·class="gp·unselectable">157 </span><span·class="p"·data-group-id="2874453777-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2874453777-3">[</span><span·class="p"·data-group-id="2874453777-4">[</span><span·class="s">&quot;arnie&quot;</span><span·class="p"·data-group-id="2874453[·...·truncated·by·diffoscope;·len:·109,·SHA:·934323bc16b1c81ed19f925926949ce453cc835fd089519caa869fcd61eb0467·...·]-2">}</span><span·class="gp·unselectable">
158 (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="7526662401-5">(</span><span·class="p"·data-group-id="7526662401-5">)</span><span·class="p">.</span><span·class="w">158 (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="2874453777-5">(</span><span·class="p"·data-group-id="2874453777-5">)</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p"·data-group-id="7526662401-6">[</span><span·class="s">&quot;+bertie&quot;</span><span·class="p"·data-group-id="7526662401-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,159 </span><span·class="p"·data-group-id="2874453777-6">[</span><span·class="s">&quot;+bertie&quot;</span><span·class="p"·data-group-id="2874453777-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 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·is160 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
161 read·by·Kernel·and·causes·the·Erlang·runtime·system·to·become·distributed.161 read·by·Kernel·and·causes·the·Erlang·runtime·system·to·become·distributed.
162 Finally,·everything·after·<code·class="inline">-extra</code>·(that·is,·<code·class="inline">+bertie</code>)·is·considered·as·plain162 Finally,·everything·after·<code·class="inline">-extra</code>·(that·is,·<code·class="inline">+bertie</code>)·is·considered·as·plain
163 arguments.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-myflag·1</span><span·class="gp·unselectable">163 arguments.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="c1">%·erl·-myflag·1</span><span·class="gp·unselectable">
164 1&gt;·</span><span·class="nc">init</span><span·class="p">:</span><span·class="nf">get_argument</span><span·class="p"·data-group-id="1113509029-1">(</span><span·class="ss">myflag</span><span·class="p"·data-group-id="1113509029-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_argument</span><span·class="p"·data-group-id="2466661211-1">(</span><span·class="ss">myflag</span><span·class="p"·data-group-id="2466661211-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p"·data-group-id="1113509029-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1113509029-3">[</span><span·class="p"·data-group-id="1113509029-4">[</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="1113509029-[·...·truncated·by·diffoscope;·len:·105,·SHA:·67fee31f29f04ce6e3d0fd96971dc68a94658fd969d033d3de1e769fa9a15f4b·...·]-2">}</span><span·class="gp·unselectable">165 </span><span·class="p"·data-group-id="2466661211-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2466661211-3">[</span><span·class="p"·data-group-id="2466661211-4">[</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="2466661211-[·...·truncated·by·diffoscope;·len:·105,·SHA:·a53fdb557e626fe8a561c4c605c26d2382ef17a3a10b3b2cc3cccb30f29d137f·...·]-2">}</span><span·class="gp·unselectable">
166 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="1113509029-5">(</span><span·class="p"·data-group-id="1113509029-5">)</span><span·class="p">.</span><span·class="w">166 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="2466661211-5">(</span><span·class="p"·data-group-id="2466661211-5">)</span><span·class="p">.</span><span·class="w">
167 </span><span·class="p"·data-group-id="1113509029-6">[</span><span·class="p"·data-group-id="1113509029-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.·It167 </span><span·class="p"·data-group-id="2466661211-6">[</span><span·class="p"·data-group-id="2466661211-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
168 is·a·user-defined·flag,·presumably·used·by·some·user-defined·application.</p><h2·id="flags"·class="section-heading">168 is·a·user-defined·flag,·presumably·used·by·some·user-defined·application.</p><h2·id="flags"·class="section-heading">
169 ··<a·href="#flags"·class="hover-link">169 ··<a·href="#flags"·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">Flags</span>172 ··<span·class="text">Flags</span>
173 </h2>173 </h2>
174 <p>In·the·following·list,·init·flags·are·marked·&quot;(init·flag)&quot;.·Unless·otherwise174 <p>In·the·following·list,·init·flags·are·marked·&quot;(init·flag)&quot;.·Unless·otherwise
Offset 700, 15 lines modifiedOffset 700, 15 lines modified
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="#%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="#%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="#%2Bsbt">binding·schedulers·to·logical·processors</a>.·This·option·must·be·before706 <a·href="#%2Bsbt">binding·schedulers·to·logical·processors</a>.·This·option·must·be·before
707 <a·href="#%2Bsbt"><code·class="inline">+sbt</code></a>·on·the·command-line.</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="0752241235-1">(</span><span·class="p"·data-group-id="0752241235-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 <a·href="#%2Bsbt"><code·class="inline">+sbt</code></a>·on·the·command-line.</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="0425182861-1">(</span><span·class="p"·data-group-id="0425182861-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">
708 </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">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">
709 </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">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">
710 </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">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">
711 </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">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">
712 </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">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">
713 </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">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">
714 </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">714 </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 733, 30 lines modifiedOffset 733, 30 lines modified
733 node.</li><li><code·class="inline">&lt;LogicalIds&gt;&lt;ThreadIds&gt;&lt;CoreIds&gt;&lt;NodeIds&gt;&lt;ProcessorIds&gt;</code>,·that·is,·thread733 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
734 is·part·of·a·core·that·is·part·of·a·NUMA·node,·which·is·part·of·a734 is·part·of·a·core·that·is·part·of·a·NUMA·node,·which·is·part·of·a
735 processor.</li></ul><p>A·CPU·topology·can·consist·of·both·processor·external,·and·processor735 processor.</li></ul><p>A·CPU·topology·can·consist·of·both·processor·external,·and·processor
736 internal·NUMA·nodes·as·long·as·each·logical·processor·belongs·to·only·one736 internal·NUMA·nodes·as·long·as·each·logical·processor·belongs·to·only·one
737 NUMA·node.·If·<code·class="inline">&lt;ProcessorIds&gt;</code>·is·omitted,·its·default·position·is·before737 NUMA·node.·If·<code·class="inline">&lt;ProcessorIds&gt;</code>·is·omitted,·its·default·position·is·before
738 <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·a738 <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
739 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 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">
740 1&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="4759273590-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="4759273590-1">)</span><span·class="p">.</span><span·class="w">740 1&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="3370303521-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="3370303521-1">)</span><span·class="p">.</span><span·class="w">
741 </span><span·class="p"·data-group-id="4759273590-2">[</span><span·class="p"·data-group-id="4759273590-3">{</span><span·class="ss">processor</span><span·class="p">,</span><span·class="p"·data-group-id="4759273590-4">[</span><span·class="p"·data-group-id="4759273590-5">{</span><span·class="ss">c[·...·truncated·by·diffoscope;·len:·261,·SHA:·51dd0e0e45a86633c0901dac97df1d5653b87a16a927f024b24482688b185dd7·...·]-5">}</span><span·class="p">,</span><span·class="w">741 </span><span·class="p"·data-group-id="3370303521-2">[</span><span·class="p"·data-group-id="3370303521-3">{</span><span·class="ss">processor</span><span·class="p">,</span><span·class="p"·data-group-id="3370303521-4">[</span><span·class="p"·data-group-id="3370303521-5">{</span><span·class="ss">c[·...·truncated·by·diffoscope;·len:·261,·SHA:·55ab6244d70238d9870b2f99e6420489dd7053670bf0751154a06a939e989fa3·...·]-5">}</span><span·class="p">,</span><span·class="w">
742 ·············</span><span·class="p"·data-group-id="4759273590-7">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="4759273590-8">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4759273590-8">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·9057b289aca9519137c2b294b2c6c8bbc5eda5f8b25fee0a9cf2a818e87c9493·...·]-7">}</span><span·class="p">,</span><span·class="w">742 ·············</span><span·class="p"·data-group-id="3370303521-7">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="3370303521-8">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3370303521-8">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·54a2de408149464e2a4bc0a5246650a6a2ed271f4d685e44901599083cba1803·...·]-7">}</span><span·class="p">,</span><span·class="w">
743 ·············</span><span·class="p"·data-group-id="4759273590-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="4759273590-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="4759273590-10">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·2a960d98cd55bb67488bdf232853cf136d73e993a5cc4d59c2cee5e29ccc0d83·...·]-9">}</span><span·class="p">,</span><span·class="w">743 ·············</span><span·class="p"·data-group-id="3370303521-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="3370303521-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3370303521-10">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·4f67dec2d0fb39fe8de0b632e88540ada2cd43691ba9687b324b4114ab89d507·...·]-9">}</span><span·class="p">,</span><span·class="w">
744 ·············</span><span·class="p"·data-group-id="4759273590-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="4759273590-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="4759273590-12">}[·...·truncated·by·diffoscope;·len:·208,·SHA:·ce531e614169ca198636ba795836badb7b54cd961d1239286ba69045544683c3·...·]-2">]</span></code></pre><p>A·more·complicated·example·with·two·quad·core·processors,·each·processor·in744 ·············</span><span·class="p"·data-group-id="3370303521-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="3370303521-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="3370303521-12">}[·...·truncated·by·diffoscope;·len:·208,·SHA:·abb5e6f288c77c89d2dc066929bbddfac85a98136aeaed4ee0e6e14ba94b2250·...·]-2">]</span></code></pre><p>A·more·complicated·example·with·two·quad·core·processors,·each·processor·in
745 its·own·NUMA·node.·The·ordering·of·logical·processors·is·a·bit·weird.·This745 its·own·NUMA·node.·The·ordering·of·logical·processors·is·a·bit·weird.·This
746 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 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">
747 1&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="9016301372-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="9016301372-1">)</span><span·class="p">.</span><span·class="w">747 1&gt;·</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="8716205349-1">(</span><span·class="ss">cpu_topology</span><span·class="p"·data-group-id="8716205349-1">)</span><span·class="p">.</span><span·class="w">
748 </span><span·class="p"·data-group-id="9016301372-2">[</span><span·class="p"·data-group-id="9016301372-3">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="9016301372-4">[</span><span·class="p"·data-group-id="9016301372-5">{</span><span·class="ss">proces[·...·truncated·by·diffoscope;·len:·419,·SHA:·c366892c807f798c6be5dc93d90ccb1f3eac6bb8316850b0e5fc10f350bbdc08·...·]-7">}</span><span·class="p">,</span><span·class="w">748 </span><span·class="p"·data-group-id="8716205349-2">[</span><span·class="p"·data-group-id="8716205349-3">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="8716205349-4">[</span><span·class="p"·data-group-id="8716205349-5">{</span><span·class="ss">proces[·...·truncated·by·diffoscope;·len:·419,·SHA:·a3f726bd6c08a7a734ed4b05e75e76395d66f588332e76e6e1b28c41e22588e9·...·]-7">}</span><span·class="p">,</span><span·class="w">
749 ····················</span><span·class="p"·data-group-id="9016301372-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="9016301372-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9016301372-10">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·c890a76df8181ae92d77a89495387a81873fcd415e2fc321185b24c7bb86baf8·...·]-9">}</span><span·class="p">,</span><span·class="w">749 ····················</span><span·class="p"·data-group-id="8716205349-9">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="8716205349-10">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8716205349-10">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·cd5b318a8c9cd99fbba815f1335d82510d67368ca2a264203c360ebec6cbc40a·...·]-9">}</span><span·class="p">,</span><span·class="w">
750 ····················</span><span·class="p"·data-group-id="9016301372-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="9016301372-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="9016301372-12">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·7efe8fbcd8c90c361b84f9fdbbf5e14ede66b0636fc376e42c65cb2b21c6dc8b·...·]-11">}</span><span·class="p">,</span><span·class="w">750 ····················</span><span·class="p"·data-group-id="8716205349-11">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="8716205349-12">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="8716205349-12">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·f84c8dc56685518f6156c264b3e7fd90cd5a8efbc5c45dc9a41766ed671c2cc4·...·]-11">}</span><span·class="p">,</span><span·class="w">
751 ····················</span><span·class="p"·data-group-id="9016301372-13">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="9016301372-14">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="9016301372-14">}[·...·truncated·by·diffoscope;·len:·261,·SHA:·bdc89c6e39ed3de7e8f5113e35b5831684ee6393135aff231b524e270110121c·...·]-3">}</span><span·class="p">,</span><span·class="w">751 ····················</span><span·class="p"·data-group-id="8716205349-13">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="8716205349-14">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8716205349-14">}[·...·truncated·by·diffoscope;·len:·261,·SHA:·e9ce707449171a5cc71b84c369a42940de1f3f434a9c3dff1bfb2c774a8cad54·...·]-3">}</span><span·class="p">,</span><span·class="w">
752 ·</span><span·class="p"·data-group-id="9016301372-15">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="9016301372-16">[</span><span·class="p"·data-group-id="9016301372-17">{</span><span·class="ss">processor</span><span·class="p">,</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·373,·SHA:·c77b1621dabd1df9b4c8dcf2a760ad5d153be2a98b53d49b5841096f5b5aff5b·...·]-19">}</span><span·class="p">,</span><span·class="w">752 ·</span><span·class="p"·data-group-id="8716205349-15">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="8716205349-16">[</span><span·class="p"·data-group-id="8716205349-17">{</span><span·class="ss">processor</span><span·class="p">,</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·373,·SHA:·c3b76c2a848585a583f4b97913fbd9e7ab61657e51ac3d4801a62801e4be7392·...·]-19">}</span><span·class="p">,</span><span·class="w">
753 ····················</span><span·class="p"·data-group-id="9016301372-21">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="9016301372-22">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="9016301372-22">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·7efe8fbcd8c90c361b84f9fdbbf5e14ede66b0636fc376e42c65cb2b21c6dc8b·...·]-21">}</span><span·class="p">,</span><span·class="w">753 ····················</span><span·class="p"·data-group-id="8716205349-21">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="8716205349-22">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="8716205349-22">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·f84c8dc56685518f6156c264b3e7fd90cd5a8efbc5c45dc9a41766ed671c2cc4·...·]-21">}</span><span·class="p">,</span><span·class="w">
754 ····················</span><span·class="p"·data-group-id="9016301372-23">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="9016301372-24">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9016301372-24">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·7efe8fbcd8c90c361b84f9fdbbf5e14ede66b0636fc376e42c65cb2b21c6dc8b·...·]-23">}</span><span·class="p">,</span><span·class="w">754 ····················</span><span·class="p"·data-group-id="8716205349-23">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="8716205349-24">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="8716205349-24">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·f84c8dc56685518f6156c264b3e7fd90cd5a8efbc5c45dc9a41766ed671c2cc4·...·]-23">}</span><span·class="p">,</span><span·class="w">
755 ····················</span><span·class="p"·data-group-id="9016301372-25">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="9016301372-26">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="9016301372-26">}[·...·truncated·by·diffoscope;·len:·318,·SHA:·d382fe9c65c999490684ffd0e80a91126c251be934c4c20cef9288287b11ef55·...·]-2">]</span></code></pre><p>As·long·as·real·identifiers·are·correct,·it·is·OK·to·pass·a·CPU·topology755 ····················</span><span·class="p"·data-group-id="8716205349-25">{</span><span·class="ss">core</span><span·class="p">,</span><span·class="p"·data-group-id="8716205349-26">{</span><span·class="ss">logical</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="8716205349-26">}[·...·truncated·by·diffoscope;·len:·318,·SHA:·ab63cc1efc588fd2df93dcef73360f28df130294092af85b370bac6339425c39·...·]-2">]</span></code></pre><p>As·long·as·real·identifiers·are·correct,·it·is·OK·to·pass·a·CPU·topology
756 that·is·not·a·correct·description·of·the·CPU·topology.·When·used·with·care756 that·is·not·a·correct·description·of·the·CPU·topology.·When·used·with·care
757 this·can·be·very·useful.·This·to·trick·the·emulator·to·bind·its·schedulers757 this·can·be·very·useful.·This·to·trick·the·emulator·to·bind·its·schedulers
758 as·you·want.·For·example,·if·you·want·to·run·multiple·Erlang·runtime·systems758 as·you·want.·For·example,·if·you·want·to·run·multiple·Erlang·runtime·systems
759 on·the·same·machine,·you·want·to·reduce·the·number·of·schedulers·used·and759 on·the·same·machine,·you·want·to·reduce·the·number·of·schedulers·used·and
760 manipulate·the·CPU·topology·so·that·they·bind·to·different·logical·CPUs.·An760 manipulate·the·CPU·topology·so·that·they·bind·to·different·logical·CPUs.·An
761 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·one761 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
762 %·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,·and762 %·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 923, 18 lines modifiedOffset 923, 18 lines modified
923 </h2>923 </h2>
924 <p>The·standard·Erlang/OTP·system·can·be·reconfigured·to·change·the·default924 <p>The·standard·Erlang/OTP·system·can·be·reconfigured·to·change·the·default
925 behavior·on·startup.</p><ul><li><p><strong>The·<code·class="inline">.erlang</code>·startup·file</strong>·-·When·Erlang/OTP·is·started,·the·system925 behavior·on·startup.</p><ul><li><p><strong>The·<code·class="inline">.erlang</code>·startup·file</strong>·-·When·Erlang/OTP·is·started,·the·system
926 searches·for·a·file·named·<code·class="inline">.erlang</code>·in·the926 searches·for·a·file·named·<code·class="inline">.erlang</code>·in·the
927 <a·href="init.html#home">user's·home·directory</a>·and·then927 <a·href="init.html#home">user's·home·directory</a>·and·then
928 <a·href="../../../lib/stdlib-6.2.1/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·Erlang928 <a·href="../../../lib/stdlib-6.2.1/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
929 expressions.·These·expressions·are·evaluated·as·if·they·were·input·to·the929 expressions.·These·expressions·are·evaluated·as·if·they·were·input·to·the
930 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="7348022680-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="7348022680-2">[</span><span·class="p"·data-group-id="7348022680-2">]</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·11a01490f6f117b28f60c02e7202e106302784b43b83cf3986999abf5c72a20b·...·]-1">)</span><span·class="p">.</span><span·class="w">930 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="0438512176-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="0438512176-2">[</span><span·class="p"·data-group-id="0438512176-2">]</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·1b9fe540678563ecebcaa049ca20ae7a0016b7c9c0f552b0c60f49edc42b59aa·...·]-1">)</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="7348022680-3">(</span><span·class="s">&quot;/home/calvin/test/ebin&quot;</span><span·class="p"·data-group-id="7348022680-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="0438512176-3">(</span><span·class="s">&quot;/home/calvin/test/ebin&quot;</span><span·class="p"·data-group-id="0438512176-3">)</span><span·class="p">.</span><span·class="w">
932 </span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">add_path</span><span·class="p"·data-group-id="7348022680-4">(</span><span·class="s">&quot;/home/hobbes/bigappl-1.2/ebin&quot;</span><span·class="p"·data-group-id="7348022680-4">)</span><span·class="p">.</span><span·class="w">932 </span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">add_path</span><span·class="p"·data-group-id="0438512176-4">(</span><span·class="s">&quot;/home/hobbes/bigappl-1.2/ebin&quot;</span><span·class="p"·data-group-id="0438512176-4">)</span><span·class="p">.</span><span·class="w">
933 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="7348022680-5">(</span><span·class="s">&quot;.erlang·rc·finished\n&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="7348022680-6">[</span><span·class="p"·data-group-id="7348022680-6">]</span><span·class="p"·data-group-id="7348022680-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·not933 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="0438512176-5">(</span><span·class="s">&quot;.erlang·rc·finished\n&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="0438512176-6">[</span><span·class="p"·data-group-id="0438512176-6">]</span><span·class="p"·data-group-id="0438512176-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
934 prefixed·by·a·module·name·are·assumed·to·be·functional·objects·(funs),934 prefixed·by·a·module·name·are·assumed·to·be·functional·objects·(funs),
935 built-in·functions·(BIFs),·or·belong·to·the·module·<code·class="inline">user_default</code>·or935 built-in·functions·(BIFs),·or·belong·to·the·module·<code·class="inline">user_default</code>·or
936 <code·class="inline">shell_default</code>.</p><p>To·include·private·shell·commands,·define·them·in·a·module·<code·class="inline">user_default</code>·and936 <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
937 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·of937 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
938 <code·class="inline">user_default</code>·is·defined,·the·Erlang/OTP·environment·can·be·customized.·More938 <code·class="inline">user_default</code>·is·defined,·the·Erlang/OTP·environment·can·be·customized.·More
939 powerful·changes·can·be·made·by·supplying·command-line·arguments·in·the939 powerful·changes·can·be·made·by·supplying·command-line·arguments·in·the
940 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">940 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.3/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="2910927646-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="2910927646-2">[</span><span·[·...·truncated·by·diffoscope;·len:·194,·SHA:·f4ec93664da387bd70b5182177c3cfb3d7e5ecf5a815b68229e19915afff124d·...·]-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="5514488304-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="5514488304-2">[</span><span·[·...·truncated·by·diffoscope;·len:·194,·SHA:·dab4c757f7877615a93abea4b2d9de02253969394d8bd8dcb6aed689a1c1dec2·...·]-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="6920020202-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="8400377824-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="6920020202-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="6920020202-2">]</span><s[·...·truncated·by·diffoscope;·len:·266,·SHA:·1cd0fab3bea8112f26cded3a5c22c7df64d59f73849d52a13e93a601418653bc·...·]-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="8400377824-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="8400377824-2">]</span><s[·...·truncated·by·diffoscope;·len:·266,·SHA:·2e14f9c2dd3906489876a528273928c03e62e44470ca9a2c91f347ec16efa299·...·]-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="8113063288-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="8113063288-2">]</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·6b287e4eedfa2fc9a80febe22e7abbd89a7fd90ea9a0e597eacada5731d072d2·...·]-1">)</span><span·class="p">.</span></code></pre><h3·id="kill-epmd"·class="section-heading">276 ··········</span><span·class="p"·data-group-id="9898320184-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="9898320184-2">]</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·c52cb9c8c83890eb15028873054824a2ad3e17c3c4d45fae377f6e665741d8cb·...·]-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="0878748421-1">(</span><span·class="ss">initiator</span><span·class="p"·data-group-id="0878748421-1">)</span><span·class="w">······································</span><span·class="n">B</span><span·class="w">·</span><span·class="p"·data-group-id="08787484[·...·truncated·by·diffoscope;·len:·87,·SHA:·e343396c3460f4c263d7d1a27eeac0249e73709dd5d2db3998ac2e48ec295938·...·]-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="4563757949-1">(</span><span·class="ss">initiator</span><span·class="p"·data-group-id="4563757949-1">)</span><span·class="w">······································</span><span·class="n">B</span><span·class="w">·</span><span·class="p"·data-group-id="45637579[·...·truncated·by·diffoscope;·len:·87,·SHA:·157b3a17f2932c455e07eb2cee6cf5a85b3408bfaabc3ebeed221f8c7f51771e·...·]-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="0878748421-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="4563757949-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="0878748421-3">)</span><span·class="w">423 ···················································</span><span·class="ss">recv_status</span><span·class="p"·data-group-id="4563757949-3">)</span><span·class="w">
  
424 ··························</span><span·class="p"·data-group-id="0878748421-4">(</span><span·class="n">ChB</span><span·class="p"·data-group-id="0878748421-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:·58af231a81d00445bd0e86399d051406a441ce21c74964662ecf538102ddb61d·...·]-5">)</span><span·class="w">424 ··························</span><span·class="p"·data-group-id="4563757949-4">(</span><span·class="n">ChB</span><span·class="p"·data-group-id="4563757949-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:·eeac0c98ef2b57bb2dc82e894432b15c80273d20e85012edc9ae1f96848444b7·...·]-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="0878748421-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="4563757949-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="0878748421-6">)</span><span·class="w">429 ···················································</span><span·class="ss">recv_complement</span><span·class="p"·data-group-id="4563757949-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="0878748421-7">(</span><span·class="p"·data-group-id="0878748421-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="4563757949-7">(</span><span·class="p"·data-group-id="4563757949-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="0878748421-8">(</span><span·class="n">B</span><span·class="p"·data-group-id="0878748421-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="4563757949-8">(</span><span·class="n">B</span><span·class="p"·data-group-id="4563757949-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="0878748421-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="0878748421-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="4563757949-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="4563757949-9">)</span><span·class="w">
433 ··························</span><span·class="p"·data-group-id="0878748421-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="0878748421-10">)</span><span·class="w">433 ··························</span><span·class="p"·data-group-id="4563757949-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="4563757949-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="0878748421-11">(</span><span·class="n">A</span><span·class="p"·data-group-id="0878748421-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="4563757949-11">(</span><span·class="n">A</span><span·class="p"·data-group-id="4563757949-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="0878748421-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="0878748421-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="4563757949-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="4563757949-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="0878748421-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="0878748421-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="4563757949-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="4563757949-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="0878748421-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="0878748421-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="4563757949-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="4563757949-14">)</span><span·class="w">
442 ··························</span><span·class="p"·data-group-id="0878748421-15">(</span><span·class="n">DiB</span><span·class="p"·data-group-id="0878748421-15">)</span><span·class="w">442 ··························</span><span·class="p"·data-group-id="4563757949-15">(</span><span·class="n">DiB</span><span·class="p"·data-group-id="4563757949-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="0878748421-16">(</span><span·class="n">B</span><span·class="p"·data-group-id="0878748421-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="4563757949-16">(</span><span·class="n">B</span><span·class="p"·data-group-id="4563757949-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="0878748421-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="0878748421-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="4563757949-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="4563757949-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.3/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="5817558813-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:·951,·SHA:·c7c7be300835318290459a58eba064acb5410c492a73be0adc7edc24058bf577·...·]-1">)</span></code></pre><h2·id="large_big_ext"·class="section-heading">443 </span><span·class="p"·data-group-id="5936677362-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:·951,·SHA:·2efa231134676216aa3f76d745019bafe2a3a25b9b2744f67045d9273f900c0b·...·]-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.3/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="6088537015-1">(</span><span·class="ss">niftest</span><span·class="p"·data-group-id="6088537015-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="5821493935-1">(</span><span·class="ss">niftest</span><span·class="p"·data-group-id="5821493935-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="6088537015-2">(</span><span·class="p"·data-group-id="6088537015-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><sp[·...·truncated·by·diffoscope;·len:·115,·SHA:·9d32229ff858b129027b9cf28fc71b7a8c28a3e22468576c278538f7a978388a·...·]5-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="5821493935-2">(</span><span·class="p"·data-group-id="5821493935-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><sp[·...·truncated·by·diffoscope;·len:·115,·SHA:·8a8f286860f8853bbc353d774198fa066b5d66f053ebdbdec1a5090a2c18c269·...·]5-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="6088537015-4">(</span><span·class="p"·data-group-id="6088537015-5">[</span><span·class="ss">hello</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6088537015-5">]</span><span·class="p"·data-group-id="6088537015-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="5821493935-4">(</span><span·class="p"·data-group-id="5821493935-5">[</span><span·class="ss">hello</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5821493935-5">]</span><span·class="p"·data-group-id="5821493935-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="6088537015-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6088537015-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="5821493935-6">(</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5821493935-6">)</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">init</span><span·class="p"·data-group-id="6088537015-7">(</span><span·class="p"·data-group-id="6088537015-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="5821493935-7">(</span><span·class="p"·data-group-id="5821493935-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="6088537015-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="6088537015-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="5821493935-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="5821493935-8">)</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">hello</span><span·class="p"·data-group-id="6088537015-9">(</span><span·class="p"·data-group-id="6088537015-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="5821493935-9">(</span><span·class="p"·data-group-id="5821493935-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="6088537015-10">(</span><span·class="s">&quot;NIF·library·not·loaded&quot;</span><span·class="p"·data-group-id="6088537015-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="5821493935-10">(</span><span·class="s">&quot;NIF·library·not·loaded&quot;</span><span·class="p"·data-group-id="5821493935-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.3/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.3/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.3/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.3/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.3/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="6110150451-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="6110150451-1">)</span><span·class="p">.</span></code></pre><p>For·more·information·about·the·record·see·<a·href="../../../lib/kernel-10.2.3/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="2884498196-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="2884498196-1">)</span><span·class="p">.</span></code></pre><p>For·more·information·about·the·record·see·<a·href="../../../lib/kernel-10.2.3/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.3/doc/html/code.html"><code·class="inline">code</code></a>.</p>405 about·archive·files,·see·<a·href="../../../lib/kernel-10.2.3/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.3/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="5328536538-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="5328536538-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="5328536538-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">8[·...·truncated·by·diffoscope;·len:·1414,·SHA:·70a3ef11fa457eb7a1fc72def4abd8b0a94a730112a82d9945d5f230ba25ca58·...·]-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="6071570281-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="6071570281-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="6071570281-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">8[·...·truncated·by·diffoscope;·len:·1414,·SHA:·2df1bc8aaf93290f3556bb16617ebf38bd23236beaf442db5523b76e83d6818f·...·]-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="5328536538-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="5328536538-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="6071570281-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="6071570281-9">)</span><span·class="gp·unselectable">
154 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="5328536538-10">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="5328536538-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:·1e640e8bc304eddef06c69a99be90955470a688ed4a5df9820b5688761fee911·...·]-11">)</span><span·class="p">.</span><span·class="w">154 1&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="6071570281-10">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="6071570281-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:·6546e6ed056fd4c4fb068d36981951bf7ed35e6461248e429006f104d96ac152·...·]-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="5328536538-12">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="5328536538-13">(</span><span·class="p"·data-group-id="5328536538-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span[·...·truncated·by·diffoscope;·len:·954,·SHA:·83cce8f61c060361ed3221804b75e511e02abad1c98c3aa0b14325dc83597c89·...·]-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="6071570281-12">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="6071570281-13">(</span><span·class="p"·data-group-id="6071570281-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span[·...·truncated·by·diffoscope;·len:·954,·SHA:·c24553c93f2d500eeae1a5c3576c23247849a17cd0676a71f854f5b70968a222·...·]-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="5328536538-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="5328536538-18">[</span><span·class="nb">send</span>[·...·truncated·by·diffoscope;·len:·420,·SHA:·4d2b1cbf9c0e10d7d648257e4deb63e1e660bff01c2e0d769c1c8690804cb1bd·...·]-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="6071570281-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="6071570281-18">[</span><span·class="nb">send</span>[·...·truncated·by·diffoscope;·len:·420,·SHA:·44987e091ad39bada70f79b1bcc8ea277a7c3183c902b158bd48c3f3621ea260·...·]-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="5328536538-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:·ff3d9608cd9d6ddd348cff3d9c3334e19d07123bccf12603d293daa945230928·...·]-20">}</span><span·class="gp·unselectable">160 </span><span·class="p"·data-group-id="6071570281-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:·341af26f1398b1f8654c6d59fc0b031bef53dd348af1efd7d87b66f64846ae6b·...·]-20">}</span><span·class="gp·unselectable">
161 4&gt;·</span><span·class="p"·data-group-id="5328536538-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="5328536538-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·375,·SHA:·60f8f2b896b0fde6507a7c503e6061a47af6d75198611924d88f6a5f3b1bb2cf·...·]-22">)</span><span·class="p">.</span><span·class="w">161 4&gt;·</span><span·class="p"·data-group-id="6071570281-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="6071570281-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·375,·SHA:·cfde993fceffcfdcc4fdb13c473eea418588e0d6e1000c25c9d322b80078015a·...·]-22">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="5328536538-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:·e8ddeeeba94e1cf0b5383ca8838e2b6393effe6657406f6f5d51be69ea44351a·...·]-24">}</span><span·class="w">162 </span><span·class="p"·data-group-id="6071570281-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:·9df5a72f4ff01a078517dfc91231f8dc50d374f4b280a6af1e23b682741e938a·...·]-24">}</span><span·class="w">
163 </span><span·class="p"·data-group-id="5328536538-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:·e7e6e329a9348137cbea0dd4f6173fb1fb89dde43d2b287d0de0ff32c00f580a·...·]-25">}</span><span·class="w">163 </span><span·class="p"·data-group-id="6071570281-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:·07c9f714d229f726897f2dda93952ff4cf94e42dad6eff088d01e12cd87f7215·...·]-25">}</span><span·class="w">
164 </span><span·class="p"·data-group-id="5328536538-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:·3604f84739fb48d87f32f7b232059ce8289ffee6bb5220b62488ab2ce80c567c·...·]-26">}</span><span·class="w">164 </span><span·class="p"·data-group-id="6071570281-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:·722985e31b94907145e8717b24cb8b64faf6f44c011b453589d5c66a77403ba2·...·]-26">}</span><span·class="w">
165 </span><span·class="p"·data-group-id="5328536538-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:·3604f84739fb48d87f32f7b232059ce8289ffee6bb5220b62488ab2ce80c567c·...·]-27">}</span><span·class="w">165 </span><span·class="p"·data-group-id="6071570281-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:·722985e31b94907145e8717b24cb8b64faf6f44c011b453589d5c66a77403ba2·...·]-27">}</span><span·class="w">
166 </span><span·class="p"·data-group-id="5328536538-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:·3604f84739fb48d87f32f7b232059ce8289ffee6bb5220b62488ab2ce80c567c·...·]-28">}</span><span·class="w">166 </span><span·class="p"·data-group-id="6071570281-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:·722985e31b94907145e8717b24cb8b64faf6f44c011b453589d5c66a77403ba2·...·]-28">}</span><span·class="w">
167 </span><span·class="p"·data-group-id="5328536538-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:·3604f84739fb48d87f32f7b232059ce8289ffee6bb5220b62488ab2ce80c567c·...·]-29">}</span><span·class="w">167 </span><span·class="p"·data-group-id="6071570281-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:·722985e31b94907145e8717b24cb8b64faf6f44c011b453589d5c66a77403ba2·...·]-29">}</span><span·class="w">
168 </span><span·class="p"·data-group-id="5328536538-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="5328536538-30">}</span><span·class="w">168 </span><span·class="p"·data-group-id="6071570281-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="6071570281-30">}</span><span·class="w">
169 </span><span·class="p"·data-group-id="5328536538-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:·ff3d9608cd9d6ddd348cff3d9c3334e19d07123bccf12603d293daa945230928·...·]-31">}</span><span·class="w">169 </span><span·class="p"·data-group-id="6071570281-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:·341af26f1398b1f8654c6d59fc0b031bef53dd348af1efd7d87b66f64846ae6b·...·]-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="7547653225-1">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="7547653225-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="0198738895-1">(</span><span·class="ss">erl_msg_tracer</span><span·class="p"·data-group-id="0198738895-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="7547653225-2">(</span><span·class="p"·data-group-id="7547653225-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:·8a0bfc747c47ce124a3ddd3950b68a935a103d72b26913f4cfb682d0efcc113c·...·]5-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="0198738895-2">(</span><span·class="p"·data-group-id="0198738895-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:·2746db46cd15d0f3adbf5c1fb01e3f2a514797ab2ce58d15292ce70a667af961·...·]5-2">)</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">load</span><span·class="p"·data-group-id="7547653225-4">(</span><span·class="p"·data-group-id="7547653225-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="0198738895-4">(</span><span·class="p"·data-group-id="0198738895-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="7547653225-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="7547653225-6">[</span><span·class="p"·data-group-id="7547653225-6">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·ee75729559784b7fc9d20053dd0459c39ecc74907d2b4860a40052eaaf54a05a·...·]5-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="0198738895-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="0198738895-6">[</span><span·class="p"·data-group-id="0198738895-6">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·9,·SHA:·938b9aaba09f93f3ea9a72302e341ed33c7a1173b9a0c6321bbc3d05d30eec97·...·]5-5">)</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">enabled</span><span·class="p"·data-group-id="7547653225-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="7547653225-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="0198738895-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="0198738895-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="7547653225-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:·36dac1d82019dd04f0a65b61fed2b70bef35e43056659f3700b61c1bbdd1744a·...·]5-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="0198738895-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:·9fbba6f7a64d533bee17eef1845f25975834f66401fbea4268bc99dd91241f1a·...·]5-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.3/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="9334704552-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="9334704552-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="2424177995-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="2424177995-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="9334704552-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="9334704552-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:·afe77af767aad4d15b9ee872e9492bdf723fcf69fc36cecf5e70ff1ccca758c0·...·]-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="2424177995-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="2424177995-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:·9576d3cd5e70aa3961f029dd05d25e0e60f02b7cc7da4e9c3263ab62f1d03b1c·...·]-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="5467481421-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="5467481421-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="8382010555-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="8382010555-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="5467481421-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="5467481421-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:·984b6f1cc7e988743c071679d4b4ecdf2fb0ed65e4dfffbcb70ffaf4a0f5f85c·...·]-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="8382010555-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="8382010555-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:·bd63170b0d6fccdf3297069ad902dc843384ee999c61263d0fee3690e883cb04·...·]-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="7536709659-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="7536709659-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="4340529963-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="4340529963-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="7536709659-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="7536709659-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·d52095a96142111649f3382df29ecf9a9ffe7089f7acbe79379ea6686378ab8e·...·]-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="4340529963-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="4340529963-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·0f7bce55f16703f44d05aa5bd73be2fd518b39727a52e17a4ac014611b2953c7·...·]-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="8920719898-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="8920719898-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="5666165730-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="5666165730-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="8920719898-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="8920719898-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:·8a96125c25418e96de1c96cb2bc73a333f12b492bd5459fe7e6a790d9954fbe2·...·]-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="5666165730-2">(</span><span·class="n">X</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="5666165730-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:·952bc92e406d0c1056a119765543a0419252e63c1173ee194e9409929740b3fe·...·]-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="1032803708-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="1032803708-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="9822964852-1">(</span><span·class="n">Data1</span><span·class="p"·data-group-id="9822964852-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="1032803708-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="1032803708-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:·c61bf3b958c0c7ec95994b82e56e95786d6e4bffbfb45af1590ee1b75c33ea80·...·]-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="9822964852-2">(</span><span·class="n">Y</span><span·class="p">,</span><span·class="n">Data2</span><span·class="p"·data-group-id="9822964852-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:·fb35cb5bf681321b13cfde04ed82c06e7a6c34f3117c7dcb5ad7464fd5350b98·...·]-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="2121388214-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="2121388214-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="7340596710-2">(</span><span·class="n">Data2</span><span·class="p"·data-group-id="7340596710-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="2121388214-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="2121388214-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·5021bd48cc072960860021c3e44f7c6793d6ab128fa18ea1df818ae3b5ab53b8·...·]-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="7340596710-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="7340596710-4">(</span><span·class="n">Data2</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·e487e1ba026ce7a1c89d1ca92d48f5047925f1675ca1fa1f48d7d3362eb18834·...·]-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="5559052618-1">(</span><span·class="p"·data-group-id="5559052618-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="5559052618-2">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·407,·SHA:·8e38afdcbfdd662b3751a143202f7a0a60977b660d1917a5771c413f10c9e565·...·]-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="2036107943-1">(</span><span·class="p"·data-group-id="2036107943-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="2036107943-2">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·407,·SHA:·0678535aa1d37aa7a34f3b5413e9d0c89e74634c6b0521b45d57d680b207180d·...·]-1">)</span><span·class="p">.</span><span·class="w">
8137 </span><span·class="p"·data-group-id="5559052618-4">[</span><span·class="p"·data-group-id="5559052618-5">{</span><span·class="ss">c@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="5559052618-6">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·334,·SHA:·2fae721681ed761bc13f148b75bbb25853392800c9dad3d9d6a1c81f557c5440·...·]-5">}</span><span·class="p">,</span><span·class="w">8137 </span><span·class="p"·data-group-id="2036107943-4">[</span><span·class="p"·data-group-id="2036107943-5">{</span><span·class="ss">c@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="2036107943-6">#{</span><span·class="ss">connection_id</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·334,·SHA:·8d023dec84d5f99e775d5306b64197312edec5ea893a1d63249790856dce0bcc·...·]-5">}</span><span·class="p">,</span><span·class="w">
8138 ·</span><span·class="p"·data-group-id="5559052618-7">{</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="5559052618-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:·1a623729d560d1642138585368de8ba9a956afefdd6ae13512346f197d76ffc0·...·]-7">}</span><span·class="p">,</span><span·class="w">8138 ·</span><span·class="p"·data-group-id="2036107943-7">{</span><span·class="ss">b@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="2036107943-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:·de290307814e1d6409613b6a2ab2f876ca30e6daf4c3046bdc29936a82ec4323·...·]-7">}</span><span·class="p">,</span><span·class="w">
8139 ·</span><span·class="p"·data-group-id="5559052618-9">{</span><span·class="ss">a@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="5559052618-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:·1a209cfcaba4eb3536944435a39231012d8382e9bc7c4ab7c525bc6d1e2c074f·...·]-4">]</span><span·class="w">8139 ·</span><span·class="p"·data-group-id="2036107943-9">{</span><span·class="ss">a@localhost</span><span·class="p">,</span><span·class="p"·data-group-id="2036107943-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:·6ed098485af93227b3c1cbf0b902248dff0c6669b3a485a22a2b2a59d9e32a42·...·]-4">]</span><span·class="w">
8140 </span><span·class="p"·data-group-id="5559052618-11">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="5559052618-11">)</span><span·class="mi">2</span><span·class="o">&gt;</span></code></pre>8140 </span><span·class="p"·data-group-id="2036107943-11">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="2036107943-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="5441946930-1">(</span><span·class="o">-</span><span·class="mf">3.33</span><span·class="p"·data-group-id="5441946930-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="5840136612-1">(</span><span·class="o">-</span><span·class="mf">3.33</span><span·class="p"·data-group-id="5840136612-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="5441946930-2">(</span><span·class="o">-</span><span·class="mi">3</span><span·class="p"·data-group-id="5441946930-2">)</span><span·class="p">.</span><span·class="w">8243 &gt;·</span><span·class="nf">abs</span><span·class="p"·data-group-id="5840136612-2">(</span><span·class="o">-</span><span·class="mi">3</span><span·class="p"·data-group-id="5840136612-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="3668918698-1">(</span><span·class="p"·data-group-id="3668918698-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="3668918698-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">three</span><span·class="p"·data-group-id="3668918698-1">)</span><span·class="p">.</span><span·class="w"> 
8275 </span><span·class="p"·data-group-id="3668918698-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="3668918698-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="1250870549-1"[·...·truncated·by·diffoscope;·len:·386,·SHA:·b6ca40f8f6037fc4d355c3dd174a9ef60ed8e5e4931c2bc48652ab9d11371648·...·]>
 8275 </span><span·class="p"·data-group-id="1250870549-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="1250870549-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; 609693/640240 bytes (95.23%) of diff not shown.
17.9 KB
./usr/share/doc/erlang-doc/html/erts-15.2.3/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="7657862014-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="7657862014-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="8020772411-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="8020772411-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.1/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.1/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="1005134214-1">(</span><span·class="p"·data-group-id="1005134214-2">[</span><span·class="n">String</span><span·class="p"·data-group-id="1005134214-2">]</span><span·class="p"·data-group-id="1005134214-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="0827275038-1">(</span><span·class="p"·data-group-id="0827275038-2">[</span><span·class="n">String</span><span·class="p"·data-group-id="0827275038-2">]</span><span·class="p"·data-group-id="0827275038-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="1005134214-3">(</span><span·class="n">String</span><span·class="p"·data-group-id="1005134214-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="0827275038-3">(</span><span·class="n">String</span><span·class="p"·data-group-id="0827275038-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="1005134214-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="1005134214-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="0827275038-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="0827275038-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="1005134214-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="1005134[·...·truncated·by·diffoscope;·len:·181,·SHA:·c611c5d7f3cb4ef68b9df7c0ea546ece7a52ef1904c99c4ab8eba13bace5d673·...·]-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="0827275038-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="0827275[·...·truncated·by·diffoscope;·len:·181,·SHA:·213c9fce5ef7d83da89c67ed84245ecafa81e916515e4b9fb884cc2acc6dc707·...·]-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="1005134214-7">(</span><span·class="p"·data-group-id="1005134214-7">)</span><span·class="w">152 ············</span><span·class="nf">usage</span><span·class="p"·data-group-id="0827275038-7">(</span><span·class="p"·data-group-id="0827275038-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="1005134214-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="1005134214-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="0827275038-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="0827275038-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="1005134214-9">(</span><span·class="p"·data-group-id="1005134214-9">)</span><span·class="p">.</span><span·class="w">155 ····</span><span·class="nf">usage</span><span·class="p"·data-group-id="0827275038-9">(</span><span·class="p"·data-group-id="0827275038-9">)</span><span·class="p">.</span><span·class="w">
  
156 </span><span·class="nf">usage</span><span·class="p"·data-group-id="1005134214-10">(</span><span·class="p"·data-group-id="1005134214-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="0827275038-10">(</span><span·class="p"·data-group-id="0827275038-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="1005134214-11">(</span><span·class="s">&quot;usage:·factorial·integer\n&quot;</span><span·class="p"·data-group-id="1005134214-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="0827275038-11">(</span><span·class="s">&quot;usage:·factorial·integer\n&quot;</span><span·class="p"·data-group-id="0827275038-11">)</span><span·class="p">,</span><span·class="w">
158 ····</span><span·class="nf">halt</span><span·class="p"·data-group-id="1005134214-12">(</span><span·class="mi">1</span><span·class="p"·data-group-id="1005134214-12">)</span><span·class="p">.</span><span·class="w">158 ····</span><span·class="nf">halt</span><span·class="p"·data-group-id="0827275038-12">(</span><span·class="mi">1</span><span·class="p"·data-group-id="0827275038-12">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">fac</span><span·class="p"·data-group-id="1005134214-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="1005134214-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="0827275038-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0827275038-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="1005134214-14">(</span><span·class="n">N</span><span·class="p"·data-group-id="1005134214-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:·5f587cba3369eaf7ddf77e766cd508b11eac6e1a9f663d6a5d45e63781fedcc1·...·]-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="0827275038-14">(</span><span·class="n">N</span><span·class="p"·data-group-id="0827275038-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:·62e1647560b38527ddb556f54597d985158964c2bb3e2dc3afdb27a9feb86045·...·]-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.1/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.1/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="8071548366-1">(</span><span·class="p"·data-group-id="8071548366-2">[</span><span·class="p"·data-group-id="8071548366-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:·a7c91557a9e84b6a105cca21d46655a363d0298ec2c7b1172324b8c1d951b3d0·...·]-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="9229217754-1">(</span><span·class="p"·data-group-id="9229217754-2">[</span><span·class="p"·data-group-id="9229217754-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:·3142ef23f7b8cb2920f2743280673eca3ca40e5cf15da7f10c1ff5b468c76207·...·]-1">)</span></code></pre><p>The·default·encoding·of·the·I/O-server·for
174 <a·href="../../../lib/stdlib-6.2.1/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.1/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.1/doc/html/unicode_usage.html#unicode_options_summary">Summary·of·Options</a>)·in176 <a·href="../../../lib/stdlib-6.2.1/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.1/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.1/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.1/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.1/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="8521618225-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="8521618225-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="3088068639-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="3088068639-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.3/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.3/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="3119691065-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="3119691065-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="7764708732-1">(</span><span·class="ss">interpret</span><span·class="p"·data-group-id="7764708732-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.3/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="1447194388-1">(</span><span·class="n">Foo</span><span·class="p"·data-group-id="1447194388-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="3400293921-1">(</span><span·class="n">Foo</span><span·class="p"·data-group-id="3400293921-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="1447194388-2">[</span><span·class="mi">42</span><span·class="p">|</span><span·class="n">Foo</span><span·class="p"·data-group-id="1447194388-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="3400293921-2">[</span><span·class="mi">42</span><span·class="p">|</span><span·class="n">Foo</span><span·class="p"·data-group-id="3400293921-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="1447194388-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="1447194388-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="3400293921-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="3400293921-3">}</span><span·class="p">,</span><span·class="w">
143 ···</span><span·class="p"·data-group-id="1447194388-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="1447194388-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="3400293921-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="3400293921-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="5635151132-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="5635151132-1">}</span><span·class="p">.</span><span·class="w">144 </span><span·class="p"·data-group-id="0114190262-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="0114190262-1">}</span><span·class="p">.</span><span·class="w">
145 </span><span·class="p"·data-group-id="5635151132-2">{</span><span·class="ss">put_list</span><span·class="p">,</span><span·class="p"·data-group-id="5635151132-3">{</span><span·class="ss">integer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="5635151132-3"[·...·truncated·by·diffoscope;·len:·457,·SHA:·024269d0fddf1e5a5e94dc2dd960a1cfa2b29bb4a70237f209f57e976eeab140·...·]2-2">}</span><span·class="p">.</span><span·class="w">145 </span><span·class="p"·data-group-id="0114190262-2">{</span><span·class="ss">put_list</span><span·class="p">,</span><span·class="p"·data-group-id="0114190262-3">{</span><span·class="ss">integer</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="0114190262-3"[·...·truncated·by·diffoscope;·len:·457,·SHA:·86ae0c120058ef19a9d306524295a2bcceb41479a30295ee2eac22c182ebc058·...·]2-2">}</span><span·class="p">.</span><span·class="w">
146 </span><span·class="p"·data-group-id="5635151132-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="5635151132-7">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">0</span><[·...·truncated·by·diffoscope;·len:·92,·SHA:·bac7d64d77cf594d4298a018129bbff6ce6dbcea4c5c93ff70307776844bb9d6·...·]2-6">}</span><span·class="p">.</span><span·class="w">146 </span><span·class="p"·data-group-id="0114190262-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="0114190262-7">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">0</span><[·...·truncated·by·diffoscope;·len:·92,·SHA:·3e1850499e5bbb341ebfaa1364b1924d102c84c13719245a5873843cd5114c93·...·]2-6">}</span><span·class="p">.</span><span·class="w">
147 </span><span·class="p"·data-group-id="5635151132-8">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="5635151132-9">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">tag</span><span·class="p"·data-group-id="5635151132-9">}</spa[·...·truncated·by·diffoscope;·len:·42,·SHA:·834deeffade00c9b8f88919d1ff5e110fe6bc78adf43a52aaa9826a7816a67a8·...·]2-8">}</span><span·class="p">.</span><span·class="w">147 </span><span·class="p"·data-group-id="0114190262-8">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="0114190262-9">{</span><span·class="ss">atom</span><span·class="p">,</span><span·class="ss">tag</span><span·class="p"·data-group-id="0114190262-9">}</spa[·...·truncated·by·diffoscope;·len:·42,·SHA:·d8ca8ba4805095a33747d41a2f71d1d884a3b9ec7e7adb07ab0972ff0ef48828·...·]2-8">}</span><span·class="p">.</span><span·class="w">
148 </span><span·class="p"·data-group-id="5635151132-10">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="5635151132-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5635151132-11">}</span>[·...·truncated·by·diffoscope;·len:·40,·SHA:·d54cd7d829bb33315b629d316b4a1f9f2a25d2b6f65d2dd7dff39df9c51e2a73·...·]2-10">}</span><span·class="p">.</span><span·class="w">148 </span><span·class="p"·data-group-id="0114190262-10">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="0114190262-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0114190262-11">}</span>[·...·truncated·by·diffoscope;·len:·40,·SHA:·6ba83e4a94e576bde5f762d0ba3ba0b4c8c3bc9d3e8561c43db7f3b5a433a366·...·]2-10">}</span><span·class="p">.</span><span·class="w">
149 </span><span·class="p"·data-group-id="5635151132-12">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="5635151132-13">{</span><span·class="ss">literal</span><span·class="p">,</span><span·class="p"·data-group-id="5635151132-14">{</span><span·class="ss">te[·...·truncated·by·diffoscope;·len:·228,·SHA:·1b92609a087a1ba9b932ad50fd65398c8ab327bb0d0d9db18664b20ef86d68da·...·]2-12">}</span><span·class="p">.</span><span·class="w">149 </span><span·class="p"·data-group-id="0114190262-12">{</span><span·class="nb">put</span><span·class="p">,</span><span·class="p"·data-group-id="0114190262-13">{</span><span·class="ss">literal</span><span·class="p">,</span><span·class="p"·data-group-id="0114190262-14">{</span><span·class="ss">te[·...·truncated·by·diffoscope;·len:·228,·SHA:·4bc20621c6770318a452de257a750d541e09e1d76aeac92caa80569d0f7a6d33·...·]2-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="3306507368-1">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="3306507368-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="4608831144-1">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="4608831144-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="3306507368-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="3306507368-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="4608831144-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="4608831144-2">}</span><span·class="p">,</span><span·class="w">
158 ····</span><span·class="p"·data-group-id="3306507368-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:·54,·SHA:·f51d630467aa3556fe91d4b5be247d30f091d933b04a0971fa2713614e02b52a·...·]-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="4608831144-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:·54,·SHA:·048f148f5dee9c0929f1c64e446d02a713d8aaf4060679c75721f861eadd60b8·...·]-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="6706053322-1">(</span><span·class="nf">erts_is_literal</span><span·class="p"·data-group-id="6706053322-2">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="6706053322-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="[·...·truncated·by·diffoscope;·len:·541,·SHA:·16931cf340ae2f33bfc1a0e63560efe4a1f03c1681227b1891c4b8dab5b93b9d·...·]-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="2056202677-1">(</span><span·class="nf">erts_is_literal</span><span·class="p"·data-group-id="2056202677-2">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="2056202677-2">)</span><span·class="w">·</span><span·class="p">||</span><span·class="[·...·truncated·by·diffoscope;·len:·541,·SHA:·b0b3045994df754606fb535a62753f29921c4c23dd153cb3c3ac2bddc71cd8b5·...·]-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="6706053322-5">}</span><span·class="w">·</span><span·class="k">else</span><span·class="w">·</span><span·class="p"·data-group-id="6706053322-6">{</span><span·class="w">184 </span><span·class="p"·data-group-id="2056202677-5">}</span><span·class="w">·</span><span·class="k">else</span><span·class="w">·</span><span·class="p"·data-group-id="2056202677-6">{</span><span·class="w">
185 ··</span><span·class="nf">copy</span><span·class="p"·data-group-id="6706053322-7">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="6706053322-7">)</span><span·class="p">;</span><span·class="w">185 ··</span><span·class="nf">copy</span><span·class="p"·data-group-id="2056202677-7">(</span><span·class="ss">ptr</span><span·class="p"·data-group-id="2056202677-7">)</span><span·class="p">;</span><span·class="w">
186 </span><span·class="p"·data-group-id="6706053322-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="2056202677-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.3/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="9007315843-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="9007315843-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="6119145235-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="6119145235-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="9007315843-2">(</span><span·class="p"·data-group-id="9007315843-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="6119145235-2">(</span><span·class="p"·data-group-id="6119145235-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="9007315843-3">(</span><span·class="p"·data-group-id="9007315843-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="6119145235-3">(</span><span·class="p"·data-group-id="6119145235-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="1603295556-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="1603295556-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="4395894275-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="4395894275-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="1603295556-2">(</span><span·class="p"·data-group-id="1603295556-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="4395894275-2">(</span><span·class="p"·data-group-id="4395894275-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.3/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.3/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="8727451348-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="8727451348-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="6391052170-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="6391052170-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="8727451348-2">(</span><span·class="p"·data-group-id="8727451348-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="6391052170-2">(</span><span·class="p"·data-group-id="6391052170-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="2739115231-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="2739115231-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="3704084136-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="3704084136-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="2739115231-2">(</span><span·class="p"·data-group-id="2739115231-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="3704084136-2">(</span><span·class="p"·data-group-id="3704084136-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="9662726621-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="9662726621-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="5322247140-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="5322247140-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="9662726621-2">(</span><span·class="p"·data-group-id="9662726621-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"[·...·truncated·by·diffoscope;·len:·186,·SHA:·e193726cfd90dc791f162283fa4671ca585322bb76c4b1f48f094c6fcf72c985·...·]-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="5322247140-2">(</span><span·class="p"·data-group-id="5322247140-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"[·...·truncated·by·diffoscope;·len:·186,·SHA:·bb19179f79686398e3612b481347a37324e852aad833aa3cd80e5698ee6878ec·...·]-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="5425124235-2">(</span><span·class="p"·data-group-id="5425124235-2">)</span></code></pre><p>Set·domain·name.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1242982511-1">{</span><span·class="ss">nameserver</span><[·...·truncated·by·diffoscope;·len:·294,·SHA:·27a11c67e2966df2b4487976fef3898c424ad823513f5244efb37eab02f89353·...·]-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="4675562574-2">(</span><span·class="p"·data-group-id="4675562574-2">)</span></code></pre><p>Set·domain·name.</p></li><li><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9033345725-1">{</span><span·class="ss">nameserver</span><[·...·truncated·by·diffoscope;·len:·294,·SHA:·0b3e0f3b472fca3f9104e837fccc3ac44a42609e5dec91c37b141efe404bfafa·...·]-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="1242982511-3">(</span><span·class="p"·data-group-id="1242982511-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="9033345725-3">(</span><span·class="p"·data-group-id="9033345725-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="1242982511-4">(</span><span·class="p"·data-group-id="1242982511-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="9033345725-4">(</span><span·class="p"·data-group-id="9033345725-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.3/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="2759656470-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="2759656470-2">[</span><span·class="p">,</span><span·class="n">Port</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·49d06b87c1ecb58a2e70e25c907be3233bf346917b9b999bff6ff01bf1876d44·...·]-1">}</span><span·class="p">.</span><span·class="w">195 for·<a·href="../../../lib/kernel-10.2.3/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="2264850225-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="2264850225-2">[</span><span·class="p">,</span><span·class="n">Port</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·e9a38afdbc0177f9de8b810c314035009004745d76cb9e37744359a1f9182d9b·...·]-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="2759656470-3">(</span><span·class="p"·data-group-id="2759656470-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="2264850225-3">(</span><span·class="p"·data-group-id="2264850225-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="2759656470-4">(</span><span·class="p"·data-group-id="2759656470-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="2264850225-4">(</span><span·class="p"·data-group-id="2264850225-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.3/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="5160437698-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="5160437698-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="5160437698-2">[</span><span·class="nf">string</span><span·class="p"·data-group-id="5160437698-3">(</span><span·class="p"·data-group-id="5160437698-3">)</span><span·class="p"·data-group-id="5160437698-2">]</span></code></pre><p>Add·search·domains·for·<a·href="../../../lib/kernel-10.2.3/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="4668585295-1">{</span><span·class="ss">lookup</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Methods</span><span·class="p"·data-group-id="4668585295-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="4668585295-2">[</span><span·class="nf">atom</span><span·class="p"·data-group-id="4668585295-3">(</span><span·class[·...·truncated·by·diffoscope;·len:·187,·SHA:·83589d341d0aefea057b61f941afb0bcfd6651d8f8b6c930e699db34163042e6·...·]198 <a·href="../../../lib/kernel-10.2.3/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="0960503416-1">{</span><span·class="ss">search</span><span·class[·...·truncated·by·diffoscope;·len:·160,·SHA:·303be93512a3c5c404bbf837a62224f0657f7bfa799dca5ee829ef581d40234c·...·]
 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="0960503416-2">[</span><span·class="nf">string</span><span·class="p"·data-group-id="0960503416-3">(</span><span·class="p"·data-group-id="0960503416-3">)</span><span·class="p"·data-group-id="0960503416-2">]</span></code></pre><p>Add·search·domains·for·<a·href="../../../lib/kernel-10.2.3/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="6662578437-1">{</span><span·class="ss">lookup</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Methods</span><span·class="p"·data-group-id="6662578437-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="6662578437-2">[</span><span·class="nf">atom</span><span·class="p"·data-group-id="6662578437-3">(</span><span·class="p"·data-group-id="6662578437-3">)</span><span·class="p"·data-group-id="6662578437-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.3/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.3/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="4602446059-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="4602446059-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="1420297796-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="1420297796-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="4602446059-2">(</span><span·class="p"·data-group-id="4602446059-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="1420297796-2">(</span><span·class="p"·data-group-id="1420297796-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="3246971403-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="3246971403-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="7222286403-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="7222286403-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="3246971403-2">(</span><span·class="p"·data-group-id="3246971403-2">)</span></code></pre><p>Set·how·often·(in·milliseconds)·the·resolver·cache·for·<a·href="../../../lib/kernel-10.2.3/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="7222286403-2">(</span><span·class="p"·data-group-id="7222286403-2">)</span></code></pre><p>Set·how·often·(in·milliseconds)·the·resolver·cache·for·<a·href="../../../lib/kernel-10.2.3/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="5117368839-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="5117368839-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="3390203673-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="3390203673-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="5117368839-2">(</span><span·class="p"·data-group-id="5117368839-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="3390203673-2">(</span><span·class="p"·data-group-id="3390203673-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.3/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="6619979666-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="6619979666-1">}</span><span·class="p">.</span><span·class="w">212 <a·href="../../../lib/kernel-10.2.3/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="8046639728-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="8046639728-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="6619979666-2">(</span><span·class="p"·data-group-id="6619979666-2">)</span></code></pre><p>Set·the·number·of·DNS·queries·<a·href="../../../lib/kernel-10.2.3/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="8046639728-2">(</span><span·class="p"·data-group-id="8046639728-2">)</span></code></pre><p>Set·the·number·of·DNS·queries·<a·href="../../../lib/kernel-10.2.3/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="6249831826-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="6249831826-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="8149317752-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="8149317752-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="6249831826-2">(</span><span·class="p"·data-group-id="6249831826-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="8149317752-2">(</span><span·class="p"·data-group-id="8149317752-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.3/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.3/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="2417425306-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="2417425306-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="6167040811-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="6167040811-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.3/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.3/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="5478339768-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="5478339768-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="7803340308-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="7803340308-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.3/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.3/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="3525071925-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="3525071925-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="1300181501-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="1300181501-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.3/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.3/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="8439467308-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="8439467308-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="5063157039-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="5063157039-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="8439467308-2">(</span><span·class="p"·data-group-id="8439467308-2">)</span></code></pre><p>Sets·the·allowed·UDP·payload·size·<a·href="../../../lib/kernel-10.2.3/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="5063157039-2">(</span><span·class="p"·data-group-id="5063157039-2">)</span></code></pre><p>Sets·the·allowed·UDP·payload·size·<a·href="../../../lib/kernel-10.2.3/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="9774245894-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="9774245894-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="1168423042-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="1168423042-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="9774245894-2">(</span><span·class="p"·data-group-id="9774245894-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:·2b29002a217a0036ef42e6f281ece3402cfc46cd44e60fcc2717ba1f4d24c527·...·]-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="1168423042-2">(</span><span·class="p"·data-group-id="1168423042-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:·2b4c8a978c627d79869ad5fd9c5dbea9b3a88ef70bbca1453dc119c94f4e56f1·...·]-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="9921828930-2">(</span><span·class="p"·data-group-id="9921828930-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="2268155287-2">(</span><span·class="p"·data-group-id="2268155287-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="7652647983-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="76526[·...·truncated·by·diffoscope;·len:·4,·SHA:·bcaf29cf76c157164339236eb7b4a3038d4e0bd039eaa1f5919ab2efb1a23239·...·]3-1">}</span><span·class="p">.</span><span·class="w">249 </span><span·class="p"·data-group-id="8291452833-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="82914[·...·truncated·by·diffoscope;·len:·4,·SHA:·01ec3d27560e00b678b8ea3afd7c9279919d3cf28eb4ec2bf640c8ecf7629ccc·...·]3-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="7652647983-2">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7652647983-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:·362,·SHA:·f1fabcecabda6090267ed76b5addeaad7a48bae6d4006845a4f35b59fec8c41d·...·]3-2">}</span><span·class="p">.</span><span·class="w">251 </span><span·class="p"·data-group-id="8291452833-2">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8291452833-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:·362,·SHA:·127fd9bd66b7b253bb434e69b570403009e4b6cd9a3b999cdfce9a2e7fc7073e·...·]3-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="7652647983-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="7652647983-5">}</span><span·class="p">.</span><span·class="w">253 </span><span·class="p"·data-group-id="8291452833-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="8291452833-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="7652647983-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="7652647983-6">}</span><span·class="p">.</span><span·class="w">255 </span><span·class="p"·data-group-id="8291452833-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="8291452833-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="7652647983-7">{</span><span·class="ss">edns</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7652647983-7">}</span><span·class="p">.</span><span·class="w">257 </span><span·class="p"·data-group-id="8291452833-7">{</span><span·class="ss">edns</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8291452833-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="7652647983-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="7652647983-8">}</span><span·class="p">.</span><span·class="w">259 </span><span·class="p"·data-group-id="8291452833-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="8291452833-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="7652647983-9">{</span><span·class="ss">lookup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7652647983-10">[</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">dns</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·9a0177dbb46cbc4c8d28dead149c2ba6424a697aef176858f01a507a881b17cf·...·]3-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="8291452833-9">{</span><span·class="ss">lookup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8291452833-10">[</span><span·class="ss">file</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">dns</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·0bb5d0c7635adfff79fb9011ff8ec976d0b8c92619c835703639978c69b40c08·...·]3-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.3/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="6032754510-1">(</span><span·class="p"·data-group-id="6032754510-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="0442453065-1">(</span><span·class="p"·data-group-id="0442453065-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p"·data-group-id="6032754510-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="6032754510-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="0442453065-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="0442453065-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="8543145946-1">(</span><span·class="p"·data-group-id="8543145946-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="4064166503-1">(</span><span·class="p"·data-group-id="4064166503-1">)</span><span·class="p">.</span><span·class="w">
219 </span><span·class="p"·data-group-id="8543145946-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:·584451e307cbbfcc4e7f207be8e028beb731f0ba02cd5685d4223535aad31aef·...·]-2">]</span><span·class="gp·unselectable">219 </span><span·class="p"·data-group-id="4064166503-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:·eb9d4d9195ec4d0659b3e607bbfd1b4b27c34abce52b33bf9c0ac988157e7747·...·]-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="8543145946-3">(</span><span·class="ss">children</span><span·class="p"·data-group-id="8543145946-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="4064166503-3">(</span><span·class="ss">children</span><span·class="p"·data-group-id="4064166503-3">)</span><span·class="p">.</span><span·class="w">
221 </span><span·class="p"·data-group-id="8543145946-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8543145946-5">[</span><span·class="p"·data-group-id="8543145946-6">[</span><span·class="s">&quot;thomas&quot;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·175,·SHA:·11cc7391c8a115346b840d76de2b28e8dc8ebe4c31b74edb8b43259f8b78cf30·...·]-4">}</span><span·class="gp·unselectable">221 </span><span·class="p"·data-group-id="4064166503-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4064166503-5">[</span><span·class="p"·data-group-id="4064166503-6">[</span><span·class="s">&quot;thomas&quot;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·175,·SHA:·1ca1290cd937f7f8c29f96d9149dd399a329f92424d252e2a76a1f29af5c75e8·...·]-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="8543145946-7">(</span><span·class="ss">ages</span><span·class="p"·data-group-id="8543145946-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="4064166503-7">(</span><span·class="ss">ages</span><span·class="p"·data-group-id="4064166503-7">)</span><span·class="p">.</span><span·class="w">
223 </span><span·class="p"·data-group-id="8543145946-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8543145946-9">[</span><span·class="p"·data-group-id="8543145946-10">[</span><span·class="s">&quot;7&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·191,·SHA:·4470ef3c8ff11c3ae853ba11bf191be51d9650fb024a09c3a865f486c5e653ff·...·]-8">}</span><span·class="gp·unselectable">223 </span><span·class="p"·data-group-id="4064166503-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4064166503-9">[</span><span·class="p"·data-group-id="4064166503-10">[</span><span·class="s">&quot;7&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·191,·SHA:·58ddac904ece189474d4c0821ececc7672d2eaaa904970b4a7010cf56fb355f3·...·]-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="8543145946-11">(</span><span·class="ss">silly</span><span·class="p"·data-group-id="8543145946-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="4064166503-11">(</span><span·class="ss">silly</span><span·class="p"·data-group-id="4064166503-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.3/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.3/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="5500865642-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="5500865642-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="2950336838-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="2950336838-1">)</span><span·class="p">.</span><span·class="w">
518 </span><span·class="p"·data-group-id="5500865642-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5500865642-3">[</span><span·class="p"·data-group-id="5500865642-4">[</span><span·class="s">&quot;b&quot;</span><span·class="p">,</span><span·class="s">&q[·...·truncated·by·diffoscope;·len:·331,·SHA:·5ac03ca1c5542856968e895c006a5173776c3b47200947e00e1adeaed87a8e93·...·]-2">}</span></code></pre><p>The·following·flags·are·defined·automatically·and·can·be·retrieved·using·this518 </span><span·class="p"·data-group-id="2950336838-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2950336838-3">[</span><span·class="p"·data-group-id="2950336838-4">[</span><span·class="s">&quot;b&quot;</span><span·class="p">,</span><span·class="s">&q[·...·truncated·by·diffoscope;·len:·331,·SHA:·2739bc7cfd7035118558e5439ec6af03e823d341b1f72c355f63952dca1a5b29·...·]-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="3971467019-1">(</span><span·class="ss">progname</span><span·class="p"·data-group-id="3971467019-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="1346576695-1">(</span><span·class="ss">progname</span><span·class="p"·data-group-id="1346576695-1">)</span><span·class="p">.</span><span·class="w">
521 </span><span·class="p"·data-group-id="3971467019-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3971467019-3">[</span><span·class="p"·data-group-id="3971467019-4">[</span><span·class="s">&quot;erl&quot;</span><span·class="p"·data-group-id="397146701[·...·truncated·by·diffoscope;·len:·560,·SHA:·c11b6ef06e0ff1bf81d97f93c78e88e0a416b3fcb4ffba85eac558dabe0d2c04·...·]-1">)</span><span·class="p">.</span><span·class="w">521 </span><span·class="p"·data-group-id="1346576695-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1346576695-3">[</span><span·class="p"·data-group-id="1346576695-4">[</span><span·class="s">&quot;erl&quot;</span><span·class="p"·data-group-id="134657669[·...·truncated·by·diffoscope;·len:·560,·SHA:·f2d00f492c7d1729cdc9e72cec1542c31af9dc5d26c14868e29bdcd416aca765·...·]-1">)</span><span·class="p">.</span><span·class="w">
522 </span><span·class="p"·data-group-id="1140159854-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1140159854-3">[</span><span·class="p"·data-group-id="1140159854-4">[</span><span·class="s">&quot;/home/harry&quot;</span><span·class="p"·data-group-id="1[·...·truncated·by·diffoscope;·len:·115,·SHA:·687fc6d14435abccdd6ea278b0703ccbea33f0438ea7ae6f0e39e09f74977073·...·]-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>522 </span><span·class="p"·data-group-id="4095233485-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4095233485-3">[</span><span·class="p"·data-group-id="4095233485-4">[</span><span·class="s">&quot;/home/harry&quot;</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·115,·SHA:·6dcfeac57fcfdb6ae58b879b45ebe8788e389e7ad1db81f08bc121a94d70a50d·...·]-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.3/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="8808293090-1">[</span><span·class="p"·data-group-id="8808293090-2">{</span><span·class="p"·data-group-id="8808293090-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:·2f6f9511b3e3a513ecdd688016512315651b5c19b9301c82c8dab8049fc2a77e·...·]-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="3584551171-1">[</span><span·class="p"·data-group-id="3584551171-2">{</span><span·class="p"·data-group-id="3584551171-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:·fe3596a9146372a7eaa5feee823532ae445c852784108f0134da3e999589723c·...·]-3">]</span><span·class="p">,</span><span·class="w">
375 ··</span><span·class="p"·data-group-id="8808293090-4">[</span><span·class="p"·data-group-id="8808293090-4">]</span><span·class="p">,</span><span·class="w">375 ··</span><span·class="p"·data-group-id="3584551171-4">[</span><span·class="p"·data-group-id="3584551171-4">]</span><span·class="p">,</span><span·class="w">
376 ··</span><span·class="p"·data-group-id="8808293090-5">[</span><span·class="p"·data-group-id="8808293090-5">]</span><span·class="p"·data-group-id="8808293090-2">}</span><span·class="p"·data-group-id="8808293090-1">]</span></code></pre><p>Match·an·argument·list·of·three,·where·the·second·argument·[·...·truncated·by·diffoscope;·len:·473,·SHA:·9dd2f0d10d4ca20334da18d0bfc7db1c10a490bf442ebe6b02b1a30b4c7e59c0·...·]-3">]</span><span·class="p">,</span><span·class="w">376 ··</span><span·class="p"·data-group-id="3584551171-5">[</span><span·class="p"·data-group-id="3584551171-5">]</span><span·class="p"·data-group-id="3584551171-2">}</span><span·class="p"·data-group-id="3584551171-1">]</span></code></pre><p>Match·an·argument·list·of·three,·where·the·second·argument·[·...·truncated·by·diffoscope;·len:·473,·SHA:·227c8c2bb12f447ca20cd6a6cfe362b305c2dad6a81fcf8080641ecde4f2c2b2·...·]-3">]</span><span·class="p">,</span><span·class="w">
377 ··</span><span·class="p"·data-group-id="1490914383-4">[</span><span·class="p"·data-group-id="1490914383-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:·bd69505570d9cd16a78379eaf33a47102202181333f18da45c9110dc3d683bd6·...·]-4">]</span><span·class="p">,</span><span·class="w">377 ··</span><span·class="p"·data-group-id="7478062609-4">[</span><span·class="p"·data-group-id="7478062609-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:·1da46566e40ac137d55d7b0030165fe8d15a00823a5e64609f67be1fc4218086·...·]-4">]</span><span·class="p">,</span><span·class="w">
378 ··</span><span·class="p"·data-group-id="1490914383-6">[</span><span·class="p"·data-group-id="1490914383-6">]</span><span·class="p"·data-group-id="1490914383-2">}</span><span·class="p"·data-group-id="1490914383-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="7478062609-6">[</span><span·class="p"·data-group-id="7478062609-6">]</span><span·class="p"·data-group-id="7478062609-2">}</span><span·class="p"·data-group-id="7478062609-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="1674734974-1">[</span><span·class="p"·data-group-id="1674734974-2">{</span><span·class="p"·data-group-id="1674734974-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:·116,·SHA:·75f05c4dcf9c9c928d133b473f896f7baa18cc9aa25ac73d9430279654592daf·...·]4-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="0943935314-1">[</span><span·class="p"·data-group-id="0943935314-2">{</span><span·class="p"·data-group-id="0943935314-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:·116,·SHA:·e279eb1359a0b150dc68464d2a5dd0068aed61c87407289868a6fd830b62ccdc·...·]4-3">]</span><span·class="p">,</span><span·class="w">
381 ··</span><span·class="p"·data-group-id="1674734974-4">[</span><span·class="p"·data-group-id="1674734974-5">{</span><span·class="ss">&#39;orelse&#39;</span><span·class="p">,</span><span·class="w">381 ··</span><span·class="p"·data-group-id="0943935314-4">[</span><span·class="p"·data-group-id="0943935314-5">{</span><span·class="ss">&#39;orelse&#39;</span><span·class="p">,</span><span·class="w">
382 ······</span><span·class="p"·data-group-id="1674734974-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="1674734974-7">{</span><span·class=[·...·truncated·by·diffoscope;·len:·283,·SHA:·5ec19d3fba0c23e688c4da7a8b9daa8ccf129148b2c73ffa1aeb02f8de6e6192·...·]4-6">}</span><span·class="p">,</span><span·class="w">382 ······</span><span·class="p"·data-group-id="0943935314-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="0943935314-7">{</span><span·class=[·...·truncated·by·diffoscope;·len:·283,·SHA:·4b1613528ce4c93b2a61a99fcadeecf4f883f0aec94023246cacd1d33aa51130·...·]4-6">}</span><span·class="p">,</span><span·class="w">
383 ······</span><span·class="p"·data-group-id="1674734974-9">{</span><span·class="ss">&#39;and&#39;</span><span·class="p">,</span><span·class="w">383 ······</span><span·class="p"·data-group-id="0943935314-9">{</span><span·class="ss">&#39;and&#39;</span><span·class="p">,</span><span·class="w">
384 ········</span><span·class="p"·data-group-id="1674734974-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="1674734974-11">{</span><span·clas[·...·truncated·by·diffoscope;·len:·194,·SHA:·96e533391267ec53ed711657c40e74a5cde0286cbb88cf954b0cde1bb3a10a36·...·]4-10">}</span><span·class="p">,</span><span·class="w">384 ········</span><span·class="p"·data-group-id="0943935314-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="0943935314-11">{</span><span·clas[·...·truncated·by·diffoscope;·len:·194,·SHA:·4693ffca5ccc657c908d8b14288321942ea1b009f0d8a8689f1c970982f66278·...·]4-10">}</span><span·class="p">,</span><span·class="w">
385 ········</span><span·class="p"·data-group-id="1674734974-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="1674734974-13">{</span><span·clas[·...·truncated·by·diffoscope;·len:·536,·SHA:·5eb6876abfc2eb18a49b45af6e0191282fc67e418d39c91537777bb2c886448d·...·]4-4">]</span><span·class="p">,</span><span·class="w">385 ········</span><span·class="p"·data-group-id="0943935314-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="0943935314-13">{</span><span·clas[·...·truncated·by·diffoscope;·len:·536,·SHA:·4d63f1a5ada7415b08953ea56ecaf116cb983b6e5a7723c9efb1abf1870468e2·...·]4-4">]</span><span·class="p">,</span><span·class="w">
386 ··</span><span·class="p"·data-group-id="1674734974-15">[</span><span·class="p"·data-group-id="1674734974-15">]</span><span·class="p"·data-group-id="1674734974-2">}</span><span·class="p"·data-group-id="1674734974-1">]</span></code></pre><p>The·above·problem·can·also·be·solved·as·follows:</p><pre>[·...·truncated·by·diffoscope;·len:·411,·SHA:·7d3186c34e5ce8b09744ab4dde28ce3b14568d27facc9bfb25b28c0869a6e5d3·...·]-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="0943935314-15">[</span><span·class="p"·data-group-id="0943935314-15">]</span><span·class="p"·data-group-id="0943935314-2">}</span><span·class="p"·data-group-id="0943935314-1">]</span></code></pre><p>The·above·problem·can·also·be·solved·as·follows:</p><pre>[·...·truncated·by·diffoscope;·len:·411,·SHA:·1aadb71f31a49e65bd04d702e86842c8c445a9c63d98ea35ea16c5b60d21351d·...·]-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="8034321371-5">[</span><span·class="p"·data-group-id="8034321371-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8034321371-6">[</span><span·class="p"·data-group-id="8034321371-6">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·8edf22e5dfef15c037e665c6bcdc0c27da309f303c6059e2d1bef418dc1b3360·...·]-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="0650273387-5">[</span><span·class="p"·data-group-id="0650273387-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0650273387-6">[</span><span·class="p"·data-group-id="0650273387-6">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·891e73129c059e57ec98577d903490db7f8a44832c28309bb69723dddbe26606·...·]-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="2192411054-1">[</span><span·class="p"·data-group-id="2192411054-2">{</span><span·class="p"·data-group-id="2192411054-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:·1174,·SHA:·a7a5ab0ec28685cc7d7f2cbfbebe31af8cb7293a8f9cb88f3ed5d15621cf935f·...·]-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="9917768860-1">[</span><span·class="p"·data-group-id="9917768860-2">{</span><span·class="p"·data-group-id="9917768860-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:·1174,·SHA:·ab50623fee3d48f51d910d76753c2637c10d8c6aeb08a963230bc0d3a5dda917·...·]-4">]</span><span·class="p">,</span><span·class="w">
390 ··</span><span·class="p"·data-group-id="2192411054-9">[</span><span·class="p"·data-group-id="2192411054-9">]</span><span·class="p"·data-group-id="2192411054-2">}</span><span·class="p"·data-group-id="2192411054-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="9917768860-9">[</span><span·class="p"·data-group-id="9917768860-9">]</span><span·class="p"·data-group-id="9917768860-2">}</span><span·class="p"·data-group-id="9917768860-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="5812268151-1">[</span><span·class="p"·data-group-id="5812268151-2">{</span><span·class="p"·data-group-id="5812268151-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·clas[·...·truncated·by·diffoscope;·len:·115,·SHA:·17e5d62ab8f7809047c341b2566ad0056a5002ab8681bbbd2cbb7faeb7af0228·...·]-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="5833093942-1">[</span><span·class="p"·data-group-id="5833093942-2">{</span><span·class="p"·data-group-id="5833093942-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·clas[·...·truncated·by·diffoscope;·len:·115,·SHA:·3df5c2516bb7f3efb27ee4e19062638fb89d30ba673a5764629758f52b242458·...·]-3">]</span><span·class="p">,</span><span·class="w">
393 ··</span><span·class="p"·data-group-id="5812268151-4">[</span><span·class="p"·data-group-id="5812268151-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="5812268151-5">}</span><span·class="p"·data-group-id="5812268151-4">]</span><span·class="p">,</span><span·class="w"> 
394 ··</span><span·class="p"·data-group-id="5812268151-6">[</span><span·class="p"·data-group-id="5812268151-7">{</span><span·class="ss">message</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5812268151-8">{</span><span·class="ss">process_dump</span><span·class="p"[·...·truncated·by·diffoscope;·len:·190,·SHA:·21ee5be27a3a852a91439c0be8fa97dff6069ca5a24b87eb63bd3ae404e6dd0e·...·]</span><span·class="p">,</span><span·class="w">393 ··</span><span·class="p"·data-group-id="5833093942-4">[</span><span·class="p"·data-group-id="5833093942-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="5833093942-5">}</span><span·class="[·...·truncated·by·diffoscope;·len:·33,·SHA:·a58fa6b3418c26fa52867cb721e19163382d693c2fd6535f4138dffb60e8b45d·...·]</span><span·class="p">,</span><span·class="w">
 394 ··</span><span·class="p"·data-group-id="5833093942-6">[</span><span·class="p"·data-group-id="5833093942-7">{</span><span·class="ss">message</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5833093942-8">{</span><span·class="ss">process_dump</span><span·class="p"·data-group-id="5833093942-8">}</span><span·class="p"·data-group-id="5833093942-7">}</span><span·class="p"·data-group-id="5833093942-6">]</span><span·class="p"·data-group-id="5833093942-2">}</span><span·class="p">,</span><span·class="w">
395 ·</span><span·class="p"·data-group-id="5812268151-9">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5812268151-10">[</span><span·class="p"·data-group-id="5812268151-10">]</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·503,·SHA:·230e1084014f005f5d97238801e3a84cef211d32cef3679759f5c8ce6e3ef41d·...·]-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="5833093942-9">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5833093942-10">[</span><span·class="p"·data-group-id="5833093942-10">]</span><span·class="p">,</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·503,·SHA:·f3389c6e71c821c2c56cd72f2d0190ebaf4861dcbc324741f8495ffc5bce902c·...·]-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="0940297589-1">[</span><span·class="p"·data-group-id="0940297589-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="2881884611-1">[</span><span·class="p"·data-group-id="2881884611-2">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">
399 ··</span><span·class="p"·data-group-id="0940297589-3">[</span><span·class="p"·data-group-id="0940297589-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="0940297589-5">{</span><span·class="ss">get_tcw</span><span·class="p"·data-group-id="0940297589-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="0940297589-6">{</span><span·class="ss">const</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="0940297589-6">}</span><span·class="p"·data-group-id="0940297589-4">}</span><span·class="p"·data-group-id="0940297589-3">]</span><span·class="p">,</span><span·class="w"> 
400 ··</span><span·class="p"·data-group-id="0940297589-7">[</span><span·class="p"·data-group-id="0940297589-7">]</span><span·class="p"·data-group-id="0940297589-2">}</span><span·class="p"·data-group-id="0940297589-1">]</span></code></pre><p>Generate·a·trace·message·only·if·there·is·a·<code·class="in[·...·truncated·by·diffoscope;·len:·215,·SHA:·a325bccebaefd4490d12deb77a1747248dd6624a06795f6834f086e730d309e4·...·]</span><span·class="p">,</span><span·class="w">399 ··</span><span·class="p"·data-group-id="2881884611-3">[</span><span·class="p"·data-group-id="2881884611-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2881884611-5">{</span><span·class="ss">get_tcw</span><span·class="p"·data-group-id="288188[·...·truncated·by·diffoscope;·len:·347,·SHA:·fd03e337a8737ceb6cef38f905e2175729c26d576ee85303193850108db062fe·...·]</span><span·class="p">,</span><span·class="w">
 400 ··</span><span·class="p"·data-group-id="2881884611-7">[</span><span·class="p"·data-group-id="2881884611-7">]</span><span·class="p"·data-group-id="2881884611-2">}</span><span·class="p"·data-group-id="2881884611-1">]</span></code></pre><p>Generate·a·trace·message·only·if·there·is·a·<code·class="inline">seq_trace</code>·token:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2483032992-1">[</span><span·class="p"·data-group-id="2483032992-2">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="w">
401 ··</span><span·class="p"·data-group-id="8757797737-3">[</span><span·class="p"·data-group-id="8757797737-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8757797737-5">{</span><span·class="ss">is_seq_trace</span><span·class="p"·data-group-id="8[·...·truncated·by·diffoscope;·len:·347,·SHA:·e15b7ebdf8dfe4a2e36c2246da71ba20d2cb67be6f268b6f22cbf4aa8b85870a·...·]-3">]</span><span·class="p">,</span><span·class="w">401 ··</span><span·class="p"·data-group-id="2483032992-3">[</span><span·class="p"·data-group-id="2483032992-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2483032992-5">{</span><span·class="ss">is_seq_trace</span><span·class="p"·data-group-id="2[·...·truncated·by·diffoscope;·len:·347,·SHA:·9784b9e5adc96ab5c7684e0c9e6ea178434011ad28891d75153de7992106df2c·...·]-3">]</span><span·class="p">,</span><span·class="w">
402 ··</span><span·class="p"·data-group-id="8757797737-7">[</span><span·class="p"·data-group-id="8757797737-7">]</span><span·class="p"·data-group-id="8757797737-2">}</span><span·class="p"·data-group-id="8757797737-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="2483032992-7">[</span><span·class="p"·data-group-id="2483032992-7">]</span><span·class="p"·data-group-id="2483032992-2">}</span><span·class="p"·data-group-id="2483032992-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="3123809041-1">[</span><span·class="p"·data-group-id="3123809041-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="8392946186-1">[</span><span·class="p"·data-group-id="8392946186-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
404 ··</span><span·class="p"·data-group-id="3123809041-3">[</span><span·class="p"·data-group-id="3123809041-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3123809041-5">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·244,·SHA:·d7cb516ba750527fddb622dfac8615a188a6347bdc376209fc9d7b881fa4ed18·...·]-3">]</span><span·class="p">,</span><span·class="w">404 ··</span><span·class="p"·data-group-id="8392946186-3">[</span><span·class="p"·data-group-id="8392946186-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8392946186-5">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·244,·SHA:·8c4c6f0d26ae76b36481098e58590a01c076c4b5daa61aeb16c840f76599a52c·...·]-3">]</span><span·class="p">,</span><span·class="w">
405 ··</span><span·class="p"·data-group-id="3123809041-6">[</span><span·class="p"·data-group-id="3123809041-7">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3123809041-8">[</span><span·class="ss">silent</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·309,·SHA:·1f06b15bd829d75e64212ba0cbbd0d51a5c0b20c26d7eecf5456cc8040026e19·...·]-2">}</span><span·class="p">,</span><span·class="w">405 ··</span><span·class="p"·data-group-id="8392946186-6">[</span><span·class="p"·data-group-id="8392946186-7">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8392946186-8">[</span><span·class="ss">silent</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·309,·SHA:·abaf1416c6e21164f01087e5d78d4e31409f9f08ad0eb52ce6fa759bb8f77c0b·...·]-2">}</span><span·class="p">,</span><span·class="w">
406 ·</span><span·class="p"·data-group-id="3123809041-10">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">406 ·</span><span·class="p"·data-group-id="8392946186-10">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
407 ··</span><span·class="p"·data-group-id="3123809041-11">[</span><span·class="p"·data-group-id="3123809041-12">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3123809041-13">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·248,·SHA:·44ec5dd38563ef71ab2e8b7a6c2683d70d0dcc11a6d34ec6ddc3ae3d6023853a·...·]-11">]</span><span·class="p">,</span><span·class="w">407 ··</span><span·class="p"·data-group-id="8392946186-11">[</span><span·class="p"·data-group-id="8392946186-12">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8392946186-13">{</span><span·class="nb">hd</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·248,·SHA:·9fd4e0cbdedd688102ba41adf6a4baaf7fdbd54c7fbca55ef893192fb905b855·...·]-11">]</span><span·class="p">,</span><span·class="w">
408 ··</span><span·class="p"·data-group-id="3123809041-14">[</span><span·class="p"·data-group-id="3123809041-15">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3123809041-16">[</span><span·class="p"·data-group-id="3123809041-16">]<[·...·truncated·by·diffoscope;·len:·630,·SHA:·402d19c72b399784ac53fde0a6df049580d5c17425d8ba134b06ff472b670ec5·...·]-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">408 ··</span><span·class="p"·data-group-id="8392946186-14">[</span><span·class="p"·data-group-id="8392946186-15">{</span><span·class="nb">trace</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8392946186-16">[</span><span·class="p"·data-group-id="8392946186-16">]<[·...·truncated·by·diffoscope;·len:·630,·SHA:·4056b891b7e15da2d202544a16b21d9dbebf6a6c9b0a841f81598f60ff0f4a97·...·]-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
409 ··</span><span·class="p"·data-group-id="3848314059-3">[</span><span·class="p"·data-group-id="3848314059-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3848314059-5">{</span><span·class="nb">length</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·242,·SHA:·bdedc3127e4d9fa53e65264f234219466ee6606923c6ed80b9e97e09d5e440a8·...·]-3">]</span><span·class="p">,</span><span·class="w">409 ··</span><span·class="p"·data-group-id="9978041408-3">[</span><span·class="p"·data-group-id="9978041408-4">{</span><span·class="ss">&#39;==&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9978041408-5">{</span><span·class="nb">length</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·242,·SHA:·d767f6e66e81c791f616b38c78f852b72a9de1092047e8e05b56e8f9254b8cfc·...·]-3">]</span><span·class="p">,</span><span·class="w">
410 ··</span><span·class="p"·data-group-id="3848314059-6">[</span><span·class="p"·data-group-id="3848314059-7">{</span><span·class="ss">return_trace</span><span·class="p"·data-group-id="3848314059-7">}</span><span·class="p"·data-group-id="3848314059-6">]</span><span·class="p"·data-group-id="38483140[·...·truncated·by·diffoscope;·len:·2,·SHA:·3e1e967e9b793e908f8eae83c74dba9bcccce6a5535b4b462bd9994537bfe15c·...·]-2">}</span><span·class="p">,</span><span·class="w">410 ··</span><span·class="p"·data-group-id="9978041408-6">[</span><span·class="p"·data-group-id="9978041408-7">{</span><span·class="ss">return_trace</span><span·class="p"·data-group-id="9978041408-7">}</span><span·class="p"·data-group-id="9978041408-6">]</span><span·class="p"·data-group-id="99780414[·...·truncated·by·diffoscope;·len:·2,·SHA:·323783be9a53a31e158ec9600626a4703e99f4e183bc1acb8772cbdf5c3a1ece·...·]-2">}</span><span·class="p">,</span><span·class="w">
411 ·</span><span·class="p"·data-group-id="3848314059-8">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="3848314059-9">[</span><span·class="p"·data-group-id="3848314059-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="3848314059-10"[·...·truncated·by·diffoscope;·len:·157,·SHA:·42c6f9352087785fd02385fdbd6628c5281a346cd7ef405d992731a1e725f28c·...·]-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="9978041408-8">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9978041408-9">[</span><span·class="p"·data-group-id="9978041408-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="9978041408-10"[·...·truncated·by·diffoscope;·len:·157,·SHA:·b15dc9c92fcff80f353adb2c088c96f95b6dc31f42f19b6bfde6c77f7bd4b237·...·]-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="7560477902-1">[</span><span·class="p"·data-group-id="7560477902-2">{</span><span·class="p"·data-group-id="7560477902-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:·71,·SHA:·20072a4605a1f0a5c54ebc4c5ae73dcf024bf82c227d56dfb98a015686bdb214·...·]2-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="2230210492-1">[</span><span·class="p"·data-group-id="2230210492-2">{</span><span·class="p"·data-group-id="2230210492-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:·71,·SHA:·44793a25e7166c2cbbad5d96ca0dff281127f41f0d1afab19ca4df43fc4da456·...·]2-3">]</span><span·class="p">,</span><span·class="w">
413 ··</span><span·class="p"·data-group-id="7560477902-4">[</span><span·class="p"·data-group-id="7560477902-4">]</span><span·class="p">,</span><span·class="w">413 ··</span><span·class="p"·data-group-id="2230210492-4">[</span><span·class="p"·data-group-id="2230210492-4">]</span><span·class="p">,</span><span·class="w">
414 ··</span><span·class="p"·data-group-id="7560477902-5">[</span><span·class="p"·data-group-id="7560477902-5">]</span><span·class="p"·data-group-id="7560477902-2">}</span><span·class="p">,</span><span·class="w">414 ··</span><span·class="p"·data-group-id="2230210492-5">[</span><span·class="p"·data-group-id="2230210492-5">]</span><span·class="p"·data-group-id="2230210492-2">}</span><span·class="p">,</span><span·class="w">
415 ·</span><span·class="p"·data-group-id="7560477902-6">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7560477902-7">[</span><span·class="p"·data-group-id="7560477902-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="7560477902-8">[·...·truncated·by·diffoscope;·len:·154,·SHA:·58f601d8a3e1bf51692264cce736bc05e6736687db65be4b085f9b0525369a8b·...·]2-1">]</span></code></pre><h2·id="ets-examples"·class="section-heading">415 ·</span><span·class="p"·data-group-id="2230210492-6">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2230210492-7">[</span><span·class="p"·data-group-id="2230210492-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="2230210492-8">[·...·truncated·by·diffoscope;·len:·154,·SHA:·a3ccbef102d34980524279630e2ab648adad105fe57b9276db4b6a355efc3032·...·]2-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="8131275323-1">[</span><span·class="p"·data-group-id="8131275323-2">{</span><span·class="p"·data-group-id="8131275323-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:·ef0b3e44d6da2cb9c94dd37bb81ed7954bfef1bc6bb1039e781309d348559709·...·]-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="1283153541-1">[</span><span·class="p"·data-group-id="1283153541-2">{</span><span·class="p"·data-group-id="1283153541-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:·211cf0e06dad946e9daf091979d13991b0d516cfd1754e9232d98b6b76275b72·...·]-3">}</span><span·class="p">,</span><span·class="w">
423 ··</span><span·class="p"·data-group-id="8131275323-4">[</span><span·class="p"·data-group-id="8131275323-4">]</span><span·class="p">,</span><span·class="w">423 ··</span><span·class="p"·data-group-id="1283153541-4">[</span><span·class="p"·data-group-id="1283153541-4">]</span><span·class="p">,</span><span·class="w">
424 ··</span><span·class="p"·data-group-id="8131275323-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="8131275323-5">]</span><span·class="p"·data-group-id="8131275323-2">}</span><span·class="p"·data-group-id="8131275323-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="1283153541-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="1283153541-5">]</span><span·class="p"·data-group-id="1283153541-2">}</span><span·class="p"·data-group-id="1283153541-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="3369926507-1">[</span><span·class="p"·data-group-id="3369926507-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="7308208653-1">[</span><span·class="p"·data-group-id="7308208653-2">{</span><span·class="ss">&#39;$1&#39;</span><span·class="p">,</span><span·class="w">
426 ··</span><span·class="p"·data-group-id="3369926507-3">[</span><span·class="p"·data-group-id="3369926507-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:·e3643e1056c228263c2904dd25483b6b99fff3bc097a05b6f9e390d4701a2679·...·]-3">]</span><span·class="p">,</span><span·class="w">426 ··</span><span·class="p"·data-group-id="7308208653-3">[</span><span·class="p"·data-group-id="7308208653-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:·9310e67e17bcdc58f6e62bbc287d52f160ec6de5a23390048737a382958a4de6·...·]-3">]</span><span·class="p">,</span><span·class="w">
427 ··</span><span·class="p"·data-group-id="3369926507-8">[</span><span·class="p"·data-group-id="3369926507-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="3369926507[·...·truncated·by·diffoscope;·len:·159,·SHA:·5d8815c7ce67c2aec83fc7909afc019318ff39dd1a4a9fb2be7becb73e9aac19·...·]-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="7308208653-8">[</span><span·class="p"·data-group-id="7308208653-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="7308208653[·...·truncated·by·diffoscope;·len:·159,·SHA:·da6c537a456608b256a72d7cd7be18fd81e0d865838376308c2aff283db48b4e·...·]-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="4691465629-1">[</span><span·class="p"·data-group-id="4691465629-2">{</span><span·class="p"·data-group-id="4691465629-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:·c0fb90f3544d342468475709670d1c80d0af7e5f4b17dd4fe3b506ae894ebdfd·...·]-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="0361875217-1">[</span><span·class="p"·data-group-id="0361875217-2">{</span><span·class="p"·data-group-id="0361875217-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:·a91dacfa80d78f055ef363801013e27cef2cd30dac32654a954116c7cb7ddd04·...·]-3">}</span><span·class="p">,</span><span·class="w">
433 ··</span><span·class="p"·data-group-id="4691465629-4">[</span><span·class="p"·data-group-id="4691465629-4">]</span><span·class="p">,</span><span·class="w">433 ··</span><span·class="p"·data-group-id="0361875217-4">[</span><span·class="p"·data-group-id="0361875217-4">]</span><span·class="p">,</span><span·class="w">
434 ··</span><span·class="p"·data-group-id="4691465629-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="4691465629-5">]</span><span·class="p"·data-group-id="4691465629-2">}</span><span·class="p">,</span><span·class="w">434 ··</span><span·class="p"·data-group-id="0361875217-5">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="0361875217-5">]</span><span·class="p"·data-group-id="0361875217-2">}</span><span·class="p">,</span><span·class="w">
435 ·</span><span·class="p"·data-group-id="4691465629-6">{</span><span·class="p"·data-group-id="4691465629-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="46[·...·truncated·by·diffoscope;·len:·8,·SHA:·854c69b7008b9cb2787185c3948586f3868fe5ed95b62537e4d8872b7e8a3b3b·...·]-7">}</span><span·class="p">,</span><span·class="w">435 ·</span><span·class="p"·data-group-id="0361875217-6">{</span><span·class="p"·data-group-id="0361875217-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="03[·...·truncated·by·diffoscope;·len:·8,·SHA:·c5e59ac2fd31279bafe0e97dd45d8380020eebcf8b090b72d2b5ed6d91f400ea·...·]-7">}</span><span·class="p">,</span><span·class="w">
436 ··</span><span·class="p"·data-group-id="4691465629-8">[</span><span·class="p"·data-group-id="4691465629-8">]</span><span·class="p">,</span><span·class="w">436 ··</span><span·class="p"·data-group-id="0361875217-8">[</span><span·class="p"·data-group-id="0361875217-8">]</span><span·class="p">,</span><span·class="w">
437 ··</span><span·class="p"·data-group-id="4691465629-9">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="4691465629-9">]</span><span·class="p"·data-group-id="4691465629-6">}</span><span·class="p"·data-group-id="4691465629-1">]</span></code></pre><p>Function·<a·href="../../../lib/stdlib-6.2.1/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="0361875217-9">[</span><span·class="ss">&#39;$_&#39;</span><span·class="p"·data-group-id="0361875217-9">]</span><span·class="p"·data-group-id="0361875217-6">}</span><span·class="p"·data-group-id="0361875217-1">]</span></code></pre><p>Function·<a·href="../../../lib/stdlib-6.2.1/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.3/doc/html/notes.html
    
Offset 176, 15 lines modifiedOffset 176, 15 lines modified
176 <ul><li><p><a·href="../../../lib/kernel-10.2.3/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.3/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.3/doc/html/inet.html#getifaddrs/1"><code·class="inline">inet:getifaddrs/0,1</code></a>·is·improved·when·using176 <ul><li><p><a·href="../../../lib/kernel-10.2.3/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.3/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.3/doc/html/inet.html#getifaddrs/1"><code·class="inline">inet:getifaddrs/0,1</code></a>·is·improved·when·using
177 inet_backend·=·socket.</p><p>Own·Id:·OTP-19264</p></li><li><p><a·href="../../../lib/stdlib-6.2.1/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">177 inet_backend·=·socket.</p><p>Own·Id:·OTP-19264</p></li><li><p><a·href="../../../lib/stdlib-6.2.1/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">
178 ··<a·href="#improvements-and-new-features"·class="hover-link">178 ··<a·href="#improvements-and-new-features"·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">Improvements·and·New·Features</span>181 ··<span·class="text">Improvements·and·New·Features</span>
182 </h3>182 </h3>
183 <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.1/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="4990726036-1">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4990726036-2">[</span><span·class="ss">label</span><span·class="p">,</span><span·class="ss">registered_name</span><span·class="p"[·...·truncated·by·diffoscope;·len:·79,·SHA:·835bb1be281ba41d9fc981f65c138dbdfe9c861e2a863cce7bc4ea4de106ae47·...·]-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">183 <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.1/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="1854289821-1">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1854289821-2">[</span><span·class="ss">label</span><span·class="p">,</span><span·class="ss">registered_name</span><span·class="p"[·...·truncated·by·diffoscope;·len:·79,·SHA:·e76e4d242cc2d1301d5581eee3d1558731a06e1e1ccbff14218528cd492554f3·...·]-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">
184 ··<a·href="#erts-15-1-3"·class="hover-link">184 ··<a·href="#erts-15-1-3"·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">Erts·15.1.3</span>187 ··<span·class="text">Erts·15.1.3</span>
188 </h2>188 </h2>
189 <h3·id="fixed-bugs-and-malfunctions-4"·class="section-heading">189 <h3·id="fixed-bugs-and-malfunctions-4"·class="section-heading">
190 ··<a·href="#fixed-bugs-and-malfunctions-4"·class="hover-link">190 ··<a·href="#fixed-bugs-and-malfunctions-4"·class="hover-link">
Offset 224, 16 lines modifiedOffset 224, 16 lines modified
224 </h2>224 </h2>
225 <h3·id="fixed-bugs-and-malfunctions-7"·class="section-heading">225 <h3·id="fixed-bugs-and-malfunctions-7"·class="section-heading">
226 ··<a·href="#fixed-bugs-and-malfunctions-7"·class="hover-link">226 ··<a·href="#fixed-bugs-and-malfunctions-7"·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">Fixed·Bugs·and·Malfunctions</span>229 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
230 </h3>230 </h3>
231 <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="4654942693-1">{</span><span·class="ss">&#39;GetOverlappedResult&#39;</span><span·class="p">,</span><span·class="w">231 <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="6503223943-1">{</span><span·class="ss">&#39;GetOverlappedResult&#39;</span><span·class="p">,</span><span·class="w">
232 ··</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="4654942693-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">232 ··</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="6503223943-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">
233 ··<a·href="#improvements-and-new-features-1"·class="hover-link">233 ··<a·href="#improvements-and-new-features-1"·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">Improvements·and·New·Features</span>236 ··<span·class="text">Improvements·and·New·Features</span>
237 </h3>237 </h3>
238 <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.3/doc/html/inet.html"><code·class="inline">inet</code></a>·functions,·either·when·called·with·sockets,238 <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.3/doc/html/inet.html"><code·class="inline">inet</code></a>·functions,·either·when·called·with·sockets,
239 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.1/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.1/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">239 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.1/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.1/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 262, 25 lines modifiedOffset 262, 25 lines modified
262 </h3>262 </h3>
263 <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">263 <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">
264 ··<a·href="#improvements-and-new-features-2"·class="hover-link">264 ··<a·href="#improvements-and-new-features-2"·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">Improvements·and·New·Features</span>267 ··<span·class="text">Improvements·and·New·Features</span>
268 </h3>268 </h3>
269 <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.3/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.6/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.3/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../lib/kernel-10.2.3/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../lib/kernel-10.2.3/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../lib/kernel-10.2.3/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.3/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.3/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="8733955480-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8733955480-2">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·110,·SHA:·087b4c56593b6bb9d83174fbe002059cad2cdaeab2fcf58a2163d52967fb1de4·...·]-1">)</span><span·class="p">.</span><span·class="w">269 <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.3/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.6/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.3/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../lib/kernel-10.2.3/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../lib/kernel-10.2.3/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../lib/kernel-10.2.3/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.3/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.3/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="8643012812-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8643012812-2">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·110,·SHA:·ca0e9417d80ab0deeaaf881e06ec74d08fa57558cf20f3787bb05542ca79a52e·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
270 </span><span·class="nf">update</span><span·class="p"·data-group-id="8733955480-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8733955480-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</sp[·...·truncated·by·diffoscope;·len:·194,·SHA:·f4b5abaad65e098e12c8ed5c877cddcc2ac1a8e0c627069ebb43a571d12747fe·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">270 </span><span·class="nf">update</span><span·class="p"·data-group-id="8643012812-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8643012812-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</sp[·...·truncated·by·diffoscope;·len:·194,·SHA:·a93f3f57296e1888c547d8b034808ebf47c25f692dbdf311effd46f05b370083·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
271 ····</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="8733955480-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="8733955480-5">}</span><span·class="p">,</span><span·class="w">271 ····</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="8643012812-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="8643012812-5">}</span><span·class="p">,</span><span·class="w">
272 ····</span><span·class="k">if</span><span·class="w">272 ····</span><span·class="k">if</span><span·class="w">
273 ········</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">273 ········</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">
274 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8733955480-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="8733955480-6">}</span><span·class="p">;</span><span·class="w">274 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8643012812-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="8643012812-6">}</span><span·class="p">;</span><span·class="w">
275 ········</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">275 ········</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">
276 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8733955480-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="8733955480-7">}</span><span·class="p">;</span><span·class="w">276 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8643012812-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="8643012812-7">}</span><span·class="p">;</span><span·class="w">
277 ········</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">277 ········</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">
278 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8733955480-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="8733955480-8">}</span><span·class="w">278 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="8643012812-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="8643012812-8">}</span><span·class="w">
279 ····</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·external279 ····</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
280 resource·by·passing·an·atom·(or·a·string)·as·first·argument·to280 resource·by·passing·an·atom·(or·a·string)·as·first·argument·to
281 <a·href="erlang.html#open_port/2"><code·class="inline">open_port()</code></a>,·implemented·by·the·vanilla·driver,281 <a·href="erlang.html#open_port/2"><code·class="inline">open_port()</code></a>,·implemented·by·the·vanilla·driver,
282 has·been·removed.·This·feature·has·been·scheduled·for·removal·in·OTP·27282 has·been·removed.·This·feature·has·been·scheduled·for·removal·in·OTP·27
283 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.3/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·to283 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.3/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
284 that·a·few·details·were·fixed:</p><ul><li><a·href="../../../lib/kernel-10.2.3/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>284 that·a·few·details·were·fixed:</p><ul><li><a·href="../../../lib/kernel-10.2.3/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>
285 that·is·a·&quot;category&quot;,·not·an·item.</li><li><a·href="../../../lib/kernel-10.2.3/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·by285 that·is·a·&quot;category&quot;,·not·an·item.</li><li><a·href="../../../lib/kernel-10.2.3/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 3218, 17 lines modifiedOffset 3218, 17 lines modified
3218 markedly·so·when·the·maximum·number·of·file·descriptors·has·been·tuned·to·a3218 markedly·so·when·the·maximum·number·of·file·descriptors·has·been·tuned·to·a
3219 large·number.</p><p>Instead,·in·erl_child_setup,·walk·the·open·descriptors·under·<code·class="inline">/dev/fd</code>·and3219 large·number.</p><p>Instead,·in·erl_child_setup,·walk·the·open·descriptors·under·<code·class="inline">/dev/fd</code>·and
3220 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.1/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>3220 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.1/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>
3221 module.</p><p>Own·Id:·OTP-16327</p></li><li><p>As·announced·in·OTP·22.0,·the·previously·existing·limited·support·for·VxWorks3221 module.</p><p>Own·Id:·OTP-16327</p></li><li><p>As·announced·in·OTP·22.0,·the·previously·existing·limited·support·for·VxWorks
3222 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·to3222 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
3223 <a·href="erlang.html#decode_packet/3"><code·class="inline">erlang:decode_packet/3</code></a>·and·<a·href="../../../lib/kernel-10.2.3/doc/html/inet.html#setopts/2"><code·class="inline">inet:setopts/2</code></a>·has·been·changed·to·also·include3223 <a·href="erlang.html#decode_packet/3"><code·class="inline">erlang:decode_packet/3</code></a>·and·<a·href="../../../lib/kernel-10.2.3/doc/html/inet.html#setopts/2"><code·class="inline">inet:setopts/2</code></a>·has·been·changed·to·also·include
3224 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">3224 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">
3225 ······</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">decode_packet</span><span·class="p"·data-group-id="3709634420-1">(</span><span·class="ss">httph_bin</span><span·class="p">,</span><span·class="p"·data-group-id="3709634420-2">&lt;&lt;</span><span·class="s">&quot;HELLO:3225 ······</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">decode_packet</span><span·class="p"·data-group-id="2681557504-1">(</span><span·class="ss">httph_bin</span><span·class="p">,</span><span·class="p"·data-group-id="2681557504-2">&lt;&lt;</span><span·class="s">&quot;HELLO:
3226 ······hi\r\n\r\n&quot;</span><span·class="p"·data-group-id="3709634420-2">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="3709634420-3">[</span><span·class="p"·data-group-id="3709634420-3">]</span><span·class="p"·data-group-id="3709634420-1">)</span><span·class="p">.</span><span·class="w"> 
3227 ······</span><span·class="p"·data-group-id="3709634420-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3709634420-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:·245e2010af0ec8c12990be8ee2db3766c557701f4b4a7b26d65f2e32545a364f·...·]3226 ······hi\r\n\r\n&quot;</span><span·class="p"·data-group-id="2681557504-2">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="2681557504-3">[</span><span·class="p"·data-group-id="2681557504-3">]</span><span·class="p"·data-group-id="2681557504-1[·...·truncated·by·diffoscope;·len:·50,·SHA:·7c76ffcbdd2b9b0809992215d4bc03869c03819d4f2872424fd7856db727c221·...·]
 3227 ······</span><span·class="p"·data-group-id="2681557504-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2681557504-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="2681557504-6">&lt;&lt;</span><span·class="s">&quot;Hello&quot;</span><span·class="p"·data-group-id="2681557504-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="2681557504-7">&lt;&lt;</span><span·class="s">&quot;HELLO&quot;</span><span·class="p"·data-group-id="2681557504-7">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="2681557504-8">&lt;&lt;</span><span·class="s">&quot;hi&quot;</span><span·class="p"·data-group-id="2681557504-8">&gt;&gt;</span><span·class="p"·data-group-id="2681557504-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="2681557504-9">&lt;&lt;</span><span·class="s">&quot;\r\n&quot;</span><span·class="p"·data-group-id="2681557504-9">&gt;&gt;</span><span·class="p"·data-group-id="2681557504-4">}</span></code></pre><p>Own·Id:·OTP-16347·Aux·Id:·PR-2466</p></li><li><p>Ensure·<a·href="../../../lib/kernel-10.2.3/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
3228 connection·before·<code·class="inline">nodeup</code>·messages·of·a·reestablished·connection·toward·the3228 connection·before·<code·class="inline">nodeup</code>·messages·of·a·reestablished·connection·toward·the
3229 same·node.</p><p>Own·Id:·OTP-16362</p></li><li><p>Update·of·<a·href="../../../lib/kernel-10.2.3/doc/html/seq_trace.html#whatis">sequential·tracing</a>·to·also·support·other3229 same·node.</p><p>Own·Id:·OTP-16362</p></li><li><p>Update·of·<a·href="../../../lib/kernel-10.2.3/doc/html/seq_trace.html#whatis">sequential·tracing</a>·to·also·support·other
3230 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·file3230 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
3231 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·supported3231 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
3232 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·maps3232 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
3233 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·argument3233 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
3234 <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,3234 <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 10935, 20 lines modifiedOffset 10935, 20 lines modified
10935 <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>·behaved10935 <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
10936 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could10936 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could
10937 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you10937 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you
10938 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·be10938 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
10939 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink10939 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink
10940 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or10940 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or
10941 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did10941 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did
10942 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="6436295622-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="6436295622-1">)</span><span·class="p">,</span><span·class="w">10942 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="7331514843-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="7331514843-1">)</span><span·class="p">,</span><span·class="w">
10943 ············</span><span·class="c1">%%·...</span><span·class="w">10943 ············</span><span·class="c1">%%·...</span><span·class="w">
10944 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="6436295622-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="6436295622-2">)</span><span·class="p">,</span><span·class="w">10944 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="7331514843-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="7331514843-2">)</span><span·class="p">,</span><span·class="w">
10945 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="6436295622-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="6436295622-3">)</span><span·class="p">,</span><span·class="w">10945 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="7331514843-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="7331514843-3">)</span><span·class="p">,</span><span·class="w">
10946 ············</span><span·class="k">receive</span><span·class="w">10946 ············</span><span·class="k">receive</span><span·class="w">
10947 ················</span><span·class="p"·data-group-id="6436295622-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:·e58f59693cd604ae042dba784496734b32b2313a6c413607b296261658fa7035·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">10947 ················</span><span·class="p"·data-group-id="7331514843-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:·83f02f15eb85d5d34088fbe759dfcf97422cb6d4df3e14bfac98a1888bc47ed9·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">
10948 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">10948 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">
10949 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">10949 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">
10950 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">10950 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">
10951 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">10951 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">
10952 ············</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·contents10952 ············</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
10953 would·be·appended·to·the·end·of·the·command·line·even·if·the·command·line·had10953 would·be·appended·to·the·end·of·the·command·line·even·if·the·command·line·had
10954 an·<code·class="inline">-extra</code>·options.·Changed·to·place·the·options·from·<code·class="inline">ERL_FLAGS</code>·just·before10954 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.3/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="9208945608-1">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="9208945608-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="6853317268-1">(</span><span·class="ss">scheduler_id</span><span·class="p"·data-group-id="6853317268-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="9208945608-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="9208945608-3">(</span><span·class="o">?[·...·truncated·by·diffoscope;·len:·129,·SHA:·74b8447c7e14b424989633d54d5ef7ba4ae48d43fbe2983e7be6e0131036c7b8·...·]8-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="6853317268-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="6853317268-3">(</span><span·class="o">?[·...·truncated·by·diffoscope;·len:·129,·SHA:·3dd14e1326a6b60c241129db85a8fae815ff0cdc22ecc9ac11f4a92a815da8dd·...·]8-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="9208945608-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="9208945608-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="6853317268-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="6853317268-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.3/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="6085108074-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="5942284590-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="6085108074-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="5942284590-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.3/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="7559689058-1">(</span><span·class="p"·data-group-id="7559689058-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="5849434544-1">(</span><span·class="p"·data-group-id="5849434544-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="7559689058-2">(</span><span·class="p"·data-group-id="7559689058-3">[</span><span·class="ss">monotonic</span><span·class="p"·data-group-id="7559689058-3">]</span><span·class="p"·data-group-id="7559689058-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="5849434544-2">(</span><span·class="p"·data-group-id="5849434544-3">[</span><span·class="ss">monotonic</span><span·class="p"·data-group-id="5849434544-3">]</span><span·class="p"·data-group-id="5849434544-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="7559689058-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="7559689058-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="5849434544-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="5849434544-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.3/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="1676471512-1">(</span><span·class="p"·data-group-id="1676471512-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="9677182167-1">(</span><span·class="p"·data-group-id="9677182167-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="1676471512-2">(</span><span·class="p"·data-group-id="1676471512-2">)</span><span·class="p">,</span><span·class="w">153 ····</span><span·class="nf">lots</span><span·class="p"·data-group-id="9677182167-2">(</span><span·class="p"·data-group-id="9677182167-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="1676471512-3">(</span><span·class="p"·data-group-id="1676471512-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="9677182167-3">(</span><span·class="p"·data-group-id="9677182167-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="1676471512-4">(</span><span·class="p"·data-group-id="1676471512-4">)</span><span·class="p">.</span><span·class="w">156 ····</span><span·class="nf">&#39;of&#39;</span><span·class="p"·data-group-id="9677182167-4">(</span><span·class="p"·data-group-id="9677182167-4">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">&#39;of&#39;</span><span·class="p"·data-group-id="1676471512-5">(</span><span·class="p"·data-group-id="1676471512-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="9677182167-5">(</span><span·class="p"·data-group-id="9677182167-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="1676471512-6">(</span><span·class="p"·data-group-id="1676471512-6">)</span><span·class="p">.</span><span·class="w">158 ····</span><span·class="nf">indirections</span><span·class="p"·data-group-id="9677182167-6">(</span><span·class="p"·data-group-id="9677182167-6">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">indirections</span><span·class="p"·data-group-id="1676471512-7">(</span><span·class="p"·data-group-id="1676471512-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="9677182167-7">(</span><span·class="p"·data-group-id="9677182167-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="1676471512-8">(</span><span·class="mi">10</span><span·class="p"·data-group-id="1676471512-8">)</span><span·class="p">.</span><span·class="w">160 ····</span><span·class="nf">bar</span><span·class="p"·data-group-id="9677182167-8">(</span><span·class="mi">10</span><span·class="p"·data-group-id="9677182167-8">)</span><span·class="p">.</span><span·class="w">
  
161 </span><span·class="nf">bar</span><span·class="p"·data-group-id="1676471512-9">(</span><span·class="mi">0</span><span·class="p"·data-group-id="1676471512-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="9677182167-9">(</span><span·class="mi">0</span><span·class="p"·data-group-id="9677182167-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="1676471512-10">(</span><span·class="n">N</span><span·class="p"·data-group-id="1676471512-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="9677182167-10">(</span><span·class="n">N</span><span·class="p"·data-group-id="9677182167-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="1676471512-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="1676471512-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="9677182167-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="9677182167-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.3/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="6015455828-1">(</span><span·class="p"·data-group-id="6015455828-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="7240083832-1">(</span><span·class="p"·data-group-id="7240083832-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="6015455828-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="6015455828-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="7240083832-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="7240083832-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="6015455828-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="6015455828-3">)</span><span·class="w">·</span><span·class="p">-&gt;</[·...·truncated·by·diffoscope;·len:·123,·SHA:·330f8ab7503bcf99c0e16aeda5a15284d1ee3ec6f77eef26b8c303244980530f·...·]-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="7240083832-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="7240083832-3">)</span><span·class="w">·</span><span·class="p">-&gt;</[·...·truncated·by·diffoscope;·len:·123,·SHA:·2878dfda55fa114a91a0cc0b981020f1048405b43ff7f9ecb171c61105913d9d·...·]-4">]</span><span·class="p">;</span><span·class="w">
138 ··············</span><span·class="p"·data-group-id="6015455828-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="6015455828-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">138 ··············</span><span·class="p"·data-group-id="7240083832-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="7240083832-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ·················</span><span·class="p"·data-group-id="6015455828-6">[</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="6015455828-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:·52871b36db577bf28844c891c7fa493394d80aee2b5810829db6e94a69c08589·...·]-6">]</span><span·class="w">139 ·················</span><span·class="p"·data-group-id="7240083832-6">[</span><span·class="nc">zlib</span><span·class="p">:</span><span·class="nf">deflate</span><span·class="p"·data-group-id="7240083832-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:·f2ad51142388f4e9fca37c3769c7ceefe4c00b988a47b4afa22ba06257372268·...·]-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="6015455828-10">(</span><span·class="n">Read</span><span·class="p"·data-group-id="6015455828-11">(</span><span·class="p"·data-group-id="6015455828-11">)</span><span·class="p">,</span><span·class="n">Compress</span><span·class="p"·data-group-id="6015455828-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="7240083832-10">(</span><span·class="n">Read</span><span·class="p"·data-group-id="7240083832-11">(</span><span·class="p"·data-group-id="7240083832-11">)</span><span·class="p">,</span><span·class="n">Compress</span><span·class="p"·data-group-id="7240083832-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="6015455828-12">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6015455828-13">[</span><span·class="p"·data-group-id="6015455828-13">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·66,·SHA:·fea9aa1f949fdbe3c22224386832dce309d04b4e246af131fad1bb2d7deaeebe·...·]-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="7240083832-12">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7240083832-13">[</span><span·class="p"·data-group-id="7240083832-13">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·66,·SHA:·b638b66a9d6a1ba266de1d822ce5248f0e1f889f081a244da91138c8c5fc3a43·...·]-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="6015455828-14">(</span><span·class="n">Z</span><span·class="p"·data-group-id="6015455828-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="7240083832-14">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7240083832-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="6015455828-15">(</span><span·class="n">Z</span><span·class="p"·data-group-id="6015455828-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="7240083832-15">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7240083832-15">)</span><span·class="p">,</span><span·class="w">
145 </span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="6015455828-16">(</span><span·class="p"·data-group-id="6015455828-17">[</span><span·class="n">Compressed</span><span·class="p">|</span><span·class="n">Last</span><span·class="p"·data-group-id="6015455828-17">]</span><span·class="p"·data-group-id="6015455828-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="7240083832-16">(</span><span·class="p"·data-group-id="7240083832-17">[</span><span·class="n">Compressed</span><span·class="p">|</span><span·class="n">Last</span><span·class="p"·data-group-id="7240083832-17">]</span><span·class="p"·data-group-id="7240083832-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="2164880992-1">(</span><span·class="n">Z</span><span·class="p"·data-group-id="2164880992-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="7788726259-1">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7788726259-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="2164880992-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="2164880992-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="7788726259-2">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="7788726259-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="2164880992-3">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="p"·data-group-id="2164880992-4">&lt;&lt;</span><span·class="w">·</span><span·class="p"·data-group-id="2164880992-4">&gt;&gt;</span><span·class="p">,</span><span·class="ss">f[·...·truncated·by·diffoscope;·len:·53,·SHA:·bef432c05156e4499b9cbd77f0ac7592e109a978e25719214f6c40b18b1c6312·...·]-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="7788726259-3">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="p"·data-group-id="7788726259-4">&lt;&lt;</span><span·class="w">·</span><span·class="p"·data-group-id="7788726259-4">&gt;&gt;</span><span·class="p">,</span><span·class="ss">f[·...·truncated·by·diffoscope;·len:·53,·SHA:·de8ea0f6dbc074e7fc147882d5554537d1e42367b844ee1b592078096104b4f2·...·]-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="2164880992-5">(</span><span·class="n">Z</span><span·class="p"·data-group-id="2164880992-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="7788726259-5">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7788726259-5">)</span><span·class="p">,</span><span·class="w">
838 </span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="2164880992-6">(</span><span·class="p"·data-group-id="2164880992-7">[</span><span·class="n">B1</span><span·class="p">,</span><span·class="n">B2</span><span·class="p"·data-group-id="2164880992-7">]</span><span·class="p"·data-group-id="2164880992-6">)</span></code></pre>838 </span><span·class="nf">list_to_binary</span><span·class="p"·data-group-id="7788726259-6">(</span><span·class="p"·data-group-id="7788726259-7">[</span><span·class="n">B1</span><span·class="p">,</span><span·class="n">B2</span><span·class="p"·data-group-id="7788726259-7">]</span><span·class="p"·data-group-id="7788726259-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="2679806171-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="2679806171-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="4966480222-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="4966480222-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="2679806171-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="2679806171-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="4966480222-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="4966480222-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1358 ··········</span><span·class="p"·data-group-id="2679806171-3">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2679806171-4">{</span><span·class="p"·data-group-id="2679806171-5">{</span><span·class="ss">need_dictionary</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·245,·SHA:·eb329a3328cc1c9172a64053dc4590b7a693e0838813b989010c5bf7f0577f66·...·]-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1358 ··········</span><span·class="p"·data-group-id="4966480222-3">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4966480222-4">{</span><span·class="p"·data-group-id="4966480222-5">{</span><span·class="ss">need_dictionary</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·245,·SHA:·103f02df8e6a59a0a4af3bce19feefc2d72c1806a1e9faaa99286975dcef3f74·...·]-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="2679806171-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="2679806171-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="4966480222-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="4966480222-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="2679806171-7">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2679806171-8">[</span><span·class="p"·data-group-id="2679806171-8">]</span><span·class="p"·data-group-id="2679806171-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="4966480222-7">(</span><span·class="n">Z</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4966480222-8">[</span><span·class="p"·data-group-id="4966480222-8">]</span><span·class="p"·data-group-id="4966480222-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="2679806171-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="2679806171-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="4966480222-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="4966480222-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="2679806171-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="2679806171-11">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·300,·SHA:·06d6aac42fe5143c6ec4c184ac539f163b16789cfbf417dac5b1d64fe041d909·...·]-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="4966480222-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="4966480222-11">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·300,·SHA:·707a1b4121df67b5492ca143e687f98364bd3adc7ff804a156102e820c6f776a·...·]-10">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1366 ········</span><span·class="p"·data-group-id="2679806171-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:·fa931984fb83ed40b17c6f96e381321df0ddeb6c0afdba7e01a16cbc8d727f7d·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1366 ········</span><span·class="p"·data-group-id="4966480222-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:·1c9d0052f851d43a3906471928f1cc25e3772c9739215580f890f6d42b03e4a3·...·]-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="2679806171-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="2679806171-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="4966480222-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="4966480222-14">)</span><span·class="p">,</span><span·class="w">
1368 ············</span><span·class="p"·data-group-id="2679806171-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="2679806171-16">(</[·...·truncated·by·diffoscope;·len:·280,·SHA:·9854677125bac936aea13bd6bfc870d7cc7865ef9cee10eb9e6c2c4130a8c6dc·...·]-15">]</span><span·class="p">;</span><span·class="w">1368 ············</span><span·class="p"·data-group-id="4966480222-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="4966480222-16">(</[·...·truncated·by·diffoscope;·len:·280,·SHA:·b5a6503c42e5dc8588af4b03180f2c413e45614f390299f19a31d645116b97a6·...·]-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="7924472948-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="7924472948-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="0533083783-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="0533083783-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="7924472948-2">(</span><span·class="p"·data-group-id="7924472948-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="0533083783-2">(</span><span·class="p"·data-group-id="0533083783-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="7924472948-3">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7924472948-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="0533083783-3">(</span><span·class="n">Z</span><span·class="p"·data-group-id="0533083783-3">)</span><span·class="p">,</span><span·class="w">
1444 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="7924472948-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:·04522309c4854804c646fdd702ab49d671ae8437e078af024a7697753ce35214·...·]-4">)</span><span·class="p">,</span><span·class="w">1444 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0533083783-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:·cd03a695a5239faef8077927bc0e29105d7322d48a2cd250329a385d263f2cf5·...·]-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="7924472948-6">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7924472948-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="0533083783-6">(</span><span·class="n">Z</span><span·class="p"·data-group-id="0533083783-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="7924472948-7">(</span><span·class="n">Z</span><span·class="p"·data-group-id="7924472948-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="0533083783-7">(</span><span·class="n">Z</span><span·class="p"·data-group-id="0533083783-7">)</span><span·class="p">.</span><span·class="w">
  
1447 </span><span·class="nf">loop</span><span·class="p"·data-group-id="7924472948-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="7924472948-9">{</span><span·class="ss">continue</span[·...·truncated·by·diffoscope;·len:·172,·SHA:·083a0f3406b63e6f2763780071c275e74b7940dcbb935d17649a0d553899c144·...·]-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="0533083783-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="0533083783-9">{</span><span·class="ss">continue</span[·...·truncated·by·diffoscope;·len:·172,·SHA:·9f1cbf6043bc00d995064f741a0ef3480ec472979f48f16a0260e8bb9eff3ffe·...·]-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="7924472948-10">(</span><span·class="n">Output</span><span·class="p"·data-group-id="7924472948-10">)</span><span·class="p">,</span><span·class="w">1448 ····</span><span·class="n">Handler</span><span·class="p"·data-group-id="0533083783-10">(</span><span·class="n">Output</span><span·class="p"·data-group-id="0533083783-10">)</span><span·class="p">,</span><span·class="w">
1449 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="7924472948-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:·872c1ae8f495ed00e7a7f7b17c194331b767910db6776a63a68e158a02f8b799·...·]-11">)</span><span·class="p">;</span><span·class="w">1449 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="0533083783-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:·8ce4bd9d82715816903de36051113bdf46ba44f1091154683311eff541d3f025·...·]-11">)</span><span·class="p">;</span><span·class="w">
1450 </span><span·class="nf">loop</span><span·class="p"·data-group-id="7924472948-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="7924472948-15">{</span><span·class="ss">finished</sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·1441c7513a09c8ff4601f83bc751b7be88b2757a2eb06efed9bd9dd72ae1c591·...·]-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="0533083783-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="0533083783-15">{</span><span·class="ss">finished</sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·40444805a578f781a593804320abc3fcb06432264d61d87b876df0f9187742c2·...·]-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="7924472948-16">(</span><span·class="n">Output</span><span·class="p"·data-group-id="7924472948-16">)</span><span·class="p">.</span></code></pre>1451 ····</span><span·class="n">Handler</span><span·class="p"·data-group-id="0533083783-16">(</span><span·class="n">Output</span><span·class="p"·data-group-id="0533083783-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.2/doc/html/asn1.epub
3.09 KB
zipinfo {}
    
Offset 1, 20 lines modifiedOffset 1, 20 lines modified
1 Zip·file·size:·94571·bytes,·number·of·entries:·181 Zip·file·size:·94573·bytes,·number·of·entries:·18
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:54·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:47·mimetype
3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Mar-18·07:54·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Mar-18·08:47·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····88850·bx·defN·25-Mar-18·07:54·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····88850·bx·defN·25-Mar-18·08:47·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1271·bx·defN·25-Mar-18·07:54·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1271·bx·defN·25-Mar-18·08:47·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:54·OEBPS/dist/epub-erlang-ESPT6BQV.css6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:47·OEBPS/dist/epub-erlang-ESPT6BQV.css
7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:54·OEBPS/dist/epub-LSJCIYTM.js7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:47·OEBPS/dist/epub-LSJCIYTM.js
8 ?rw-r--r--··6.1·unx·····2280·bx·defN·25-Mar-18·07:54·OEBPS/content.opf8 ?rw-r--r--··6.1·unx·····2280·bx·defN·25-Mar-18·08:47·OEBPS/content.opf
9 ?rw-r--r--··6.1·unx·····2920·bx·stor·25-Mar-18·07:54·OEBPS/assets/selective_Window2.gif9 ?rw-r--r--··6.1·unx·····2920·bx·stor·25-Mar-18·08:47·OEBPS/assets/selective_Window2.gif
10 ?rw-r--r--··6.1·unx·····4465·bx·stor·25-Mar-18·07:54·OEBPS/assets/selective_TypeList.gif10 ?rw-r--r--··6.1·unx·····4465·bx·stor·25-Mar-18·08:47·OEBPS/assets/selective_TypeList.gif
11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:54·OEBPS/assets/logo.png11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:47·OEBPS/assets/logo.png
12 ?rw-r--r--··6.1·unx·····1340·bx·stor·25-Mar-18·07:54·OEBPS/assets/exclusive_Win_But.gif12 ?rw-r--r--··6.1·unx·····1340·bx·stor·25-Mar-18·08:47·OEBPS/assets/exclusive_Win_But.gif
13 ?rw-r--r--··6.1·unx····29673·bx·defN·25-Mar-18·07:54·OEBPS/asn1ct.xhtml13 ?rw-r--r--··6.1·unx····29673·bx·defN·25-Mar-18·08:47·OEBPS/asn1ct.xhtml
14 ?rw-r--r--··6.1·unx····72980·bx·defN·25-Mar-18·07:54·OEBPS/asn1_spec.xhtml14 ?rw-r--r--··6.1·unx····72980·bx·defN·25-Mar-18·08:47·OEBPS/asn1_spec.xhtml
15 ?rw-r--r--··6.1·unx·····1403·bx·defN·25-Mar-18·07:54·OEBPS/asn1_overview.xhtml15 ?rw-r--r--··6.1·unx·····1403·bx·defN·25-Mar-18·08:47·OEBPS/asn1_overview.xhtml
16 ?rw-r--r--··6.1·unx·····3296·bx·defN·25-Mar-18·07:54·OEBPS/asn1_introduction.xhtml16 ?rw-r--r--··6.1·unx·····3296·bx·defN·25-Mar-18·08:47·OEBPS/asn1_introduction.xhtml
17 ?rw-r--r--··6.1·unx···128588·bx·defN·25-Mar-18·07:54·OEBPS/asn1_getting_started.xhtml17 ?rw-r--r--··6.1·unx···128588·bx·defN·25-Mar-18·08:47·OEBPS/asn1_getting_started.xhtml
18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:54·META-INF/container.xml18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:47·META-INF/container.xml
19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:54·META-INF/com.apple.ibooks.display-options.xml19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:47·META-INF/com.apple.ibooks.display-options.xml
20 18·files,·359110·bytes·uncompressed,·91341·bytes·compressed:··74.6%20 18·files,·359110·bytes·uncompressed,·91343·bytes·compressed:··74.6%
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,·Mar·18·2025·07:54: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,·Mar·18·2025·08:47:42,·uncompressed·size·20,·method=store
2.45 KB
OEBPS/content.opf
2.42 KB
OEBPS/content.opf
Max HTML report size reached
6.35 KB
OEBPS/asn1ct.xhtml
    
Offset 365, 17 lines modifiedOffset 365, 17 lines modified
  
365 <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·is365 <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
366 useful·for·testing·to·ensure·that·the·generated·encode·and·decode366 useful·for·testing·to·ensure·that·the·generated·encode·and·decode
367 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·will367 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
368 mostly·work·for·old·specifications·based·on·the·1997·standard·for·ASN.1,·but368 mostly·work·for·old·specifications·based·on·the·1997·standard·for·ASN.1,·but
369 not·for·most·modern-style·applications.·Another·limitation·is·that·the·<code·class="inline">test</code>369 not·for·most·modern-style·applications.·Another·limitation·is·that·the·<code·class="inline">test</code>
370 functions·may·not·work·if·options·that·change·code·generations·strategies·such370 functions·may·not·work·if·options·that·change·code·generations·strategies·such
371 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"><samp·class="p"·data-group-id="4938640975-1">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="4938640975-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·c[·...·truncated·by·diffoscope;·len:·274,·SHA:·d74ead9ae35d4536dc0271c798f622b003657bb0b41552cf47bbd017cf3b85dc·...·]-2">)</samp><samp·class="p">,</samp><samp·class="w">371 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"><samp·class="p"·data-group-id="9946835090-1">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="9946835090-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·c[·...·truncated·by·diffoscope;·len:·274,·SHA:·34b9ccce56ac3a31cac84a7d5a0e63793679a6718b2a7f14b09b610c119d86c3·...·]-2">)</samp><samp·class="p">,</samp><samp·class="w">
372 </samp><samp·class="p"·data-group-id="4938640975-3">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Bytes</samp><samp·class="p"·data-group-id="4938640975-3">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·a977f9fedad46bbffcb75845eaf30cf0ffcda8a6b1288750d3d71e268cbb0a51·...·]-4">)</samp><samp·class="p">,</samp><samp·class="w">372 </samp><samp·class="p"·data-group-id="9946835090-3">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Bytes</samp><samp·class="p"·data-group-id="9946835090-3">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·a5883729551bf76b5a0b484f84150983bdf9cb7d3f25413cf9879ebdbc3fe32d·...·]-4">)</samp><samp·class="p">,</samp><samp·class="w">
373 </samp><samp·class="p"·data-group-id="4938640975-5">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="4938640975-5">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·b4a013242b5e9d3e10d618478d206fe3ece7759c1c1de95e7a6d531407dc71bf·...·]-6">)</samp><samp·class="p">.</samp></code></pre><p>The·<code·class="inline">test</code>·functions·use·the·<code·class="inline">*.asn1db</code>·files·for·all·included·modules.·If·they373 </samp><samp·class="p"·data-group-id="9946835090-5">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="9946835090-5">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·4ff642144c26a6c0a893b7f42d2c588534ffa86d7178f9742f0f05fb0b3a4da1·...·]-6">)</samp><samp·class="p">.</samp></code></pre><p>The·<code·class="inline">test</code>·functions·use·the·<code·class="inline">*.asn1db</code>·files·for·all·included·modules.·If·they
374 are·located·in·a·different·directory·than·the·current·working·directory,·use·the374 are·located·in·a·different·directory·than·the·current·working·directory,·use·the
375 <code·class="inline">include</code>·option·to·add·paths.·This·is·only·needed·when·automatically·generating375 <code·class="inline">include</code>·option·to·add·paths.·This·is·only·needed·when·automatically·generating
376 values.·For·static·values·using·<code·class="inline">Value</code>·no·options·are·needed.</p>376 values.·For·static·values·using·<code·class="inline">Value</code>·no·options·are·needed.</p>
377 ··</section>377 ··</section>
378 </section>378 </section>
379 <section·class="detail"·id="value/2">379 <section·class="detail"·id="value/2">
  
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.2/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="4298826317-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4298826317-2">[</span><span·class="ss">ber</span><span·class="p"·data-group-id="4298826317-2">]</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·2ac427f14f1f477b9ff7f4e6bc9414490bf9674d15b28f02c1d115edeb5efb5f·...·]-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="0410409198-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0410409198-2">[</span><span·class="ss">ber</span><span·class="p"·data-group-id="0410409198-2">]</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·f5b1580435baa65551601f63d83b9893e66a4ae3802b19475b9337f4a55be4f4·...·]-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="5862203632-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5862203632-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">verbose</span><span·clas[·...·truncated·by·diffoscope;·len:·84,·SHA:·3eb7f0fdf83b0b5adfe3619a50c9d340add0be37802a604cb6d0f6a412ddbc0b·...·]-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="3232777979-1">(</span><span·class="s">&quot;People&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3232777979-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">verbose</span><span·clas[·...·truncated·by·diffoscope;·len:·84,·SHA:·63d477b740790fb4029b802a09b8770fc3894d907452c139b9173adb32690031·...·]-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="5862203632-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="5862203632-3">}</span><span·class="o">--</span><span·class="w">149 </span><span·class="o">--</span><span·class="p"·data-group-id="3232777979-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="3232777979-3">}</span><span·class="o">--</span><span·class="w">
150 </span><span·class="o">--</span><span·class="p"·data-group-id="5862203632-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="5862203632-4">}</span><span·class="o">--</span><span·class="w">150 </span><span·class="o">--</span><span·class="p"·data-group-id="3232777979-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="3232777979-4">}</span><span·class="o">--</span><span·class="w">
151 </span><span·class="o">--</span><span·class="p"·data-group-id="5862203632-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="5862203632-5">}</span><span·class="o">--</span><span·class="w">151 </span><span·class="o">--</span><span·class="p"·data-group-id="3232777979-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="3232777979-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="2015219655-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:·72d03f2b72cb469cd2052e5bd44fea0a773981732e666bfa2dabb1e824e03a92·...·]-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="9753719813-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:·903a6d3e0e00177806b97cb7b5e260770f220061f48b1699f71c80ddf981ecd0·...·]-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="2320465681-1">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="p"·data-group-id="2320465681-2">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="2320465681-2">}</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·5634953cc1b0df63c1a68edeb0e25ae2049efc05dd03112309fe361509ed0b81·...·]-1">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 ···</span><span·class="p"·data-group-id="0968289536-1">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="p"·data-group-id="0968289536-2">{</span><span·class="ss">data</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="0968289536-2">}</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·2e712e84b5347764824da18e270c960b4bcc25b7d13729e53e4f5c5d51269dba·...·]-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="2320465681-3">(</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="2320465681-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="0968289536-3">(</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="0968289536-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
159 ···········</span><span·class="p"·data-group-id="2320465681-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="2320465681-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">159 ···········</span><span·class="p"·data-group-id="0968289536-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">P</span><span·class="p"·data-group-id="0968289536-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ···············</span><span·class="p"·data-group-id="2320465681-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="2320465681-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#[·...·truncated·by·diffoscope;·len:·385,·SHA:·c30f1b78fabdbab2246775ac749c39053b2cb93f854677685a5c7159c95d7bf9·...·]-6">)</span><span·class="p">,</span><span·class="w">160 ···············</span><span·class="p"·data-group-id="0968289536-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="0968289536-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#[·...·truncated·by·diffoscope;·len:·385,·SHA:·7c9e707b982bd27e737a9c386419b1116b494e0772cfd3c98563ac814f23899a·...·]-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="2320465681-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2320465681-9">(</span><span·class="p"·data-group-id="2320465681-9">)</span><span·class="p">,</span><span·class="p"·data-group-id="2320465681-10">{</span><span·class="ss">comma[·...·truncated·by·diffoscope;·len:·157,·SHA:·25f692c7c9df9e2dcceb94f234205c4152c6a0f8293c6d77ce1d327740215f87·...·]-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="0968289536-8">{</span><span·class="nf">self</span><span·class="p"·data-group-id="0968289536-9">(</span><span·class="p"·data-group-id="0968289536-9">)</span><span·class="p">,</span><span·class="p"·data-group-id="0968289536-10">{</span><span·class="ss">comma[·...·truncated·by·diffoscope;·len:·157,·SHA:·56589ef2c7b1199c78bbf4e75ed2aae8675401c81e23a56141d92a45e720e428·...·]-8">}</span><span·class="p">;</span><span·class="w">
162 ···········</span><span·class="p"·data-group-id="2320465681-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="2320465681-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">162 ···········</span><span·class="p"·data-group-id="0968289536-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="0968289536-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="2320465681-12">(</span><span·class="p"·data-group-id="2320465681-13">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="2320465681-13">}</span><span·class="p"·data-group-id="2320465681-12">)</span><span·class="w">163 ···············</span><span·class="nf">exit</span><span·class="p"·data-group-id="0968289536-12">(</span><span·class="p"·data-group-id="0968289536-13">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="0968289536-13">}</span><span·class="p"·data-group-id="0968289536-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="4807060189-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-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·dcfb36b98a41576387c68a2e464d6c08876127b0295caa16dbd9d8422036ac65·...·]-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="6264507824-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-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·dda6740ea3bec379df5bdfbbd12aaa239ff1e51cd2eb8f998bd34c6fffcc9679·...·]-1">}</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="4807060189-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-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·dcfb36b98a41576387c68a2e464d6c08876127b0295caa16dbd9d8422036ac65·...·]-2">}</span><span·class="gp·unselectable">171 </span><span·class="p"·data-group-id="6264507824-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-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·dda6740ea3bec379df5bdfbbd12aaa239ff1e51cd2eb8f998bd34c6fffcc9679·...·]-2">}</span><span·class="gp·unselectable">
172 3&gt;·</span><span·class="p"·data-group-id="4807060189-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bin</span><span·class="p"·data-group-id="4807060189-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#39;[·...·truncated·by·diffoscope;·len:·250,·SHA:·640ec86cb5355279279b9fb7cef0d2d86956228557afc5bab857b12477e21305·...·]-4">)</span><span·class="p">.</span><span·class="w">172 3&gt;·</span><span·class="p"·data-group-id="6264507824-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bin</span><span·class="p"·data-group-id="6264507824-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#39;[·...·truncated·by·diffoscope;·len:·250,·SHA:·b276d1966c05aa9cb3254ff59720804383de1e38e06975a4fc525220c4b3e523·...·]-4">)</span><span·class="p">.</span><span·class="w">
173 </span><span·class="p"·data-group-id="4807060189-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4807060189-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="6264507824-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6264507824-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="4807060189-6">&gt;&gt;</span><span·class="p"·data-group-id="4807060189-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="6264507824-6">&gt;&gt;</span><span·class="p"·data-group-id="6264507824-5">}</span><span·class="gp·unselectable">
175 4&gt;·</span><span·class="p"·data-group-id="4807060189-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Person</span><span·class="p"·data-group-id="4807060189-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#[·...·truncated·by·diffoscope;·len:·248,·SHA:·3a418f8b4699db22e4b28328e14d7891d8036a4fb127c461bf89575a1303433c·...·]-8">)</span><span·class="p">.</span><span·class="w">175 4&gt;·</span><span·class="p"·data-group-id="6264507824-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Person</span><span·class="p"·data-group-id="6264507824-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">&#39;People&#[·...·truncated·by·diffoscope;·len:·248,·SHA:·9078f48fcaaf5a6cf10490c8cbae8434f43dbc860cc381dfe11ed291b2306a0b·...·]-8">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="p"·data-group-id="4807060189-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4807060189-10">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·177,·SHA:·fe1953ceb312f6e88d578e271f2ab0efa2f6a50661632f75a7948eefd15ae3d3·...·]-9">}</span></code></pre><h3·id="module-dependencies"·class="section-heading">176 </span><span·class="p"·data-group-id="6264507824-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6264507824-10">{</span><span·class="ss">&#39;Person&#39;</span><span·class="p">,</span><span·class="s">&quot;Some·Name&quot;</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·177,·SHA:·466b7e10636a98ef6258fe5ce9fdc01a3c8535d7099a41fdb3ef03d9e746cd12·...·]-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="8341819142-1">{</span><span·class="w">·</span><span·class="ss">cheese</span><span·class="w">·</span><span·class="p"·data-group-id="8341819142-2">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8341819142-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="5457023611-1">{</span><span·class="w">·</span><span·class="ss">cheese</span><span·class="w">·</span><span·class="p"·data-group-id="5457023611-2">[</span><span·class="mi">0</span><span·class="p"·data-group-id="5457023611-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="8341819142-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="8341819142-3">]</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="w">·</span><span·class="p"·data-group-id="8341819142-1">}</span><span·class="w">275 ······················</span><span·class="ss">dessert</span><span·class="w">·</span><span·class="p"·data-group-id="5457023611-3">[</span><span·class="mi">1</span><span·class="p"·data-group-id="5457023611-3">]</span><span·class="w">·</span><span·class="n">IA5String</span><span·class="w">·</span><span·class="p"·data-group-id="5457023611-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="4874296429-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="6126175250-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="4874296429-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="6126175250-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="7055524177-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="7055524177-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">MyModule</span>[·...·truncated·by·diffoscope;·len:·267,·SHA:·4e790925da9f1de43514135dab188cb714f457e3749722a0ffd5f73d5a3ac3f2·...·]-2">)</span><span·class="p">,</span></code></pre><h3·id="boolean"·class="section-heading">294 </span><span·class="p"·data-group-id="2047999785-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Bytes</span><span·class="p"·data-group-id="2047999785-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">MyModule</span>[·...·truncated·by·diffoscope;·len:·267,·SHA:·79abc7e3cc120f5e2dd7d010cd2003638d86209c361f386d66d2ba45d863cb34·...·]-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="8551692070-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="8551692070-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="4681806024-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="4681806024-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="8551692070-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="8551692070-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="4681806024-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="4681806024-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="8551692070-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="8551692070-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="4681806024-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="4681806024-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="8551692070-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="8551692070-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="4681806024-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="4681806024-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="8551692070-5">{</span><span·class="nf">red</span><span·class="p"·data-group-id="8551692070-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="8551692070-6">)</span><span·class="p">,</span><span·class="nf">blue</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·332,·SHA:·4309c3911e0153563c6ad04374442f503976ba61f2ef5fcbb4c26d98f811e81f·...·]-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="4681806024-5">{</span><span·class="nf">red</span><span·class="p"·data-group-id="4681806024-6">(</span><span·class="mi">0</span><span·class="p"·data-group-id="4681806024-6">)</span><span·class="p">,</span><span·class="nf">blue</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·332,·SHA:·82493dd3d98797875fa080828f73c6e187ccd966b3afee84a3e79f350a3a20d0·...·]-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 357, 15 lines modifiedOffset 357, 15 lines modified
357 ····<i·class="ri-link-m"·aria-hidden="true"></i>357 ····<i·class="ri-link-m"·aria-hidden="true"></i>
358 ··</a>358 ··</a>
359 ··<span·class="text">BIT·STRING</span>359 ··<span·class="text">BIT·STRING</span>
360 </h3>360 </h3>
361 <p>The·type·<code·class="inline">BIT·STRING</code>·can·be·used·to·model·information·that·is·made·up·of361 <p>The·type·<code·class="inline">BIT·STRING</code>·can·be·used·to·model·information·that·is·made·up·of
362 arbitrary·length·series·of·bits.·It·is·intended·to·be·used·for·selection·of362 arbitrary·length·series·of·bits.·It·is·intended·to·be·used·for·selection·of
363 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">363 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">
364 </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="7276549673-1">{</span><span·class="nf">foo</span><span·class="p"·data-group-id="7276549673-2">(</span><span·class="mi">0</span><span·class="p"·data-group-id="7276549673-2">)</span><span·class="p">,</span><span·class="nf">bar</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·697,·SHA:·df45b9f59c3b0ebd588d0535730ceda464cf2218431aad187a5f9d1b148c2d84·...·]-1">}</span></code></pre><p>The·following·two·notations·are·available·for·representation·of·<code·class="inline">BIT·STRING</code>364 </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="4154187526-1">{</span><span·class="nf">foo</span><span·class="p"·data-group-id="4154187526-2">(</span><span·class="mi">0</span><span·class="p"·data-group-id="4154187526-2">)</span><span·class="p">,</span><span·class="nf">bar</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·697,·SHA:·7a186495fbf7e891ea2b46c59dbe0a303eb46830fe0b1a0fc0b285f7a13e4374·...·]-1">}</span></code></pre><p>The·following·two·notations·are·available·for·representation·of·<code·class="inline">BIT·STRING</code>
365 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·to365 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
366 an·Erlang·bitstring.</li><li>A·list·of·atoms·corresponding·to·atoms·in·the·<code·class="inline">NamedBitList</code>·in·the366 an·Erlang·bitstring.</li><li>A·list·of·atoms·corresponding·to·atoms·in·the·<code·class="inline">NamedBitList</code>·in·the
367 <code·class="inline">BIT·STRING</code>·definition.·A·<code·class="inline">BIT·STRING</code>·with·symbolic·names·is·always·decoded367 <code·class="inline">BIT·STRING</code>·definition.·A·<code·class="inline">BIT·STRING</code>·with·symbolic·names·is·always·decoded
368 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;,368 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;,
369 Bits2Val1·=·[gnu,punk],369 Bits2Val1·=·[gnu,punk],
370 Bits2Val2·=·&lt;&lt;2#1110:4&gt;&gt;,370 Bits2Val2·=·&lt;&lt;2#1110:4&gt;&gt;,
371 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·bits371 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 385, 15 lines modifiedOffset 385, 15 lines modified
385 ····<i·class="ri-link-m"·aria-hidden="true"></i>385 ····<i·class="ri-link-m"·aria-hidden="true"></i>
386 ··</a>386 ··</a>
387 ··<span·class="text">OCTET·STRING</span>387 ··<span·class="text">OCTET·STRING</span>
388 </h3>388 </h3>
389 <p><code·class="inline">OCTET·STRING</code>·is·the·simplest·of·all·ASN.1·types.·<code·class="inline">OCTET·STRING</code>·only·moves·or389 <p><code·class="inline">OCTET·STRING</code>·is·the·simplest·of·all·ASN.1·types.·<code·class="inline">OCTET·STRING</code>·only·moves·or
390 transfers,·for·example,·binary·files·or·other·unstructured·information·complying390 transfers,·for·example,·binary·files·or·other·unstructured·information·complying
391 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">391 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">
392 </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="6408486169-1">(</span><span·class="n">SIZE</span><span·class="p"·data-group-id="6408486169-2">(</span><span·class="mi">28</span><span·class="p"·data-group-id="6408486169-2">)</span><span·class="p"·data-group-id="6408486169-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;,392 </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="7711604270-1">(</span><span·class="n">SIZE</span><span·class="p"·data-group-id="7711604270-2">(</span><span·class="mi">28</span><span·class="p"·data-group-id="7711604270-2">)</span><span·class="p"·data-group-id="7711604270-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;,
393 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·the393 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; 124246/171818 bytes (72.31%) of diff not shown.
117 KB
./usr/share/doc/erlang-doc/html/lib/asn1-5.3.2/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="8435508015-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ExclMessage</span><span·class="p"·data-group-id="8435508015-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:·36eac2c842a2d4f33c755f31c8555608afc32f7dc474092e6ba6db83dcc913bd·...·]-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="7521742557-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ExclMessage</span><span·class="p"·data-group-id="7521742557-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:·2b435ef2bb30cf1e2f412a4acac17dcb3db86909f599228360620731513d8f99·...·]-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="6850033494-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">PartMessage</span><span·class="p"·data-group-id="6850033494-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:·2eb9255c9ec924d44554880ff997beb90df96184afec47df6095544151c5f519·...·]-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="8340959971-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">PartMessage</span><span·class="p"·data-group-id="8340959971-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:·f9c0812ff4513dbeceaf0ca90e32e393479bceb501596c76bc59bf5770269a10·...·]-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="4801425040-1">{</span><span·class="ss">exclusive_decode</span><span·class="p">,</span><span·class="p"·data-group-id="4801425040-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:·8891d76b0cc7bdd12127ec9bb0e427443ceee6fbf8575e322c9abee5e6c1a776·...·]-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="0884102737-1">{</span><span·class="ss">exclusive_decode</span><span·class="p">,</span><span·class="p"·data-group-id="0884102737-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:·4a53a67a5a6f4fa8819ec23b0026f9414089f83cf12c9e7f55aac21849d68d13·...·]-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="4801425040-3">(</span><span·class="p"·data-group-id="4801425040-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="0884102737-3">(</span><span·class="p"·data-group-id="0884102737-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="4801425040-4">[</span><span·class="n">DecodeInstruction</span><span·class="p"·data-group-id="4801425040-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="0884102737-4">[</span><span·class="n">DecodeInstruction</span><span·class="p"·data-group-id="0884102737-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="4801425040-5">{</span><span·class="n">ExclusiveDecodeFunctionName</span><span·class="p">,</span><span·class="n">TypeList</span><span·class="p"·data-group-id="4801425040-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="0884102737-5">{</span><span·class="n">ExclusiveDecodeFunctionName</span><span·class="p">,</span><span·class="n">TypeList</span><span·class="p"·data-group-id="0884102737-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="4801425040-6">(</span><span·class="p"·data-group-id="4801425040-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="0884102737-6">(</span><span·class="p"·data-group-id="0884102737-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="4801425040-7">[</span><span·class="n">TopType</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="4801425040-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="0884102737-7">[</span><span·class="n">TopType</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="0884102737-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="4801425040-8">[</span><span·class="n">Element</span><span·class="p"·data-group-id="4801425040-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="0884102737-8">[</span><span·class="n">Element</span><span·class="p"·data-group-id="0884102737-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="4801425040-9">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">parts</span><span·class="p"·data-group-id="4801425040-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="0884102737-9">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">parts</span><span·class="p"·data-group-id="0884102737-9">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
186 ··········</span><span·class="p"·data-group-id="4801425040-10">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">undecoded</span><span·class="p"·data-group-id="4801425040-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">186 ··········</span><span·class="p"·data-group-id="0884102737-10">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="ss">undecoded</span><span·class="p"·data-group-id="0884102737-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
187 ··········</span><span·class="p"·data-group-id="4801425040-11">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="4801425040-11">}</span><span·class="w">187 ··········</span><span·class="p"·data-group-id="0884102737-11">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="n">ElementList</span><span·class="p"·data-group-id="0884102737-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="4801425040-12">(</span><span·class="p"·data-group-id="4801425040-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="0884102737-12">(</span><span·class="p"·data-group-id="0884102737-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="4801425040-13">(</span><span·class="p"·data-group-id="4801425040-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="0884102737-13">(</span><span·class="p"·data-group-id="0884102737-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="7965311120-1">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7965311120-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">asn1config</span><span·class[·...·truncated·by·diffoscope;·len:·144,·SHA:·9c312ad2c3a3b4ef54b71b310c5fd52be0f881d76e457e452e3a06aff82cfb38·...·]-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="4513511363-1">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4513511363-2">[</span><span·class="ss">ber</span><span·class="p">,</span><span·class="ss">asn1config</span><span·class[·...·truncated·by·diffoscope;·len:·144,·SHA:·bb6bdad24980a7d7d5e2dbd2fa17da83c14040faa5a861fd476b556e092e9dd3·...·]-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="7965311120-3">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p"·data-group-id="7965311120-3">)</span><span·class="p">.</span><span·class="w">266 2&gt;·</span><span·class="nf">rr</span><span·class="p"·data-group-id="4513511363-3">(</span><span·class="ss">&#39;GUI&#39;</span><span·class="p"·data-group-id="4513511363-3">)</span><span·class="p">.</span><span·class="w">
267 </span><span·class="p"·data-group-id="7965311120-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="7965311120-4">]</span><span·class="gp·unselectable">267 </span><span·class="p"·data-group-id="4513511363-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="4513511363-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="7965311120-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="7965311120-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="4513511363-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="4513511363-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="7965311120-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:·b41b79ec115c0acdef44b91bc3580b37a4efccc078a5953a07e33c431dde4a5a·...·]-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="4513511363-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:·4a60a3cb5fbce6f179fcc64ce2109ce759ab2387142fb9d5fdc8c6680956aa61·...·]-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="7965311120-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="7965311120-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="4513511363-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="4513511363-7">)</span><span·class="p">.</span><span·class="w">
271 </span><span·class="p"·data-group-id="7965311120-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:·5c98d9539d4c892103c0376d9eb2dcf0937f33f0ac173f65665bf32dcd3b24b5·...·]-8">&gt;&gt;</span><span·class="gp·unselectable">271 </span><span·class="p"·data-group-id="4513511363-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:·2f5b75a904e8fa190ffb01d488780047b2ea6d3f8f84b77dd45a0fe873900bc4·...·]-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="7965311120-9">(</span><span·class="n">ButtonBytes</span><span·class="p"·data-group-id="7965311120-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="4513511363-9">(</span><span·class="n">ButtonBytes</span><span·class="p"·data-group-id="4513511363-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="7965311120-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="7965311120-11">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·a101cbdb93f07e109b1927b35d74c5601e2ad403afa785824f2802edf3e97335·...·]-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="4513511363-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="4513511363-11">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·40e45c180f9c7a0f5b097a90dcc0a53ec6cbaa2a88a9749ddbea84c04fa828ad·...·]-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="7965311120-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="4513511363-10">}</span><span·class="gp·unselectable">
275 6&gt;·</span><span·class="p"·data-group-id="7965311120-13">{</span><span·class="n">UndecKey</span><span·class="p">,</span><span·class="n">UndecBytes</span><span·class="p"·data-group-id="7965311120-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="4513511363-13">{</span><span·class="n">UndecKey</span><span·class="p">,</span><span·class="n">UndecBytes</span><span·class="p"·data-group-id="4513511363-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="7965311120-14">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7965311120-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:·72fc997763ddbf616a0473d13491056e38d9d6b755c202397ab66fe7b0067c6a·...·]-14">}</span><span·class="gp·unselectable">276 </span><span·class="p"·data-group-id="4513511363-14">{</span><span·class="ss">&#39;Button_number&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4513511363-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:·12a9cf41255ef87f8621b58d0f57ea246fae712b5c4296bfadd303f276ea1279·...·]-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="7965311120-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="7965311120-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="4513511363-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="4513511363-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="7965311120-17">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="p"·data-group-id="7965311120-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="4513511363-17">{</span><span·class="ss">status</span><span·class="p">,</span><span·class="p"·data-group-id="4513511363-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="7965311120-19">[</span><span·class="p"·data-group-id="7965311120-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="7965311[·...·truncated·by·diffoscope;·len:·3,·SHA:·2abaca4911e68fa9bfbf3482ee797fd5b9045b841fdff7253557c5fe15de6477·...·]-20">}</span><span·class="p">,</span><span·class="w">281 ···</span><span·class="p"·data-group-id="4513511363-19">[</span><span·class="p"·data-group-id="4513511363-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="4513511[·...·truncated·by·diffoscope;·len:·3,·SHA:·a43231c2216f23db8d65bbd57e0ce6573654f9a102365cd4b345723f1437ab2b·...·]-20">}</span><span·class="p">,</span><span·class="w">
282 ····</span><span·class="p"·data-group-id="7965311120-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="7965311120-21">}</span><span·class="p">,</span><span·class="w">282 ····</span><span·class="p"·data-group-id="4513511363-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="4513511363-21">}</span><span·class="p">,</span><span·class="w">
283 ····</span><span·class="p"·data-group-id="7965311120-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="7965311120-22">}</span><span·class="p">,</span><span·class="w">283 ····</span><span·class="p"·data-group-id="4513511363-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="4513511363-22">}</span><span·class="p">,</span><span·class="w">
284 ····</span><span·class="p"·data-group-id="7965311120-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="7965311120-23">}</span><span·class="p">,</span><span·class="w">284 ····</span><span·class="p"·data-group-id="4513511363-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="4513511363-23">}</span><span·class="p">,</span><span·class="w">
285 ····</span><span·class="p"·data-group-id="7965311120-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="7965311120-24">}</span><span·class="p"·data-group-id="796531[·...·truncated·by·diffoscope;·len:·4,·SHA:·829f00a11ddfdebb51b67a913981eddb7937c3f8f01f4140415a24ff1cc29609·...·]-19">]</span><span·class="p">,</span><span·class="w">285 ····</span><span·class="p"·data-group-id="4513511363-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="4513511363-24">}</span><span·class="p"·data-group-id="451351[·...·truncated·by·diffoscope;·len:·4,·SHA:·52558cb584c322ce06bc71777ddf400d2585bec7e64a888334aca9c24b016287·...·]-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="7965311120-25">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="7965311120-26">[</span><span·class="p"·data-group-id="7965311120-27">{</span><span·class="ss">&#39;Action&#39;</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·559,·SHA:·b16a2029b986cd74f006971a1a44bf238206606a3149767b2d5ac7f9d0e0fb3a·...·]-17">}</span><span·class="p">.</span><span·class="w">287 ···</span><span·class="p"·data-group-id="4513511363-25">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="4513511363-26">[</span><span·class="p"·data-group-id="4513511363-27">{</span><span·class="ss">&#39;Action&#39;</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·559,·SHA:·42554dbf3ba0f954e6422f5e35a8d01d522bd89a36eefbffb74094b36dd16332·...·]-17">}</span><span·class="p">.</span><span·class="w">
288 </span><span·class="p"·data-group-id="7965311120-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="7965311120-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="4513511363-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="4513511363-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="7965311120-31">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="7965311120-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:·f0579b905b8d6e0eae0df39408a2c570d30ed65f036ffc493a8e46631477f3f3·...·]-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="4513511363-31">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="4513511363-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:·89dc67cf8f861c2bf96984bae8a88f9f920a61688ba32d997ced142ffecccc46·...·]-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="7965311120-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:·bb8f41b8d89142a6aac7d059ee7d690673d8577de335c8ddee9f14530a1198b8·...·]-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="4513511363-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:·0beddb41d5f2f8c780cd4c9f584adb5ba8c17718bf83a091295b08573740d0b2·...·]-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="7965311120-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:·4392da18c5e16c8e568e0f4771a8fcfea95eeefe65be01d4537753d19e8010f3·...·]-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="4513511363-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:·8aede2de64993db2a44e222a750ed9c665423db6d6cad18879fe5aa257d0898a·...·]-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="7965311120-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:·4392da18c5e16c8e568e0f4771a8fcfea95eeefe65be01d4537753d19e8010f3·...·]-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="4513511363-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:·8aede2de64993db2a44e222a750ed9c665423db6d6cad18879fe5aa257d0898a·...·]-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="7965311120-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:·da42a69f7012cf19c948cb64ac39227fd9fd0624530874ba5a9cc89db5dcb625·...·]-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="4513511363-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:·e4ae24430bb4267bae272ef97b93a81d9cb633d7d327201f499c0f1c25ebd921·...·]-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="7965311120-37">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="7965311120-38">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="7965311120-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="4513511363-37">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="4513511363-38">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="4513511363-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="7965311120-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:·25e592af7cb48df2bc9ea8fdec7285f4911cc5cd8625577f91625125e30daddd·...·]-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="4513511363-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:·2fa3d3c61b486fbef65e66afba4d26370cb0eea9ad403cc42eabe9342fc24b69·...·]-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="7965311120-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="7965311120-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="4513511363-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="4513511363-41">)</span><span·class="p">.</span><span·class="w">
298 </span><span·class="p"·data-group-id="7965311120-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="4513511363-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="7965311120-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="4513511363-42">&gt;&gt;</span><span·class="gp·unselectable">
300 10&gt;·</span><span·class="p"·data-group-id="7965311120-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="7965311120-44">{</span><span·class="ss">buttonList</span><span·class="o">=</span><sp[·...·truncated·by·diffoscope;·len:·300,·SHA:·215aa36f9740223ab15d06843658f3978ab77c58d784f1647fbcc18b52e7b64c·...·]-43">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">300 10&gt;·</span><span·class="p"·data-group-id="4513511363-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="4513511363-44">{</span><span·class="ss">buttonList</span><span·class="o">=</span><sp[·...·truncated·by·diffoscope;·len:·300,·SHA:·7038ccd8b212ac0723ee4a04cd968c4fc16eae5292c576be64e2aeead8a1e653·...·]-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="7965311120-46">(</span><span·class="n">WindowBytes</span><span·class="p"·data-group-id="7965311120-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="4513511363-46">(</span><span·class="n">WindowBytes</span><span·class="p"·data-group-id="4513511363-46">)</span><span·class="p">.</span><span·class="w">
302 </span><span·class="p"·data-group-id="7965311120-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="7965311120-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="4513511363-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="4513511363-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="7965311120-49">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7965311120-50">[</span><span·class="p"·data-group-id="7965311120-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="4513511363-49">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4513511363-50">[</span><span·class="p"·data-group-id="4513511363-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="7965311120-51">&gt;&gt;</span><span·class="p">,</span><span·class="w">304 ·······················································</span><span·class="mi">255</span><span·class="p"·data-group-id="4513511363-51">&gt;&gt;</span><span·class="p">,</span><span·class="w">
305 ·····················································</span><span·class="p"·data-group-id="7965311120-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:·6136afd045f1dddad0f22d1e50717ccf291f412ec7aa6086985a96f779b277c8·...·]-52">&gt;&gt;</span><span·class="p">,</span><span·class="w">305 ·····················································</span><span·class="p"·data-group-id="4513511363-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:·dc7fd121451242b574a354d8f61979c7794d24dffdc86bec97f53a0b6dc87aae·...·]-52">&gt;&gt;</span><span·class="p">,</span><span·class="w">
306 ·····················································</span><span·class="p"·data-group-id="7965311120-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:·507549b1354c7cd8ae911adac6b2bc08578cc8544dbca3431c55c245c09aad04·...·]-53">&gt;&gt;</span><span·class="p">,</span><span·class="w">306 ·····················································</span><span·class="p"·data-group-id="4513511363-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:·92712b6ef36edbee6a268dd4d3fa52f73236c70f1d57e4da786a9e45b2e7efe7·...·]-53">&gt;&gt;</span><span·class="p">,</span><span·class="w">
307 ·····················································</span><span·class="p"·data-group-id="7965311120-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:·507549b1354c7cd8ae911adac6b2bc08578cc8544dbca3431c55c245c09aad04·...·]-54">&gt;&gt;</span><span·class="p">,</span><span·class="w">307 ·····················································</span><span·class="p"·data-group-id="4513511363-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:·92712b6ef36edbee6a268dd4d3fa52f73236c70f1d57e4da786a9e45b2e7efe7·...·]-54">&gt;&gt;</span><span·class="p">,</span><span·class="w">
308 ·····················································</span><span·class="p"·data-group-id="7965311120-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:·050c5c2ff3ba9387a8e3fe8feae76ae9d3d039158a4c3e958a3c0eff14c53e7c·...·]-49">}</span><span·class="p">,</span><span·class="w">308 ·····················································</span><span·class="p"·data-group-id="4513511363-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:·901a455c4eec4e90be8b0f51b955d550f52fc0e24838ddb9c8c82e13e7870f9c·...·]-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="7965311120-56">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7965311120-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="4513511363-56">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4513511363-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="7965311120-57">&gt;&gt;</span><span·class="p"·data-group-id="7965311120-56">}</span><span·class="p"·data-group-id="7965311120-48">}</span><span·class="p"·data-group-id="7965311120-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="4513511363-57">&gt;&gt;</span><span·class="p"·data-group-id="4513511363-56">}</span><span·class="p"·data-group-id="4513511363-48">}</span><span·class="p"·data-group-id="4513511363-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="7965311120-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="7965311120-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="4513511363-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="4513511363-58">)</span><span·class="p">.</span><span·class="w">
314 </span><span·class="p"·data-group-id="7965311120-59">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="7965311120-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:·f0579b905b8d6e0eae0df39408a2c570d30ed65f036ffc493a8e46631477f3f3·...·]-60">}</span><span·class="p">,</span><span·class="w">314 </span><span·class="p"·data-group-id="4513511363-59">[</span><span·class="o">#</span><span·class="ss">&#39;Button&#39;</span><span·class="p"·data-group-id="4513511363-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:·89dc67cf8f861c2bf96984bae8a88f9f920a61688ba32d997ced142ffecccc46·...·]-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="7965311120-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:·bb8f41b8d89142a6aac7d059ee7d690673d8577de335c8ddee9f14530a1198b8·...·]-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="4513511363-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:·0beddb41d5f2f8c780cd4c9f584adb5ba8c17718bf83a091295b08573740d0b2·...·]-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="7965311120-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:·4392da18c5e16c8e568e0f4771a8fcfea95eeefe65be01d4537753d19e8010f3·...·]-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="4513511363-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:·8aede2de64993db2a44e222a750ed9c665423db6d6cad18879fe5aa257d0898a·...·]-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="7965311120-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:·4392da18c5e16c8e568e0f4771a8fcfea95eeefe65be01d4537753d19e8010f3·...·]-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="4513511363-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:·8aede2de64993db2a44e222a750ed9c665423db6d6cad18879fe5aa257d0898a·...·]-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="7965311120-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:·4893424c338ca2b805eab1984629c2a6113152f1220cf120ff0b13b927ee9498·...·]-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="4513511363-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:·e649242075c9b151cf2b16bb926602877bed69e6b2bb42558d10be6a560383e5·...·]-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="7965311120-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="7965311120-66">(</span><span·class="n">UndecWindowParts</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·5337ce8d47c185ae7c343df42e9500121ee14c0625be8df7ff904ea844b0aff5·...·]-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="4513511363-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="4513511363-66">(</span><span·class="n">UndecWindowParts</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·dc0d8926af4540100731963c9c7c4f6cad694491168ad0954e8413aec0412d03·...·]-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="7965311120-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:·4392da18c5e16c8e568e0f4771a8fcfea95eeefe65be01d4537753d19e8010f3·...·]-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="4513511363-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:·8aede2de64993db2a44e222a750ed9c665423db6d6cad18879fe5aa257d0898a·...·]-67">}</span><span·class="gp·unselectable">
321 13&gt;·</span><span·class="p"·data-group-id="7965311120-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="7965311120-69">{</span><span·class="ss">actions</span><span·class="o">=</span><span·[·...·truncated·by·diffoscope;·len:·518,·SHA:·fa3b80de32462538e902c33b86f91cb04e58a1f23c28bfa3ae3145d3edea5a82·...·]-71">)</span><span·class="p">.</span><span·class="w">321 13&gt;·</span><span·class="p"·data-group-id="4513511363-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="4513511363-69">{</span><span·class="ss">actions</span><span·class="o">=</span><span·[·...·truncated·by·diffoscope;·len:·518,·SHA:·4dc1567dc9cfea39425115d450b24d7e208894955d78e2be86ef204daa1cb24d·...·]-71">)</span><span·class="p">.</span><span·class="w">
322 </span><span·class="p"·data-group-id="7965311120-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="7965311120-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="4513511363-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="4513511363-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="7965311120-74">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7965311120-75">[</span><span·class="p"·data-group-id="7965311120-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="4513511363-74">{</span><span·class="ss">&#39;Status_buttonList&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4513511363-75">[</span><span·class="p"·data-group-id="4513511363-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="7965311120-76">&gt;&gt;</span><span·class="p">,</span><span·class="w">324 ·······················································</span><span·class="mi">255</span><span·class="p"·data-group-id="4513511363-76">&gt;&gt;</span><span·class="p">,</span><span·class="w">
325 ·····················································</span><span·class="p"·data-group-id="7965311120-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:·6136afd045f1dddad0f22d1e50717ccf291f412ec7aa6086985a96f779b277c8·...·]-77">&gt;&gt;</span><span·class="p">,</span><span·class="w">325 ·····················································</span><span·class="p"·data-group-id="4513511363-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:·dc7fd121451242b574a354d8f61979c7794d24dffdc86bec97f53a0b6dc87aae·...·]-77">&gt;&gt;</span><span·class="p">,</span><span·class="w">
326 ·····················································</span><span·class="p"·data-group-id="7965311120-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:·507549b1354c7cd8ae911adac6b2bc08578cc8544dbca3431c55c245c09aad04·...·]-78">&gt;&gt;</span><span·class="p">,</span><span·class="w">326 ·····················································</span><span·class="p"·data-group-id="4513511363-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:·92712b6ef36edbee6a268dd4d3fa52f73236c70f1d57e4da786a9e45b2e7efe7·...·]-78">&gt;&gt;</span><span·class="p">,</span><span·class="w">
327 ·····················································</span><span·class="p"·data-group-id="7965311120-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:·507549b1354c7cd8ae911adac6b2bc08578cc8544dbca3431c55c245c09aad04·...·]-79">&gt;&gt;</span><span·class="p">,</span><span·class="w">327 ·····················································</span><span·class="p"·data-group-id="4513511363-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:·92712b6ef36edbee6a268dd4d3fa52f73236c70f1d57e4da786a9e45b2e7efe7·...·]-79">&gt;&gt;</span><span·class="p">,</span><span·class="w">
328 ·····················································</span><span·class="p"·data-group-id="7965311120-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:·05909835b05d0f847df7d329c193bc4f43b2676a7a359534a5b140e4b48dc2fd·...·]-74">}</span><span·class="p">,</span><span·class="w">328 ·····················································</span><span·class="p"·data-group-id="4513511363-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:·9d996359dddda1a9cbf2c7936345cae7f88606af49a7b2232cf216e071ea2970·...·]-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="7965311120-81">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7965311120-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="4513511363-81">{</span><span·class="ss">&#39;Status_actions&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4513511363-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="7965311120-82">&gt;&gt;</span><span·class="p"·data-group-id="7965311120-81">}</span><span·class="p"·data-group-id="7965311120-73">}</span><span·class="p"·data-group-id="7965311120-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="4513511363-82">&gt;&gt;</span><span·class="p"·data-group-id="4513511363-81">}</span><span·class="p"·data-group-id="4513511363-73">}</span><span·class="p"·data-group-id="4513511363-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="7965311120-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="7965311120-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="4513511363-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="4513511363-83">)</span><span·class="p">.</span><span·class="w">
334 </span><span·class="p"·data-group-id="7965311120-84">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="7965311120-85">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="7965311120-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="4513511363-84">{</span><span·class="ss">possibleActions</span><span·class="p">,</span><span·class="p"·data-group-id="4513511363-85">[</span><span·class="o">#</span><span·class="ss">&#39;Action&#39;</span><span·class="p"·data-group-id="4513511363-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="7965311120-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:·277fd96fe00eef67777c0f682affe22944fb136618c460a4b0bf5b2454706bd5·...·]-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="4513511363-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:·b602f8be17298c214fb7b8e2b6d17b1107e115ac3dea08c85af63f2c74004436·...·]-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.2/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="0113788690-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="0113788690-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·274,·SHA:·edf2e7f72819bdca804eae4351741606accf3e75f9e1d81572b8e27184c200e1·...·]-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="3885623317-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="3885623317-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·274,·SHA:·c9dbcbce0c1ff5fa98869fa5b5b0f1735d0409cf8546f021dac908e3008543e8·...·]-2">)</span><span·class="p">,</span><span·class="w">
488 </span><span·class="p"·data-group-id="0113788690-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="0113788690-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·071502cda72bac5bded3e85701152814bfa3995845ace81fb0e205934562a40b·...·]-4">)</span><span·class="p">,</span><span·class="w">488 </span><span·class="p"·data-group-id="3885623317-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="3885623317-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·e8d074f0f84e964af2fda548ceeb0e3409dd6114b8cc8287fcc5b3378e2446b2·...·]-4">)</span><span·class="p">,</span><span·class="w">
489 </span><span·class="p"·data-group-id="0113788690-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="0113788690-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·e3e0197694e253d783386e3d3a236503e9d2fff20a20ca1c38ba7607a23f8542·...·]-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="3885623317-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="3885623317-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·273,·SHA:·f94293adbbc5b7ef91e72db975d41ecfb9c5c3d2a56231750337bc8b0403c8b0·...·]-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">
  
10.3 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/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="7219826048-1">(</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="7219826048-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="9334858068-1">(</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="9334858068-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
219 ····</span><span·class="p"·data-group-id="7219826048-2">{</span><span·class="ss">started</span><span·class="p">,</span><span·class="n">ServerId</span><span·class="p"·data-group-id="7219826048-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_ser[·...·truncated·by·diffoscope;·len:·156,·SHA:·dff594aaa116fd60d333eb766d4451f9ea890cac14f87f57a0106014c0e85049·...·]8-3">)</span><span·class="p">,</span><span·class="w">219 ····</span><span·class="p"·data-group-id="9334858068-2">{</span><span·class="ss">started</span><span·class="p">,</span><span·class="n">ServerId</span><span·class="p"·data-group-id="9334858068-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">my_ser[·...·truncated·by·diffoscope;·len:·156,·SHA:·06a742a8d1673aa3501b103e69e61ff6103b9b08a9779dcf67ec8023f16bced6·...·]8-3">)</span><span·class="p">,</span><span·class="w">
220 ····</span><span·class="p"·data-group-id="7219826048-4">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="7219826048-5">[</span><span·class="p"·data-group-id="7219826048-5">]</span><span·class="p"·data-group-id="7219826048-4">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·268,·SHA:·93102952ec6d72fe60931016159034b391f1abbbce32b4e49339603a037192f2·...·]8-6">)</span><span·class="p">,</span><span·class="w">220 ····</span><span·class="p"·data-group-id="9334858068-4">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="9334858068-5">[</span><span·class="p"·data-group-id="9334858068-5">]</span><span·class="p"·data-group-id="9334858068-4">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·268,·SHA:·c8039c29aa6db83a6cfb4d4ec65a66a3688013802e0a43141f7ac9fb4730e5dd·...·]8-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="7219826048-7">(</span><span·class="p"·data-group-id="7219826048-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="9334858068-7">(</span><span·class="p"·data-group-id="9334858068-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="7219826048-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="7219826048-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="9334858068-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="9334858068-8">)</span><span·class="p">,</span><span·class="w">
223 ····</span><span·class="p"·data-group-id="7219826048-9">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="7219826048-10">[</span><span·class="n">MyId</span><span·class="p"·data-group-id="7219826048-10">]</span><span·class="p"·data-group-id="7219826048-9"[·...·truncated·by·diffoscope;·len:·298,·SHA:·e3388d993d0c95efa86ca709847cea69f7412d06bbd05e3529d912f3ddb91373·...·]8-11">)</span><span·class="p">,</span><span·class="w">223 ····</span><span·class="p"·data-group-id="9334858068-9">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="9334858068-10">[</span><span·class="n">MyId</span><span·class="p"·data-group-id="9334858068-10">]</span><span·class="p"·data-group-id="9334858068-9"[·...·truncated·by·diffoscope;·len:·298,·SHA:·7f5b43bfe544dc03b1858abd7ce2666283fa354d9594fc1e59de0fde124c7cbc·...·]8-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="7219826048-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="7219826048-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="9334858068-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="9334858068-12">)</span><span·class="p">,</span><span·class="w">
225 ····</span><span·class="p"·data-group-id="7219826048-13">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="7219826048-14">[</span><span·class="p"·data-group-id="7219826048-14">]</span><span·class="p"·data-group-id="7219826048-13">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·273,·SHA:·5fddc1bc60deab4b3a200eae990c7c9a1da3c0a5184835162085588a7fca014c·...·]8-15">)</span><span·class="p">,</span><span·class="w">225 ····</span><span·class="p"·data-group-id="9334858068-13">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="9334858068-14">[</span><span·class="p"·data-group-id="9334858068-14">]</span><span·class="p"·data-group-id="9334858068-13">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·273,·SHA:·7fc0f152bb745dc4eb06c7e2992a0d4c10396c7764dddd7bba305c5c9fbaebd4·...·]8-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="7219826048-16">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="7219826048-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="9334858068-16">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="9334858068-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.7/doc/html/common_test.epub
7.43 KB
zipinfo {}
    
Offset 1, 48 lines modifiedOffset 1, 48 lines modified
1 Zip·file·size:·399378·bytes,·number·of·entries:·461 Zip·file·size:·399370·bytes,·number·of·entries:·46
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:53·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:46·mimetype
3 ?rw-r--r--··6.1·unx···103544·bx·defN·25-Mar-18·07:53·OEBPS/write_test_chapter.xhtml3 ?rw-r--r--··6.1·unx···103544·bx·defN·25-Mar-18·08:46·OEBPS/write_test_chapter.xhtml
4 ?rw-r--r--··6.1·unx·····3151·bx·defN·25-Mar-18·07:53·OEBPS/why_test_chapter.xhtml4 ?rw-r--r--··6.1·unx·····3151·bx·defN·25-Mar-18·08:46·OEBPS/why_test_chapter.xhtml
5 ?rw-r--r--··6.1·unx····10048·bx·defN·25-Mar-18·07:53·OEBPS/unix_telnet.xhtml5 ?rw-r--r--··6.1·unx····10048·bx·defN·25-Mar-18·08:46·OEBPS/unix_telnet.xhtml
6 ?rw-r--r--··6.1·unx······728·bx·defN·25-Mar-18·07:53·OEBPS/title.xhtml6 ?rw-r--r--··6.1·unx······728·bx·defN·25-Mar-18·08:46·OEBPS/title.xhtml
7 ?rw-r--r--··6.1·unx·····6485·bx·defN·25-Mar-18·07:53·OEBPS/test_structure_chapter.xhtml7 ?rw-r--r--··6.1·unx·····6485·bx·defN·25-Mar-18·08:46·OEBPS/test_structure_chapter.xhtml
8 ?rw-r--r--··6.1·unx···172128·bx·defN·25-Mar-18·07:53·OEBPS/run_test_chapter.xhtml8 ?rw-r--r--··6.1·unx···172128·bx·defN·25-Mar-18·08:46·OEBPS/run_test_chapter.xhtml
9 ?rw-r--r--··6.1·unx···202817·bx·defN·25-Mar-18·07:53·OEBPS/notes.xhtml9 ?rw-r--r--··6.1·unx···202817·bx·defN·25-Mar-18·08:46·OEBPS/notes.xhtml
10 ?rw-r--r--··6.1·unx·····3287·bx·defN·25-Mar-18·07:53·OEBPS/nav.xhtml10 ?rw-r--r--··6.1·unx·····3287·bx·defN·25-Mar-18·08:46·OEBPS/nav.xhtml
11 ?rw-r--r--··6.1·unx·····2798·bx·defN·25-Mar-18·07:53·OEBPS/introduction.xhtml11 ?rw-r--r--··6.1·unx·····2798·bx·defN·25-Mar-18·08:46·OEBPS/introduction.xhtml
12 ?rw-r--r--··6.1·unx·····1925·bx·defN·25-Mar-18·07:53·OEBPS/install_chapter.xhtml12 ?rw-r--r--··6.1·unx·····1925·bx·defN·25-Mar-18·08:46·OEBPS/install_chapter.xhtml
13 ?rw-r--r--··6.1·unx····20657·bx·defN·25-Mar-18·07:53·OEBPS/getting_started_chapter.xhtml13 ?rw-r--r--··6.1·unx····20657·bx·defN·25-Mar-18·08:46·OEBPS/getting_started_chapter.xhtml
14 ?rw-r--r--··6.1·unx····56479·bx·defN·25-Mar-18·07:53·OEBPS/example_chapter.xhtml14 ?rw-r--r--··6.1·unx····56479·bx·defN·25-Mar-18·08:46·OEBPS/example_chapter.xhtml
15 ?rw-r--r--··6.1·unx····25326·bx·defN·25-Mar-18·07:53·OEBPS/event_handler_chapter.xhtml15 ?rw-r--r--··6.1·unx····25326·bx·defN·25-Mar-18·08:46·OEBPS/event_handler_chapter.xhtml
16 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-erlang-ESPT6BQV.css16 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:46·OEBPS/dist/epub-erlang-ESPT6BQV.css
17 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-LSJCIYTM.js17 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:46·OEBPS/dist/epub-LSJCIYTM.js
18 ?rw-r--r--··6.1·unx····36534·bx·defN·25-Mar-18·07:53·OEBPS/dependencies_chapter.xhtml18 ?rw-r--r--··6.1·unx····36534·bx·defN·25-Mar-18·08:46·OEBPS/dependencies_chapter.xhtml
19 ?rw-r--r--··6.1·unx·····4070·bx·defN·25-Mar-18·07:53·OEBPS/ct_testspec.xhtml19 ?rw-r--r--··6.1·unx·····4070·bx·defN·25-Mar-18·08:46·OEBPS/ct_testspec.xhtml
20 ?rw-r--r--··6.1·unx····63484·bx·defN·25-Mar-18·07:53·OEBPS/ct_telnet.xhtml20 ?rw-r--r--··6.1·unx····63484·bx·defN·25-Mar-18·08:46·OEBPS/ct_telnet.xhtml
21 ?rw-r--r--··6.1·unx····62171·bx·defN·25-Mar-18·07:53·OEBPS/ct_suite.xhtml21 ?rw-r--r--··6.1·unx····62171·bx·defN·25-Mar-18·08:46·OEBPS/ct_suite.xhtml
22 ?rw-r--r--··6.1·unx···159584·bx·defN·25-Mar-18·07:53·OEBPS/ct_ssh.xhtml22 ?rw-r--r--··6.1·unx···159584·bx·defN·25-Mar-18·08:46·OEBPS/ct_ssh.xhtml
23 ?rw-r--r--··6.1·unx····67902·bx·defN·25-Mar-18·07:53·OEBPS/ct_snmp.xhtml23 ?rw-r--r--··6.1·unx····67902·bx·defN·25-Mar-18·08:46·OEBPS/ct_snmp.xhtml
24 ?rw-r--r--··6.1·unx····18764·bx·defN·25-Mar-18·07:53·OEBPS/ct_slave.xhtml24 ?rw-r--r--··6.1·unx····18764·bx·defN·25-Mar-18·08:46·OEBPS/ct_slave.xhtml
25 ?rw-r--r--··6.1·unx····10667·bx·defN·25-Mar-18·07:53·OEBPS/ct_run_cmd.xhtml25 ?rw-r--r--··6.1·unx····10667·bx·defN·25-Mar-18·08:46·OEBPS/ct_run_cmd.xhtml
26 ?rw-r--r--··6.1·unx····20853·bx·defN·25-Mar-18·07:53·OEBPS/ct_rpc.xhtml26 ?rw-r--r--··6.1·unx····20853·bx·defN·25-Mar-18·08:46·OEBPS/ct_rpc.xhtml
27 ?rw-r--r--··6.1·unx····16244·bx·defN·25-Mar-18·07:53·OEBPS/ct_property_test_chapter.xhtml27 ?rw-r--r--··6.1·unx····16244·bx·defN·25-Mar-18·08:46·OEBPS/ct_property_test_chapter.xhtml
28 ?rw-r--r--··6.1·unx····43143·bx·defN·25-Mar-18·07:53·OEBPS/ct_property_test.xhtml28 ?rw-r--r--··6.1·unx····43143·bx·defN·25-Mar-18·08:46·OEBPS/ct_property_test.xhtml
29 ?rw-r--r--··6.1·unx···133642·bx·defN·25-Mar-18·07:53·OEBPS/ct_netconfc.xhtml29 ?rw-r--r--··6.1·unx···133642·bx·defN·25-Mar-18·08:46·OEBPS/ct_netconfc.xhtml
30 ?rw-r--r--··6.1·unx····27158·bx·defN·25-Mar-18·07:53·OEBPS/ct_master_chapter.xhtml30 ?rw-r--r--··6.1·unx····27158·bx·defN·25-Mar-18·08:46·OEBPS/ct_master_chapter.xhtml
31 ?rw-r--r--··6.1·unx····29516·bx·defN·25-Mar-18·07:53·OEBPS/ct_master.xhtml31 ?rw-r--r--··6.1·unx····29516·bx·defN·25-Mar-18·08:46·OEBPS/ct_master.xhtml
32 ?rw-r--r--··6.1·unx····53918·bx·defN·25-Mar-18·07:53·OEBPS/ct_hooks_chapter.xhtml32 ?rw-r--r--··6.1·unx····53918·bx·defN·25-Mar-18·08:46·OEBPS/ct_hooks_chapter.xhtml
33 ?rw-r--r--··6.1·unx····71358·bx·defN·25-Mar-18·07:53·OEBPS/ct_hooks.xhtml33 ?rw-r--r--··6.1·unx····71358·bx·defN·25-Mar-18·08:46·OEBPS/ct_hooks.xhtml
34 ?rw-r--r--··6.1·unx····23974·bx·defN·25-Mar-18·07:53·OEBPS/ct_ftp.xhtml34 ?rw-r--r--··6.1·unx····23974·bx·defN·25-Mar-18·08:46·OEBPS/ct_ftp.xhtml
35 ?rw-r--r--··6.1·unx·····6486·bx·defN·25-Mar-18·07:53·OEBPS/ct_cover.xhtml35 ?rw-r--r--··6.1·unx·····6486·bx·defN·25-Mar-18·08:46·OEBPS/ct_cover.xhtml
36 ?rw-r--r--··6.1·unx···176246·bx·defN·25-Mar-18·07:53·OEBPS/ct.xhtml36 ?rw-r--r--··6.1·unx···176246·bx·defN·25-Mar-18·08:46·OEBPS/ct.xhtml
37 ?rw-r--r--··6.1·unx····19420·bx·defN·25-Mar-18·07:53·OEBPS/cover_chapter.xhtml37 ?rw-r--r--··6.1·unx····19420·bx·defN·25-Mar-18·08:46·OEBPS/cover_chapter.xhtml
38 ?rw-r--r--··6.1·unx·····6685·bx·defN·25-Mar-18·07:53·OEBPS/content.opf38 ?rw-r--r--··6.1·unx·····6685·bx·defN·25-Mar-18·08:46·OEBPS/content.opf
39 ?rw-r--r--··6.1·unx····53522·bx·defN·25-Mar-18·07:53·OEBPS/config_file_chapter.xhtml39 ?rw-r--r--··6.1·unx····53522·bx·defN·25-Mar-18·08:46·OEBPS/config_file_chapter.xhtml
40 ?rw-r--r--··6.1·unx·····1426·bx·defN·25-Mar-18·07:53·OEBPS/common_test_app.xhtml40 ?rw-r--r--··6.1·unx·····1426·bx·defN·25-Mar-18·08:46·OEBPS/common_test_app.xhtml
41 ?rw-r--r--··6.1·unx····15709·bx·defN·25-Mar-18·07:53·OEBPS/basics_chapter.xhtml41 ?rw-r--r--··6.1·unx····15709·bx·defN·25-Mar-18·08:46·OEBPS/basics_chapter.xhtml
42 ?rw-r--r--··6.1·unx·····9561·bx·stor·25-Mar-18·07:53·OEBPS/assets/tc_execution.gif42 ?rw-r--r--··6.1·unx·····9561·bx·stor·25-Mar-18·08:46·OEBPS/assets/tc_execution.gif
43 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:53·OEBPS/assets/logo.png43 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:46·OEBPS/assets/logo.png
44 ?rw-r--r--··6.1·unx····10726·bx·stor·25-Mar-18·07:53·OEBPS/assets/html_logs.gif44 ?rw-r--r--··6.1·unx····10726·bx·stor·25-Mar-18·08:46·OEBPS/assets/html_logs.gif
45 ?rw-r--r--··6.1·unx·····4963·bx·stor·25-Mar-18·07:53·OEBPS/assets/config.gif45 ?rw-r--r--··6.1·unx·····4963·bx·stor·25-Mar-18·08:46·OEBPS/assets/config.gif
46 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:53·META-INF/container.xml46 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:46·META-INF/container.xml
47 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:53·META-INF/com.apple.ibooks.display-options.xml47 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:46·META-INF/com.apple.ibooks.display-options.xml
48 46·files,·1778431·bytes·uncompressed,·391208·bytes·compressed:··78.0%48 46·files,·1778431·bytes·uncompressed,·391200·bytes·compressed:··78.0%
270 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,·Mar·18·2025·07: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,·Mar·18·2025·08:46:26,·uncompressed·size·20,·method=store
109 KB
OEBPS/write_test_chapter.xhtml
Max HTML report size reached
8.21 KB
OEBPS/unix_telnet.xhtml
    
Offset 20, 22 lines modifiedOffset 20, 22 lines modified
20 ····<h1·id="content">20 ····<h1·id="content">
21 unix_telnet·21 unix_telnet·
22 ····</h1>22 ····</h1>
  
  
23 ······<section·id="moduledoc"·class="docstring">23 ······<section·id="moduledoc"·class="docstring">
24 <p>Callback·module·for·<a·href="ct_telnet.xhtml"><code·class="inline">ct_telnet</code></a>,·for·connecting·to·a·Telnet·server·on·a·UNIX24 <p>Callback·module·for·<a·href="ct_telnet.xhtml"><code·class="inline">ct_telnet</code></a>,·for·connecting·to·a·Telnet·server·on·a·UNIX
25 host.</p><p>It·requires·the·following·entry·in·the·configuration·file:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="8706707542-1">{</samp><samp·class="ss">unix</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="8706707542-2">[</samp><samp·class="p"·data-group-id="8706707542-3">{</samp><samp·class="ss">telnet</samp><samp·class="p">,</samp><samp·class="n">HostNa[·...·truncated·by·diffoscope;·len:·61,·SHA:·83ce8b96eb5aff1b22460a0e135b4ed81fb46050320a88d2220060a5c87bffcd·...·]-3">}</samp><samp·class="p">,</samp><samp·class="w">25 host.</p><p>It·requires·the·following·entry·in·the·configuration·file:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="7446070693-1">{</samp><samp·class="ss">unix</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="7446070693-2">[</samp><samp·class="p"·data-group-id="7446070693-3">{</samp><samp·class="ss">telnet</samp><samp·class="p">,</samp><samp·class="n">HostNa[·...·truncated·by·diffoscope;·len:·61,·SHA:·c1d39d7b65820beba7a48874466d1c9529764ab1a7304c66956ce827cc1337b6·...·]-3">}</samp><samp·class="p">,</samp><samp·class="w">
26 ·······</samp><samp·class="p"·data-group-id="8706707542-4">{</samp><samp·class="ss">port</samp><samp·class="p">,</samp><samp·class="n">PortNum</samp><samp·class="p"·data-group-id="8706707542-4">}</samp><samp·class="p">,</samp><samp·class="w">·················</samp><samp·class="c1">%·optional</samp><samp·class="w">26 ·······</samp><samp·class="p"·data-group-id="7446070693-4">{</samp><samp·class="ss">port</samp><samp·class="p">,</samp><samp·class="n">PortNum</samp><samp·class="p"·data-group-id="7446070693-4">}</samp><samp·class="p">,</samp><samp·class="w">·················</samp><samp·class="c1">%·optional</samp><samp·class="w">
27 ·······</samp><samp·class="p"·data-group-id="8706707542-5">{</samp><samp·class="ss">username</samp><samp·class="p">,</samp><samp·class="n">UserName</samp><samp·class="p"·data-group-id="8706707542-5">}</samp><samp·class="p">,</samp><samp·class="w">27 ·······</samp><samp·class="p"·data-group-id="7446070693-5">{</samp><samp·class="ss">username</samp><samp·class="p">,</samp><samp·class="n">UserName</samp><samp·class="p"·data-group-id="7446070693-5">}</samp><samp·class="p">,</samp><samp·class="w">
28 ·······</samp><samp·class="p"·data-group-id="8706707542-6">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="n">Password</samp><samp·class="p"·data-group-id="8706707542-6">}</samp><samp·class="p">,</samp><samp·class="w">28 ·······</samp><samp·class="p"·data-group-id="7446070693-6">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="n">Password</samp><samp·class="p"·data-group-id="7446070693-6">}</samp><samp·class="p">,</samp><samp·class="w">
29 ·······</samp><samp·class="p"·data-group-id="8706707542-7">{</samp><samp·class="ss">keep_alive</samp><samp·class="p">,</samp><samp·class="n">Bool</samp><samp·class="p"·data-group-id="8706707542-7">}</samp><samp·class="p"·data-group-id="8706707542-2">]</samp><samp·class="p"·data-group-id="8706707542-1">}</samp><samp·class="p">.</samp><samp·class="w">············</samp><samp·class="c1">%·optional</samp></code></pre><p>To·communicate·through·Telnet·to·the·host·specified·by·<code·class="inline">HostNameOrIpAddress</code>,29 ·······</samp><samp·class="p"·data-group-id="7446070693-7">{</samp><samp·class="ss">keep_alive</samp><samp·class="p">,</samp><samp·class="n">Bool</samp><samp·class="p"·data-group-id="7446070693-7">}</samp><samp·class="p"·data-group-id="7446070693-2">]</samp><samp·class="p"·data-group-id="7446070693-1">}</samp><samp·class="p">.</samp><samp·class="w">············</samp><samp·class="c1">%·optional</samp></code></pre><p>To·communicate·through·Telnet·to·the·host·specified·by·<code·class="inline">HostNameOrIpAddress</code>,
30 use·the·interface·functions·in·<a·href="ct_telnet.xhtml"><code·class="inline">ct_telnet</code></a>,·for·example,·<code·class="inline">open(Name)</code>·and30 use·the·interface·functions·in·<a·href="ct_telnet.xhtml"><code·class="inline">ct_telnet</code></a>,·for·example,·<code·class="inline">open(Name)</code>·and
31 <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,31 <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,
32 for·example:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">suite</samp><samp·class="p"·data-group-id="7309339527-1">(</samp><samp·class="p"·data-group-id="7309339527-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="7309339527-2">[</samp><samp·class="p"·data-group-id="7309339527-3">{</samp>[·...·truncated·by·diffoscope;·len:·1120,·SHA:·50544b0ced7d6998c971ba5cd54f7100b15d0a97ae9e9eefb674c7a8503b41bd·...·]-1">)</samp><samp·class="p">.</samp></code></pre><p>The·&quot;keep·alive&quot;·activity·(that·is,·that·<code·class="inline">Common·Test</code>·sends·NOP·to·the·server32 for·example:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">suite</samp><samp·class="p"·data-group-id="7425150849-1">(</samp><samp·class="p"·data-group-id="7425150849-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="7425150849-2">[</samp><samp·class="p"·data-group-id="7425150849-3">{</samp>[·...·truncated·by·diffoscope;·len:·1120,·SHA:·f07b90fbaa3b77efc296b63b2280b54c7ff6f38fdf57adc9052b94b2d8f9942d·...·]-1">)</samp><samp·class="p">.</samp></code></pre><p>The·&quot;keep·alive&quot;·activity·(that·is,·that·<code·class="inline">Common·Test</code>·sends·NOP·to·the·server
33 every·10·seconds·if·the·connection·is·idle)·can·be·enabled·or·disabled·for·one33 every·10·seconds·if·the·connection·is·idle)·can·be·enabled·or·disabled·for·one
34 particular·connection·as·described·here.·It·can·be·disabled·for·all·connections34 particular·connection·as·described·here.·It·can·be·disabled·for·all·connections
35 using·<code·class="inline">telnet_settings</code>·(see·<a·href="ct_telnet.xhtml"><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·is35 using·<code·class="inline">telnet_settings</code>·(see·<a·href="ct_telnet.xhtml"><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
36 used.·Also·the·<code·class="inline">keep_alive</code>·tuple·is·optional,·and·the·value·default·to·<code·class="inline">true</code>36 used.·Also·the·<code·class="inline">keep_alive</code>·tuple·is·optional,·and·the·value·default·to·<code·class="inline">true</code>
37 (enabled).</p><h2·id="module-see-also"·class="section-heading">37 (enabled).</p><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>
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
    
Offset 59, 20 lines modifiedOffset 59, 20 lines modified
59 </h2>59 </h2>
60 <p>Event·handlers·can·be·installed·by·an·<code·class="inline">event_handler</code>·start·flag60 <p>Event·handlers·can·be·installed·by·an·<code·class="inline">event_handler</code>·start·flag
61 (<a·href="ct_run_cmd.xhtml"><code·class="inline">ct_run</code></a>)·or·option·<a·href="ct.xhtml#run_test/1"><code·class="inline">ct:run_test/1</code></a>,·where·the·argument61 (<a·href="ct_run_cmd.xhtml"><code·class="inline">ct_run</code></a>)·or·option·<a·href="ct.xhtml#run_test/1"><code·class="inline">ct:run_test/1</code></a>,·where·the·argument
62 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·option62 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
63 <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·must63 <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
64 be·precompiled·and·their·locations·must·be·added·explicitly·to·the·Erlang·code64 be·precompiled·and·their·locations·must·be·added·explicitly·to·the·Erlang·code
65 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·(see65 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
66 <a·href="ct.xhtml#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="3313904874-1">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="n">EventHandlers</span><span·class="p"·data-group-id="3313904874-1">}</span><span·class="w">66 <a·href="ct.xhtml#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="3015006915-1">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="n">EventHandlers</span><span·class="p"·data-group-id="3015006915-1">}</span><span·class="w">
  
67 </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="3313904874-2">[</span><span·class="n">EH</span><span·class="p"·data-group-id="3313904874-2">]</span><span·class="w">67 </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="3015006915-2">[</span><span·class="n">EH</span><span·class="p"·data-group-id="3015006915-2">]</span><span·class="w">
68 </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="3313904874-3">(</span><span·class="p"·data-group-id="3313904874-3">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="3313904874-4">{</span><span·class="nf">atom</span><span·class="p"·data-group-id="3313904874-5">(</span><span·class="p"·data-group-id="3313904874-5">)</span><span·class="p">,</span><span·class="n">InitArgs</span><span·class="p"·data-group-id="3313904874-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="3313904874-6">{</span><span·class="p"·data-group-id="3313904874-7">[</span><span·class="nf">atom</span><span·class="p"·data-group-id="3313904874-8">(</span><span·class="p"·data-group-id="3313904874-8">)</span><span·class="p"·data-group-id="3313904874-7">]</span><span·class="p">,</span><span·class="n">InitArgs</span><span·class="p"·data-group-id="3313904874-6">}</span><span·class="w"> 
69 </span><span·class="n">InitArgs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3313904874-9">[</span><span·class="nf">term</span><span·class="p"·data-group-id="3313904874-10">(</span><span·class="p"·data-group-id="3313904874-10">)</span><span·class="p"·data-group-id="3313904874-9">]</span></code></pre><p>In·the·following·example,·two·event·handlers·for·the·<code·class="inline">my_SUITE</code>·test·are 
70 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="0618109643-1">(</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·1273,·SHA:·17ad3f3f3811d70d25832dbf368da3a58213bbb5bea1cc89abe7dcce9527d859·...·]68 </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="3015006915-3">(</span><span·class="p"·data-group-id="3015006915-3">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·838,·SHA:·4662b3b0b6cfa2a94eead14110e4f80a178dcb6624c277b4e8d1c0f0192ba423·...·]
 69 </span><span·class="n">InitArgs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3015006915-9">[</span><span·class="nf">term</span><span·class="p"·data-group-id="3015006915-10">(</span><span·class="p"·data-group-id="3015006915-10">)</span><span·class="p"·data-group-id="3015006915-9">]</span></code></pre><p>In·the·following·example,·two·event·handlers·for·the·<code·class="inline">my_SUITE</code>·test·are
 70 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="4026720906-1">(</span><span·class="p"·data-group-id="4026720906-2">[</span><span·class="p"·data-group-id="4026720906-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-id="4026720906-3">}</span><span·class="p">,</span><span·class="p"·data-group-id="4026720906-4">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="p"·data-group-id="4026720906-5">[</span><span·class="ss">my_evh1</span><span·class="p">,</span><span·class="p"·data-group-id="4026720906-6">{</span><span·class="ss">my_evh2</span><span·class="p">,</span><span·class="p"·data-group-id="4026720906-7">[</span><span·class="nf">node</span><span·class="p"·data-group-id="4026720906-8">(</span><span·class="p"·data-group-id="4026720906-8">)</span><span·class="p"·data-group-id="4026720906-7">]</span><span·class="p"·data-group-id="4026720906-6">}</span><span·class="p"·data-group-id="4026720906-5">]</span><span·class="p"·data-group-id="4026720906-4">}</span><span·class="p"·data-group-id="4026720906-2">]</span><span·class="p"·data-group-id="4026720906-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.
71 Event·handler·<code·class="inline">my_evh2</code>·is·started·with·the·name·of·the·current·node·in·the·init71 Event·handler·<code·class="inline">my_evh2</code>·is·started·with·the·name·of·the·current·node·in·the·init
72 argument·list.</p><p>Event·handlers·can·also·be·plugged·in·using·one·of·the·following72 argument·list.</p><p>Event·handlers·can·also·be·plugged·in·using·one·of·the·following
73 <a·href="run_test_chapter.xhtml#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,·the73 <a·href="run_test_chapter.xhtml#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
74 init·function·of·each·plugged·in·event·handler·is·called·(with·the·<code·class="inline">InitArgs</code>74 init·function·of·each·plugged·in·event·handler·is·called·(with·the·<code·class="inline">InitArgs</code>
75 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>75 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>
76 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·header76 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
77 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·relevant77 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
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
    
Offset 24, 22 lines modifiedOffset 24, 22 lines modified
  
24 ······<section·id="moduledoc"·class="docstring">24 ······<section·id="moduledoc"·class="docstring">
25 <p>SSH/SFTP·client·module.</p><p>This·module·uses·application·<code·class="inline">SSH</code>,·which·provides·detailed·information·about,25 <p>SSH/SFTP·client·module.</p><p>This·module·uses·application·<code·class="inline">SSH</code>,·which·provides·detailed·information·about,
26 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·sessions26 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
27 that·have·been·started·on·existing·SSH·connections·(that·is,·when·the·original27 that·have·been·started·on·existing·SSH·connections·(that·is,·when·the·original
28 connection·type·is·<code·class="inline">ssh</code>).·Whenever·the·connection·type·is·<code·class="inline">sftp</code>,·use·the·SSH28 connection·type·is·<code·class="inline">ssh</code>).·Whenever·the·connection·type·is·<code·class="inline">sftp</code>,·use·the·SSH
29 connection·reference·only.</p><p>The·following·options·are·valid·for·specifying·an·SSH/SFTP·connection·(that·is,29 connection·reference·only.</p><p>The·following·options·are·valid·for·specifying·an·SSH/SFTP·connection·(that·is,
30 can·be·used·as·configuration·elements):</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="2060152322-1">[</samp><samp·class="p"·data-group-id="2060152322-2">{</samp><samp·class="n">ConnType</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Addr</samp><samp·class="p"·data-group-id="2060152322-2">}</samp><samp·class="p">,</samp><samp·class="w">30 can·be·used·as·configuration·elements):</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="6282239360-1">[</samp><samp·class="p"·data-group-id="6282239360-2">{</samp><samp·class="n">ConnType</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Addr</samp><samp·class="p"·data-group-id="6282239360-2">}</samp><samp·class="p">,</samp><samp·class="w">
31 ·</samp><samp·class="p"·data-group-id="2060152322-3">{</samp><samp·class="ss">port</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Port</samp><samp·class="p"·data-group-id="2060152322-3">}</samp><samp·class="p">,</samp><samp·class="w">31 ·</samp><samp·class="p"·data-group-id="6282239360-3">{</samp><samp·class="ss">port</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Port</samp><samp·class="p"·data-group-id="6282239360-3">}</samp><samp·class="p">,</samp><samp·class="w">
32 ·</samp><samp·class="p"·data-group-id="2060152322-4">{</samp><samp·class="ss">user</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">UserName</samp><samp·class="p"·data-group-id="2060152322-4">}</samp><samp·class="w">32 ·</samp><samp·class="p"·data-group-id="6282239360-4">{</samp><samp·class="ss">user</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">UserName</samp><samp·class="p"·data-group-id="6282239360-4">}</samp><samp·class="w">
33 ·</samp><samp·class="p"·data-group-id="2060152322-5">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Pwd</samp><samp·class="p"·data-group-id="2060152322-5">}</samp><samp·class="w">33 ·</samp><samp·class="p"·data-group-id="6282239360-5">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Pwd</samp><samp·class="p"·data-group-id="6282239360-5">}</samp><samp·class="w">
34 ·</samp><samp·class="p"·data-group-id="2060152322-6">{</samp><samp·class="ss">user_dir</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">String</samp><samp·class="p"·data-group-id="2060152322-6">}</samp><samp·class="w">34 ·</samp><samp·class="p"·data-group-id="6282239360-6">{</samp><samp·class="ss">user_dir</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">String</samp><samp·class="p"·data-group-id="6282239360-6">}</samp><samp·class="w">
35 ·</samp><samp·class="p"·data-group-id="2060152322-7">{</samp><samp·class="ss">public_key_alg</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">PubKeyAlg</samp><samp·class="p"·data-group-id="2060152322-7">}</samp><samp·class="w">35 ·</samp><samp·class="p"·data-group-id="6282239360-7">{</samp><samp·class="ss">public_key_alg</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">PubKeyAlg</samp><samp·class="p"·data-group-id="6282239360-7">}</samp><samp·class="w">
36 ·</samp><samp·class="p"·data-group-id="2060152322-8">{</samp><samp·class="ss">connect_timeout</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Timeout</samp><samp·class="p"·data-group-id="2060152322-8">}</samp><samp·class="w">36 ·</samp><samp·class="p"·data-group-id="6282239360-8">{</samp><samp·class="ss">connect_timeout</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Timeout</samp><samp·class="p"·data-group-id="6282239360-8">}</samp><samp·class="w">
37 ·</samp><samp·class="p"·data-group-id="2060152322-9">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">KeyCallbackMod</samp><samp·class="p"·data-group-id="2060152322-9">}</samp><samp·class="p"·data-group-id="2060152322-1">]</samp></code></pre><p><code·class="inline">ConnType·=·ssh·|·sftp</code>.</p><p>For·other·types,·see·<a·href="../../../../lib/ssh/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>37 ·</samp><samp·class="p"·data-group-id="6282239360-9">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">KeyCallbackMod</samp><samp·class="p"·data-group-id="6282239360-9">}</samp><samp·class="p"·data-group-id="6282239360-1">]</samp></code></pre><p><code·class="inline">ConnType·=·ssh·|·sftp</code>.</p><p>For·other·types,·see·<a·href="../../../../lib/ssh/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>
38 ······</section>38 ······</section>
  
  
39 ······<section·id="summary"·class="details-list">39 ······<section·id="summary"·class="details-list">
40 ········<h1·class="section-heading">Summary</h1>40 ········<h1·class="section-heading">Summary</h1>
41 <div·class="summary-types·summary">41 <div·class="summary-types·summary">
42 ··<h2>42 ··<h2>
9.73 KB
OEBPS/ct_snmp.xhtml
    
Offset 41, 23 lines modifiedOffset 41, 23 lines modified
41 configuration·files·have·default·values·set·by·the·<code·class="inline">SNMP</code>·application.·These41 configuration·files·have·default·values·set·by·the·<code·class="inline">SNMP</code>·application.·These
42 values·can·be·overridden·by·suppling·a·list·of·valid·configuration·values·or·a42 values·can·be·overridden·by·suppling·a·list·of·valid·configuration·values·or·a
43 file·located·in·the·test·suites·data·directory,·which·can·produce·a·list·of43 file·located·in·the·test·suites·data·directory,·which·can·produce·a·list·of
44 valid·configuration·values·if·you·apply·function·<a·href="../../../../lib/kernel/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>·-44 valid·configuration·values·if·you·apply·function·<a·href="../../../../lib/kernel/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>·-
45 Optional.</p></li><li><p><strong><code·class="inline">{agent_target_param_def,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-45 Optional.</p></li><li><p><strong><code·class="inline">{agent_target_param_def,·[term()]·|·{data_dir_file,·rel_path()}}</code></strong>·-
46 Optional.</p></li></ul><p>Parameter·<code·class="inline">MgrAgentConfName</code>·in·the·functions·is·to·be·a·name·you·allocate·in46 Optional.</p></li></ul><p>Parameter·<code·class="inline">MgrAgentConfName</code>·in·the·functions·is·to·be·a·name·you·allocate·in
47 your·test·suite·using·a·<code·class="inline">require</code>·statement.·Example·(where47 your·test·suite·using·a·<code·class="inline">require</code>·statement.·Example·(where
48 <code·class="inline">MgrAgentConfName·=·snmp_mgr_agent</code>):</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">suite</samp><samp·class="p"·data-group-id="0234726971-1">(</samp><samp·class="p"·data-group-id="0234726971-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="0234726971-2">[</samp><samp·class="p"·data-group-id="0234726971-3">{</samp[·...·truncated·by·diffoscope;·len:·683,·SHA:·968b6a765bb24bcececb59541d1571b9a15da4ddc064329047bad163a658ca3f·...·]-1">)</samp><samp·class="p">.</samp></code></pre><p>Notice·that·USM·users·are·needed·for·SNMPv3·configuration·and·are·not·to·be48 <code·class="inline">MgrAgentConfName·=·snmp_mgr_agent</code>):</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">suite</samp><samp·class="p"·data-group-id="3990247767-1">(</samp><samp·class="p"·data-group-id="3990247767-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="3990247767-2">[</samp><samp·class="p"·data-group-id="3990247767-3">{</samp[·...·truncated·by·diffoscope;·len:·683,·SHA:·02a8dc1066c5a87e5101540110d83e31f28b034b6d07f519d093e444cfce4375·...·]-1">)</samp><samp·class="p">.</samp></code></pre><p>Notice·that·USM·users·are·needed·for·SNMPv3·configuration·and·are·not·to·be
49 confused·with·users.</p><p>SNMP·traps,·inform,·and·report·messages·are·handled·by·the·user·callback·module.49 confused·with·users.</p><p>SNMP·traps,·inform,·and·report·messages·are·handled·by·the·user·callback·module.
50 For·details,·see·the·<a·href="../../../../lib/snmp/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·compiler50 For·details,·see·the·<a·href="../../../../lib/snmp/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
51 to·define·the·Object·Identifiers·(OIDs).·For·example,·to·get·the·Erlang·node51 to·define·the·Object·Identifiers·(OIDs).·For·example,·to·get·the·Erlang·node
52 name·from·<code·class="inline">erlNodeTable</code>·in·the·OTP-MIB:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">Oid</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">?</samp><samp·class="ss">erlNodeEntry</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="9069407147-1">[</samp><samp·class="o">?</samp><samp·class="ss">erlNodeName</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="mi">1</samp><samp·class="p"·data-group-id="9069407147-1">]</samp></code></pre><p>Furthermore,·values·can·be·set·for·<code·class="inline">SNMP</code>·application·configuration·parameters,52 name·from·<code·class="inline">erlNodeTable</code>·in·the·OTP-MIB:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">Oid</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">?</samp><samp·class="ss">erlNodeEntry</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="9463061492-1">[</samp><samp·class="o">?</samp><samp·class="ss">erlNodeName</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="mi">1</samp><samp·class="p"·data-group-id="9463061492-1">]</samp></code></pre><p>Furthermore,·values·can·be·set·for·<code·class="inline">SNMP</code>·application·configuration·parameters,
53 <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·and53 <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
54 types,·see·the·<a·href="../../../../lib/snmp/doc/html/index.html"><code·class="inline">User's·Guide·for·the·SNMP·application</code></a>).54 types,·see·the·<a·href="../../../../lib/snmp/doc/html/index.html"><code·class="inline">User's·Guide·for·the·SNMP·application</code></a>).
55 This·is·done·by·defining·a·configuration·data·variable·on·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="3855528046-1">{</samp><samp·class="ss">snmp_app</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="3855528046-2">[</samp><samp·class="p"·data-group-id="3855528046-3">{</samp><samp·class="ss">manager</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="3855528046-4">[</samp><samp·class="nf">snmp_app_manager_params</samp><samp·class="p"·data-group-id="3855528046-5">(</samp><samp·class="p"·data-group-id="3855528046-5">)</samp><samp·class="p"·data-group-id="3855528046-4">]</samp><samp·class="p"·data-group-id="3855528046-3">}</samp><samp·class="p">,</samp><samp·class="w"> 
56 ············</samp><samp·class="p"·data-group-id="3855528046-6">{</samp><samp·class="ss">agent</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="3855528046-7">[</samp><samp·class="nf">snmp_app_agent_params</samp><samp·cla[·...·truncated·by·diffoscope;·len:·450,·SHA:·d441d54a20a904634f5e8786ec01fa65136609af1612311941ae72ce2c55df70·...·]55 This·is·done·by·defining·a·configuration·data·variable·on·the·following·form:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="6693467020-1">{</samp><samp·class="ss">snmp_app</samp><samp·class="p">,</samp><samp·class="w">·<[·...·truncated·by·diffoscope;·len:·543,·SHA:·b715be8f4c045e929665628402f25d431990206a380bb067ab51c24ab1d3cbe5·...·]
 56 ············</samp><samp·class="p"·data-group-id="6693467020-6">{</samp><samp·class="ss">agent</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="6693467020-7">[</samp><samp·class="nf">snmp_app_agent_params</samp><samp·class="p"·data-group-id="6693467020-8">(</samp><samp·class="p"·data-group-id="6693467020-8">)</samp><samp·class="p"·data-group-id="6693467020-7">]</samp><samp·class="p"·data-group-id="6693467020-6">}</samp><samp·class="p"·data-group-id="6693467020-2">]</samp><samp·class="p"·data-group-id="6693467020-1">}</samp><samp·class="p">.</samp></code></pre><p>A·name·for·the·data·must·be·allocated·in·the·suite·using·<code·class="inline">require</code>·(see·the
57 example·above).·Pass·this·name·as·argument·<code·class="inline">SnmpAppConfName</code>·to57 example·above).·Pass·this·name·as·argument·<code·class="inline">SnmpAppConfName</code>·to
58 <a·href="#start/3"><code·class="inline">ct_snmp:start/3</code></a>.·<code·class="inline">ct_snmp</code>·specifies·default·values·for·some58 <a·href="#start/3"><code·class="inline">ct_snmp:start/3</code></a>.·<code·class="inline">ct_snmp</code>·specifies·default·values·for·some
59 <code·class="inline">SNMP</code>·application·configuration·parameters·(such·as·<code·class="inline">{verbosity,trace}</code>·for59 <code·class="inline">SNMP</code>·application·configuration·parameters·(such·as·<code·class="inline">{verbosity,trace}</code>·for
60 parameter·<code·class="inline">config</code>).·This·set·of·defaults·is·merged·with·the·parameters60 parameter·<code·class="inline">config</code>).·This·set·of·defaults·is·merged·with·the·parameters
61 specified·by·the·user.·The·user·values·override·<code·class="inline">ct_snmp</code>·defaults.</p>61 specified·by·the·user.·The·user·values·override·<code·class="inline">ct_snmp</code>·defaults.</p>
62 ······</section>62 ······</section>
  
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="2793367898-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:·52f9ea420978d5259475708fdf94e3ca562d55eff5504aeefac1c2c1e5f1c0e4·...·]-1">]</span><span·class="w">149 ··</span><span·class="p"·data-group-id="5459534969-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:·acb10f88c0c213b4e49e65cae780593e0181af41b848707c7a451da483abc831·...·]-1">]</span><span·class="w">
150 ··</span><span·class="p"·data-group-id="2793367898-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="5459534969-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="2793367898-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="5459534969-2">]</span><span·class="w">
152 ··</span><span·class="p"·data-group-id="2793367898-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="2793367898-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·208,·SHA:·a9ff6bed8f7ec245ff3c4dcf9253f68d94bb7c532bfa8e9e5a08560498fc178e·...·]-4">]</span></code></pre><h2·id="start-a-common-test-master-node"·class="section-heading">152 ··</span><span·class="p"·data-group-id="5459534969-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="5459534969-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·208,·SHA:·713e967a7387729045508cc5bb3e810e13c676b4cc41e1d3aa58b0e346dac54d·...·]-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="2356432254-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="2356432254-2">(</samp><samp·class="p"·data-group-id="2356432254-2">)</samp><samp·class="p">,</samp><samp·[·...·truncated·by·diffoscope;·len:·244,·SHA:·faadb3de16634b6eefdd7eb7f1a3be86e325ad242df5e50f4bf938f402f03857·...·]-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="0522498685-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="0522498685-2">(</samp><samp·class="p"·data-group-id="0522498685-2">)</samp><samp·class="p">,</samp><samp·[·...·truncated·by·diffoscope;·len:·244,·SHA:·dece1b0058ce4ad48d6d07e357678d23b9e0bc124f92181a85f147b9ed446beb·...·]-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="4044619767-1">{</samp><samp·class="nb">node</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="4044619767-2">[</samp><samp·class="p"·data-group-id="4044619767-3">{</samp><samp·class="ss">ftp</samp><samp·class="p">,</samp><samp·class="n">IpAddr</samp><samp·class="p"·data-group-id="4044619767-3">}</samp><samp·class="p"·data-group-id="4044619767-2">]</samp><samp·class="p"·data-group-id="4044619767-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="2970483291-1">{</samp><samp·class="ss">unix</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="297048329[·...·truncated·by·diffoscope;·len:·239,·SHA:·588de184f21d9a579f1da35c9ef1492d0dd83dcf8c8aca37e788b766b371578b·...·]451 configuration·file·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="1682064487-1">{</samp><samp·class="nb">node</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="1682064487-2">[</samp><samp·class="p"·data-group-id="1682[·...·truncated·by·diffoscope;·len:·364,·SHA:·304c87a0ccc15e1484169fee0f2a72608999fc5720318be9cc506e7d7c8914a8·...·]
 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="2630770473-1">{</samp><samp·class="ss">unix</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="2630770473-2">[</samp><samp·class="p"·data-group-id="2630770473-3">{</samp><samp·class="ss">ftp</samp><samp·class="p">,</samp><samp·class="n">IpAddr</samp><samp·class="p"·data-group-id="2630770473-3">}</samp><samp·class="p">,</samp><samp·class="w">
453 ·······</samp><samp·class="p"·data-group-id="2970483291-4">{</samp><samp·class="ss">username</samp><samp·class="p">,</samp><samp·class="n">Username</samp><samp·class="p"·data-group-id="2970483291-4">}</samp><samp·class="p">,</samp><samp·class="w">453 ·······</samp><samp·class="p"·data-group-id="2630770473-4">{</samp><samp·class="ss">username</samp><samp·class="p">,</samp><samp·class="n">Username</samp><samp·class="p"·data-group-id="2630770473-4">}</samp><samp·class="p">,</samp><samp·class="w">
454 ·······</samp><samp·class="p"·data-group-id="2970483291-5">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="n">Password</samp><samp·class="p"·data-group-id="2970483291-5">}</samp><samp·class="p"·data-group-id="2970483291-2">]</samp><samp·class="p"·data-group-id="2970483291-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="2630770473-5">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="n">Password</samp><samp·class="p"·data-group-id="2630770473-5">}</samp><samp·class="p"·data-group-id="2630770473-2">]</samp><samp·class="p"·data-group-id="2630770473-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
    
Offset 106, 23 lines modifiedOffset 106, 23 lines modified
106 <a·href="write_test_chapter.xhtml#intro">Writing·Test·Suites</a>.</p><p>A·test·case·is·considered·successful·if·it·returns·to·the·caller,·no·matter·what106 <a·href="write_test_chapter.xhtml#intro">Writing·Test·Suites</a>.</p><p>A·test·case·is·considered·successful·if·it·returns·to·the·caller,·no·matter·what
107 the·returned·value·is.·However,·a·few·return·values·have·special·meaning·as107 the·returned·value·is.·However,·a·few·return·values·have·special·meaning·as
108 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>·to108 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
109 the·next·test·case.</li></ul><p>A·test·case·failure·is·specified·as·a·runtime·error·(a·crash),·no·matter·what109 the·next·test·case.</li></ul><p>A·test·case·failure·is·specified·as·a·runtime·error·(a·crash),·no·matter·what
110 the·reason·for·termination·is.·If·you·use·Erlang·pattern·matching·effectively,110 the·reason·for·termination·is.·If·you·use·Erlang·pattern·matching·effectively,
111 you·can·take·advantage·of·this·property.·The·result·is·concise·and·readable·test111 you·can·take·advantage·of·this·property.·The·result·is·concise·and·readable·test
112 case·functions·that·look·much·more·like·scripts·than·actual·programs.·A·simple112 case·functions·that·look·much·more·like·scripts·than·actual·programs.·A·simple
113 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">session</span><span·class="p"·data-group-id="3245398051-1">(</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="3245398051-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">113 example:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">session</span><span·class="p"·data-group-id="4029445824-1">(</span><span·class="p">_</span><span·class="n">Config</span><span·class="p"·data-group-id="4029445824-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
114 ····</span><span·class="p"·data-group-id="3245398051-2">{</span><span·class="ss">started</span><span·class="p">,</span><span·class="n">ServerId</span><span·class="p"·data-group-id="3245398051-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:·00b833d790879a5ae41214a00b3a3787b3cf2e02b07a6903ccdaa35afd8cd542·...·]-3">)</span><span·class="p">,</span><span·class="w">114 ····</span><span·class="p"·data-group-id="4029445824-2">{</span><span·class="ss">started</span><span·class="p">,</span><span·class="n">ServerId</span><span·class="p"·data-group-id="4029445824-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:·c7bf40fd222c37ea6bba943edcdede9c6f5a94d7faf9e3809f2e6d56fd77d8ef·...·]-3">)</span><span·class="p">,</span><span·class="w">
115 ····</span><span·class="p"·data-group-id="3245398051-4">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="3245398051-5">[</span><span·class="p"·data-group-id="3245398051-5">]</span><span·class="p"·data-group-id="3245398051-4">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·269,·SHA:·0ab4cdf24eb85ebc42821723be5da5fb745262974e06429176493805e5898257·...·]-6">)</span><span·class="p">,</span><span·class="w">115 ····</span><span·class="p"·data-group-id="4029445824-4">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="4029445824-5">[</span><span·class="p"·data-group-id="4029445824-5">]</span><span·class="p"·data-group-id="4029445824-4">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·269,·SHA:·9b79a1949f26e316a38ba5b70d54c587ffdbc05397927034b7701bc2e674f056·...·]-6">)</span><span·class="p">,</span><span·class="w">
116 ····</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="3245398051-7">(</span><span·class="p"·data-group-id="3245398051-7">)</span><span·class="p">,</span><span·class="w">116 ····</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="4029445824-7">(</span><span·class="p"·data-group-id="4029445824-7">)</span><span·class="p">,</span><span·class="w">
117 ····</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="3245398051-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="3245398051-8">)</span><span·class="p">,</span><span·class="w">117 ····</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="4029445824-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="4029445824-8">)</span><span·class="p">,</span><span·class="w">
118 ····</span><span·class="p"·data-group-id="3245398051-9">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="3245398051-10">[</span><span·class="n">MyId</span><span·class="p"·data-group-id="3245398051-10">]</span><span·class="p"·data-group-id="3245398051-9"[·...·truncated·by·diffoscope;·len:·299,·SHA:·db6c9e87bbf4f616caf72d6aa3ad3a911e77792a65aaf3047c7871af4c805f23·...·]-11">)</span><span·class="p">,</span><span·class="w">118 ····</span><span·class="p"·data-group-id="4029445824-9">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="4029445824-10">[</span><span·class="n">MyId</span><span·class="p"·data-group-id="4029445824-10">]</span><span·class="p"·data-group-id="4029445824-9"[·...·truncated·by·diffoscope;·len:·299,·SHA:·74d7d227e043ad621679ef1d6cf8d218e31851c6ee4432a9585f86a15e3b4531·...·]-11">)</span><span·class="p">,</span><span·class="w">
119 ····</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="3245398051-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="3245398051-12">)</span><span·class="p">,</span><span·class="w">119 ····</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="4029445824-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="4029445824-12">)</span><span·class="p">,</span><span·class="w">
120 ····</span><span·class="p"·data-group-id="3245398051-13">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="3245398051-14">[</span><span·class="p"·data-group-id="3245398051-14">]</span><span·class="p"·data-group-id="3245398051-13">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·274,·SHA:·5a9188ee8b49fde49c05c6ae7a514cb0115b2b7d8a35bfd2cde5fbb2bd9c00ef·...·]-15">)</span><span·class="p">,</span><span·class="w">120 ····</span><span·class="p"·data-group-id="4029445824-13">{</span><span·class="ss">clients</span><span·class="p">,</span><span·class="p"·data-group-id="4029445824-14">[</span><span·class="p"·data-group-id="4029445824-14">]</span><span·class="p"·data-group-id="4029445824-13">}</span><span·class="w">[·...·truncated·by·diffoscope;·len:·274,·SHA:·380a5b63a84eff939a7d510f18dc58c1ddd361ebb3bb20399d21143b8931b5e0·...·]-15">)</span><span·class="p">,</span><span·class="w">
121 ····</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="3245398051-16">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="3245398051-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·recorded121 ····</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="4029445824-16">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="4029445824-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
122 in·many·different·log·files.·A·minimum·of·information·is·displayed·in·the·user122 in·many·different·log·files.·A·minimum·of·information·is·displayed·in·the·user
123 console·(only·start·and·stop·information,·plus·a·note·for·each·failed·test123 console·(only·start·and·stop·information,·plus·a·note·for·each·failed·test
124 case).</p><p>The·result·from·each·test·case·is·recorded·in·a·dedicated·HTML·log·file,·created124 case).</p><p>The·result·from·each·test·case·is·recorded·in·a·dedicated·HTML·log·file,·created
125 for·the·particular·test·run.·An·overview·page·displays·each·test·case125 for·the·particular·test·run.·An·overview·page·displays·each·test·case
126 represented·by·a·table·row·showing·total·execution·time,·if·the·case·was126 represented·by·a·table·row·showing·total·execution·time,·if·the·case·was
127 successful,·failed,·or·skipped,·plus·an·optional·user·comment.·For·a·failed·test127 successful,·failed,·or·skipped,·plus·an·optional·user·comment.·For·a·failed·test
128 case,·the·reason·for·termination·is·also·printed·in·the·comment·field.·The128 case,·the·reason·for·termination·is·also·printed·in·the·comment·field.·The
80.2 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/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="1422739871-1">{</span><span·class="n">CfgVarName</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="1422739871-1">}</span><span·class="p">.</span></code></pre><p>where</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">CfgVarName</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">atom</span><span·class="p"·data-group-id="7668322100-1">(</span><span·class="p"·data-group-id="7668322100-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="7668322100-2">(</span><span·class="p"·data-group-id="7668322100-2">)</span><span·class="w">[·...·truncated·by·diffoscope;·len:·438,·SHA:·62ae56d8705cb324352860a3be5490e5f7071b4a885f7b98ad2570f5f699f565·...·]">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="0824938242-1">{</span><span·class="n">CfgVarName</span><span·class="p">,</span><span·class="n">Value</s[·...·truncated·by·diffoscope;·len:·407,·SHA:·f3c409517cc36e05c2de77bfb43d0c9224154fd5fe44f0449c4f97db41a4aef3·...·]">
 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="5263917920-2">(</span><span·class="p"·data-group-id="5263917920-2">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5263917920-3">[</span><span·class="p"·data-group-id="5263917920-4">{</span><span·class="n">CfgVarName</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="5263917920-4">}</span><span·class="p"·data-group-id="5263917920-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="3054476657-1">(</span><span·class="p"·data-group-id="3054476657-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="3441942966-1">(</span><span·class="p"·data-group-id="3441942966-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ····</span><span·class="p"·data-group-id="3054476657-2">[</span><span·class="p"·data-group-id="3054476657-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;CON[·...·truncated·by·diffoscope;·len:·123,·SHA:·b08248ad728aaeb463aa99545c458d2ad70ec5105497422748ec1404d97c56da·...·]-2">]</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="p"·data-group-id="3441942966-2">[</span><span·class="p"·data-group-id="3441942966-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;CON[·...·truncated·by·diffoscope;·len:·123,·SHA:·ace386736f2578f6ae5deea7b3c4579e1b51886be94c00fe1e9d8d5b58dbfd22·...·]-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="3054476657-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3054476657-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="3441942966-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3441942966-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="3054476657-5">(</span><span·class="ss">domain</span><span·class="p"·data-group-id="3054476657-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="3441942966-5">(</span><span·class="ss">domain</span><span·class="p"·data-group-id="3441942966-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="2667912633-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2667912633-2">[</span><span·class="p"·data-group-id="2667912633-3">{</span><span·class="ss">ftp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·89,·SHA:·c6f02319a4a289131619670af7672d259c321d0ce309b5144bc939ca735c9453·...·]-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="0381155951-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0381155951-2">[</span><span·class="p"·data-group-id="0381155951-3">{</span><span·class="ss">ftp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·89,·SHA:·e5991f77c048367e076b6b7581575c210a5e24fbd7a170b45baf8450b014090a·...·]-3">}</span><span·class="p">,</span><span·class="w">
265 ············</span><span·class="p"·data-group-id="2667912633-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="2667912633-4">}</span><span·class="p">,</span><span·class="w">265 ············</span><span·class="p"·data-group-id="0381155951-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="0381155951-4">}</span><span·class="p">,</span><span·class="w">
266 ············</span><span·class="p"·data-group-id="2667912633-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="2667912633-5">}</span><span·class="p"·data-group-id="2667912633-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·1818aaf2afa2526ff70d969d073a1ea86575e47c2a35e79ce5c4f7bf75677f85·...·]-1">}</span><span·class="p">.</span><span·class="w">266 ············</span><span·class="p"·data-group-id="0381155951-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="0381155951-5">}</span><span·class="p"·data-group-id="0381155951-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·f33f546703fa49c75dd303ad99370efa7831b71d8f4752d3285c728e1d20ce65·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
267 </span><span·class="p"·data-group-id="2667912633-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="2667912633-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="0381155951-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="0381155951-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="8600512017-1">[</span><span·class="p"·data-group-id="8600512017-2">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8600512017-3">[</span><span·class="p"·data-group-id="8600512017-4">{</s[·...·truncated·by·diffoscope;·len:·821,·SHA:·696fed6b2b72c41d4dc0a879178394606b72cdb62943ce7fa11d1039e96f2bbe·...·]7-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="8869469797-1">[</span><span·class="p"·data-group-id="8869469797-2">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8869469797-3">[</span><span·class="p"·data-group-id="8869469797-4">{</s[·...·truncated·by·diffoscope;·len:·821,·SHA:·c2f9a099f9c28860a129be6e8b4e78d03bed3c797e7ebf231ddf1e92773abcd1·...·]7-2">}</span><span·class="p">,</span><span·class="w">
288 ·</span><span·class="p"·data-group-id="8600512017-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="8600512017-7">}</span><span·class="p"·data-group-id="8600512017-1">]</span></code></pre><h2·id="examples-of-configuration-data-handling"·class="section-heading">288 ·</span><span·class="p"·data-group-id="8869469797-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="8869469797-7">}</span><span·class="p"·data-group-id="8869469797-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="8888607210-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8888607210-2">[</span><span·class="p"·data-group-id="8888607210-3">{</span><span·class="ss">ftp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·89,·SHA:·f07daf31cc5687d0d286d2083da0e2ae2a6af8f21d8dfbffb00d0af3221b374a·...·]-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="3443577384-1">{</span><span·class="ss">ftp_host</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3443577384-2">[</span><span·class="p"·data-group-id="3443577384-3">{</span><span·class="ss">ftp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·89,·SHA:·3c80602faaef1816aa05346c23f0c53a5d2bd4127c6d508ac5c67eea302635c7·...·]-3">}</span><span·class="p">,</span><span·class="w">
296 ············</span><span·class="p"·data-group-id="8888607210-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="8888607210-4">}</span><span·class="p">,</span><span·class="w">296 ············</span><span·class="p"·data-group-id="3443577384-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="s">&quot;tester&quot;</span><span·class="p"·data-group-id="3443577384-4">}</span><span·class="p">,</span><span·class="w">
297 ············</span><span·class="p"·data-group-id="8888607210-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="8888607210-5">}</span><span·class="p"·data-group-id="8888607210-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·14bedd8417266758d838983360a4ca1e31121e9ea7c01803376c0d1828dbfc2a·...·]-1">}</span><span·class="p">.</span><span·class="w">297 ············</span><span·class="p"·data-group-id="3443577384-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="s">&quot;letmein&quot;</span><span·class="p"·data-group-id="3443577384-5">}</span><span·class="p"·data-group-id="3443577384-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·4a3cebb2546642942f15831c7d02cd5799bb4bd431894f5d5bbb945284cf471c·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
298 </span><span·class="p"·data-group-id="8888607210-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="8888607210-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="3443577384-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="3443577384-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="2588864891-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="2588864891-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="7079164688-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="7079164688-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
302 ····</span><span·class="p"·data-group-id="2588864891-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="2588864891-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:·168,·SHA:·1c604f5493c54370337eb800f07eda18b420cd6dbfd3166fbe2f541fe04e7d0b·...·]-3">)</span><span·class="p">,</span><span·class="w">302 ····</span><span·class="p"·data-group-id="7079164688-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="7079164688-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:·168,·SHA:·bc93e254c8c0939c178257d914ee4f915f75405c3509c89895666ae80e6b89fc·...·]-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="2588864891-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="2588864891-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="7079164688-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="7079164688-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="2588864891-5">(</span><span·class="ss">ftp</span><span·class="p"·data-group-id="2588864891-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="7079164688-5">(</span><span·class="ss">ftp</span><span·class="p"·data-group-id="7079164688-5">)</span><span·class="p">.</span><span·class="w">
  
306 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="2588864891-6">(</span><span·class="p"·data-group-id="2588864891-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="7079164688-6">(</span><span·class="p"·data-group-id="7079164688-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
307 ····</span><span·class="p"·data-group-id="2588864891-7">[</span><span·class="p"·data-group-id="2588864891-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="2588864891-8">}</span><span·class="p">,</span><span·class="w">307 ····</span><span·class="p"·data-group-id="7079164688-7">[</span><span·class="p"·data-group-id="7079164688-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="7079164688-8">}</span><span·class="p">,</span><span·class="w">
308 ·····</span><span·class="p"·data-group-id="2588864891-9">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="2588864891-9">}</span><span·class="p"·data-group-id="2588864891-7">]</span><span·class="p">.</span><span·class="w">308 ·····</span><span·class="p"·data-group-id="7079164688-9">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="7079164688-9">}</span><span·class="p"·data-group-id="7079164688-7">]</span><span·class="p">.</span><span·class="w">
  
309 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="2588864891-10">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2588864891-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="7079164688-10">(</span><span·class="n">Config</span><span·class="p"·data-group-id="7079164688-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="2588864891-11">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="2588864891-12">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="2588864891-12">)</span><span[·...·truncated·by·diffoscope;·len:·127,·SHA:·211757ea2080364cd2f0320b223bc5c29e33f8702510d0291ba8c09e342c62e7·...·]-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="7079164688-11">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="7079164688-12">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="7079164688-12">)</span><span[·...·truncated·by·diffoscope;·len:·127,·SHA:·8ce82d37f84638f2ccf4a20d7af523ab4f71abf09517ed01318c67d6c0f3c5e4·...·]-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="2588864891-13">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="2588864891-14">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·65e7349fb019daa660756974c5292c4953c4a0425e9a583ded2cabcfd186558e·...·]-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="7079164688-13">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="7079164688-14">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·184,·SHA:·da33ee20dd8e35f591d8ca0c4423a77323388b55ef107484eb4bceb035934ec0·...·]-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="2588864891-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="2588864891-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="7079164688-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="7079164688-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="3562883086-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="3562883086-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="1658559706-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="1658559706-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
315 ····</span><span·class="p"·data-group-id="3562883086-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle1</span><span·class="p"·data-group-id="3562883086-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·178,·SHA:·6195347673f97849d7d8494330415892f1a62f30b0c2d8291c03fc740e956d92·...·]6-3">)</span><span·class="p">,</span><span·class="w">315 ····</span><span·class="p"·data-group-id="1658559706-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle1</span><span·class="p"·data-group-id="1658559706-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·178,·SHA:·b9f95c6115852b6711b8e4f1401381e4032052dd312d0250e5050c4573a092a4·...·]6-3">)</span><span·class="p">,</span><span·class="w">
316 ····</span><span·class="p"·data-group-id="3562883086-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle2</span><span·class="p"·data-group-id="3562883086-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·178,·SHA:·83c0b3adb382e2c619f5862c65f885bb5514bca1dc7d28114224963bddafba1e·...·]6-5">)</span><span·class="p">,</span><span·class="w">316 ····</span><span·class="p"·data-group-id="1658559706-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle2</span><span·class="p"·data-group-id="1658559706-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ct_ftp</span[·...·truncated·by·diffoscope;·len:·178,·SHA:·236305a2274ff14880778ccf0e66cf933030085c48cd00f6e7feb849e016ea3b·...·]6-5">)</span><span·class="p">,</span><span·class="w">
317 ····</span><span·class="p"·data-group-id="3562883086-6">[</span><span·class="p"·data-group-id="3562883086-7">{</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="p"·data-group-id="3562883086-8">[</span><span·class="n">Handle1</span><span·class="p">,</span><span·class="n"[·...·truncated·by·diffoscope;·len:·262,·SHA:·cb4d5f0569448fbeab96186b8087191ddb076b189677f58e6640121ae8ed2919·...·]6-6">]</span><span·class="p">.</span><span·class="w">317 ····</span><span·class="p"·data-group-id="1658559706-6">[</span><span·class="p"·data-group-id="1658559706-7">{</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="p"·data-group-id="1658559706-8">[</span><span·class="n">Handle1</span><span·class="p">,</span><span·class="n"[·...·truncated·by·diffoscope;·len:·262,·SHA:·3c17ece675fe87c4c3eb682ab6612a98826b22ec4f3f1eb8ecbd45fea8ae8814·...·]6-6">]</span><span·class="p">.</span><span·class="w">
  
318 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="3562883086-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="3562883086-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="1658559706-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="1658559706-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="3562883086-10">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3562883086-11">(</span><span·class="n">Handle</span><span·class="p"·data-group-id="3562883086-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·213,·SHA:·2d6c7807b38664335bee5a1804dc9f5bb3b76349881b54503a3ac85a75ada7e5·...·]6-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="1658559706-10">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1658559706-11">(</span><span·class="n">Handle</span><span·class="p"·data-group-id="1658559706-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·213,·SHA:·f6843846e064853e7e2360abd3cfbe7ecbfd3c6356df1cf6960a13b66dee5513·...·]6-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="3562883086-13">(</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="3562883086-13">)</span><span·class="p"·data-group-id="3562883086-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="1658559706-13">(</span><span·class="ss">ftp_handles</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="1658559706-13">)</span><span·class="p"·data-group-id="1658559706-10">)</span><span·class="p">.</span><span·class="w">
  
321 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="3562883086-14">(</span><span·class="p"·data-group-id="3562883086-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="1658559706-14">(</span><span·class="p"·data-group-id="1658559706-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
322 ····</span><span·class="p"·data-group-id="3562883086-15">[</span><span·class="p"·data-group-id="3562883086-16">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">ftp_host</span><span·class="p"·data-group-id="3562883086-16">}</span><span·class="p">,</span><span·class="w">322 ····</span><span·class="p"·data-group-id="1658559706-15">[</span><span·class="p"·data-group-id="1658559706-16">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">ftp_host</span><span·class="p"·data-group-id="1658559706-16">}</span><span·class="p">,</span><span·class="w">
323 ·····</span><span·class="p"·data-group-id="3562883086-17">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="3562883086-17">}</span><span·class="p"·data-group-id="3562883086-15">]</span><span·class="p">.</span><span·class="w">323 ·····</span><span·class="p"·data-group-id="1658559706-17">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="1658559706-17">}</span><span·class="p"·data-group-id="1658559706-15">]</span><span·class="p">.</span><span·class="w">
  
324 </span><span·class="nf">ftptest</span><span·class="p"·data-group-id="3562883086-18">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3562883086-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="1658559706-18">(</span><span·class="n">Config</span><span·class="p"·data-group-id="1658559706-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="3562883086-19">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="3562883086-20">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="3562883086-20">)</span><span[·...·truncated·by·diffoscope;·len:·126,·SHA:·0176e926f68d903d7b32ce73634340894d23f2d83f7813e0314ce98b6062dbea·...·]6-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="1658559706-19">(</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">get_config</span><span·class="p"·data-group-id="1658559706-20">(</span><span·class="ss">lm_directory</span><span·class="p"·data-group-id="1658559706-20">)</span><span[·...·truncated·by·diffoscope;·len:·126,·SHA:·f24f403452b2ba5e3763e21c60ebdd5b148f5d0ad063b38bc0bf75187a1756db·...·]6-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="3562883086-21">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="3562883086-22">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·183,·SHA:·af03bfb16a6ff8c57cd7101c0d740792757133dc68c30d21d2beb03feb153ede·...·]6-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="1658559706-21">(</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">get_value</span><span·class="p"·data-group-id="1658559706-22">(</span><span·class="ss">priv_dir</span><span·class="p">,</span><span·class="n">Config</span><spa[·...·truncated·by·diffoscope;·len:·183,·SHA:·73ddaf3e55bba2e675a9642b69c5767f7d6173985d8db95a47bb5dfa6943ce34·...·]6-21">)</span><span·class="p">,</span><span·class="w">
327 ····</span><span·class="p"·data-group-id="3562883086-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="3562883086-23">]</span><span·class="w">·</span><span·class="o">=</s[·...·truncated·by·diffoscope;·len:·300,·SHA:·16e12d858ac8e4f128b707ea0fcbeff4c2f15a20a5c438e1d2088f5659af5f53·...·]6-24">)</span><span·class="p">,</span><span·class="w">327 ····</span><span·class="p"·data-group-id="1658559706-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="1658559706-23">]</span><span·class="w">·</span><span·class="o">=</s[·...·truncated·by·diffoscope;·len:·300,·SHA:·f47ae86f664a46d5b34705e3ee12c4828407c3acd9ce2660aba994d0e5006821·...·]6-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="3562883086-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="3562883086-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="1658559706-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="1658559706-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="1167661666-1">(</span><span·class="ss">config_driver</span><span·class="p"·data-group-id="1167661666-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="9069886600-1">(</span><span·class="ss">config_driver</span><span·class="p"·data-group-id="9069886600-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="1167661666-2">(</span><span·class="p"·data-group-id="1167661666-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:·962f41822dadb196fd570b0926d0f404826e14885380bfb8a84f67ba3aa1ab7c·...·]-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="9069886600-2">(</span><span·class="p"·data-group-id="9069886600-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:·ef531c9bc7713206d4a63057baf5c1e057eedccf0deecd7111001339676db3a3·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
338 </span><span·class="nf">read_config</span><span·class="p"·data-group-id="1167661666-4">(</span><span·class="n">ServerName</span><span·class="p"·data-group-id="1167661666-4">)</span><span·class="p">-&gt;</span><span·class="w">338 </span><span·class="nf">read_config</span><span·class="p"·data-group-id="9069886600-4">(</span><span·class="n">ServerName</span><span·class="p"·data-group-id="9069886600-4">)</span><span·class="p">-&gt;</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.7/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="1342245342-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="1342245342-1">}</span><span·class="p">.</span><span·class="w">204 </span><span·class="p"·data-group-id="2491984432-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="2491984432-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="1342245342-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="1342245342-2">}</span><span·class="p">.</span><span·class="w">207 </span><span·class="p"·data-group-id="2491984432-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="2491984432-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="1342245342-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="1342245342-3">}</span><span·class="p">.</span><span·class="w">210 </span><span·class="p"·data-group-id="2491984432-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="2491984432-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="1342245342-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="1342245342-4">}</span><span·class="p">.</span><span·class="w">213 </span><span·class="p"·data-group-id="2491984432-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="2491984432-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="1342245342-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="1342245342-5">}</span><span·class="p">.</span><span·class="w">216 </span><span·class="p"·data-group-id="2491984432-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="2491984432-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="1342245342-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="1342245342-6">}</span><span·class="p">.</span><span·class="w">218 </span><span·class="p"·data-group-id="2491984432-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="2491984432-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="1342245342-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="1342245342-7">}</span><span·class="p">.</span><span·class="w">221 </span><span·class="p"·data-group-id="2491984432-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="2491984432-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="1342245342-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="1342245342-8">}</span><span·class="p">.</span><span·class="w">223 </span><span·class="p"·data-group-id="2491984432-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="2491984432-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="1342245342-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="1342245342-9">}</span><span·class="p">.</span><span·class="w">225 </span><span·class="p"·data-group-id="2491984432-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="2491984432-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="1342245342-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="1342245342-10">}</span><span·class="p">.</span><span·class="w">227 </span><span·class="p"·data-group-id="2491984432-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="2491984432-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="1342245342-11">{</span><span·class="ss">cross</span><span·class="p">,</span><span·class="p"·data-group-id="1342245342-12">[</span><span·class="p"·data-group-id="1342245342-13">{</span><span·class="n">Tag</span><span·class="p">,</span><span·class="n">Mods</[·...·truncated·by·diffoscope;·len:·153,·SHA:·54c0b68f928b08436dd06f6a04c403169a78eb96b9fb44cf33b651edef7578ee·...·]2-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="2491984432-11">{</span><span·class="ss">cross</span><span·class="p">,</span><span·class="p"·data-group-id="2491984432-12">[</span><span·class="p"·data-group-id="2491984432-13">{</span><span·class="n">Tag</span><span·class="p">,</span><span·class="n">Mods</[·...·truncated·by·diffoscope;·len:·153,·SHA:·aa6f54161b230322c83de1cbfbad4a3474b4678931c979bae134332814fc7653·...·]2-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="3766583670-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:·de977a4917ffce94a34715fb7e32cc8aadca3dcc5dabf90cec9b9606ee2b3454·...·]-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="7483153548-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:·87b287594c28f9faac38a4e375832b8ea4e186fa3c6c0388106b75660c67aaef·...·]-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="9944118562-1">(</span><span·class="n">Level</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9944118562-2">[</span><span·class="p"·data-group-id="9944118562-3">{</span><span·class="ss">s1</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·387,·SHA:·70ad55fdecaca3e8afcf237d5d20aef4635f2db5b08a3aa73444adf6023e458a·...·]-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="4721215950-1">(</span><span·class="n">Level</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4721215950-2">[</span><span·class="p"·data-group-id="4721215950-3">{</span><span·class="ss">s1</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·387,·SHA:·367e219c58e0b34f3bc75f285aa79826af4d265df7811a6a02c0f86f4caec289·...·]-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.7/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.3/doc/html/erlang.html#t:term/0">term</a>()·|·Default.</pre>1917 ························ValueOrElement·::·<a·href="../../../../erts-15.2.3/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="4574241806-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="4574241806-2">[</span><span·class="p"·data-group-id="4574241806-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="4574241806-3">}</span><span·class="p">,</span><span·class="w"> 
1922 ·······</span><span·class="p"·data-group-id="4574241806-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="p"·data-group-id="4574241806-5">[</span><span·class="p"·data-group-id="4574241806-6">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="4574241806-6">}</span><span·class="p">,</span><span·class="w"> 
1923 ··············</span><span·class="p"·data-group-id="4574241806-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="4574241806-7">}</span><span·class="p"·data-group-id="4574241806-5">]</span><span·class="p"·data-group-id="4574241806-4">}</span><span·class="p"·data-group-id="4574241806-2">]</span><span·class="p"·data-group-id="4574241806-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="1630416510-1">(</span><span·class="ss">unix</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="1630416510-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1630416510-2">[</span><span·class="p"·data-group-id="1630416510-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="1630416510-3">}</span><span·class="p">,</span><span·class="w"> 
1924 ·</span><span·class="p"·data-group-id="1630416510-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1630416510-5">[</span><span·class="p"·data-group-id="1630416510-6">{</span><span·class="[·...·truncated·by·diffoscope;·len:·520,·SHA:·3d6c6200b3574d5fdf31e53b44685a0ca89e1e9a6baabf9623671ca99b30ffec·...·]</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"·[·...·truncated·by·diffoscope;·len:·348,·SHA:·57f3526942d616be4d9be5f5bfb7c8b24067b336d3c11db0e267d068951b9efb·...·]</span><span·class="w">
 1922 ·······</span><span·class="p"·data-group-id="6445962814-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="p"·data-group-id="6445962814-5">[</span><span·class="p"·data-group-id="6445962814-6">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="6445962814-6">}</span><span·class="p">,</span><span·class="w">
 1923 ··············</span><span·class="p"·data-group-id="6445962814-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="6445962814-7">}</span><span·class="p"·data-group-id="6445962814-5">]</span><span·class="p"·data-group-id="6445962814-4">}</span><span·class="p"·data-group-id="6445962814-2">]</span><span·class="p"·data-group-id="6445962814-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="1441648188-1">(</span><span·class="ss">unix</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="1441648188-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1441648188-2">[</span><span·class="p"·data-group-id="1441648188-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="1441648188-3">}</span><span·class="p">,</span><span·class="w">
 1924 ·</span><span·class="p"·data-group-id="1441648188-4">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1441648188-5">[</span><span·class="p"·data-group-id="1441648188-6">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="1441648188-6">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1441648188-7">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="1441648188-7">}</span><span·class="p"·data-group-id="1441648188-5">]</span><span·class="p"·data-group-id="1441648188-4">}</span><span·class="p"·data-group-id="1441648188-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="1630416510-8">(</span><span·class="p"·data-group-id="1630416510-9">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">telnet</span><span·class="p"·data-group-id="1630416510-9">}</span><span·class="p">,</span><span·class="n">Default[·...·truncated·by·diffoscope;·len:·48,·SHA:·a37add9cd4e6392fea98f46dfd8b8914ad354a4b4957e559782ad0eef785a263·...·]-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="1441648188-8">(</span><span·class="p"·data-group-id="1441648188-9">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">telnet</span><span·class="p"·data-group-id="1441648188-9">}</span><span·class="p">,</span><span·class="n">Default[·...·truncated·by·diffoscope;·len:·48,·SHA:·9dd106b2703c0aeed815dc9c30ac4f51ab601017eafc5bedc3748bbb776f8ba6·...·]-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="1630416510-10">(</span><span·class="p"·data-group-id="1630416510-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="1630416510-11[·...·truncated·by·diffoscope;·len:·105,·SHA:·cb3c16002f64f8e960bbf8d3ec58b43d163de5ae55309d9ce1a2081df25ec63f·...·]-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="1441648188-10">(</span><span·class="p"·data-group-id="1441648188-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="1441648188-11[·...·truncated·by·diffoscope;·len:·105,·SHA:·8dae0d0719d9b0098db8d9b01eecf43b3b5d88c3bdc2fa7399925cd60576cf3a·...·]-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="1630416510-12">(</span><span·class="p"·data-group-id="1630416510-13">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">ftp</span><span·class="p"·data-group-id="1630416510-13">}</span><span·class="p">,</span><span·class="n">Default[·...·truncated·by·diffoscope;·len:·48,·SHA:·a37add9cd4e6392fea98f46dfd8b8914ad354a4b4957e559782ad0eef785a263·...·]-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="1441648188-12">(</span><span·class="p"·data-group-id="1441648188-13">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">ftp</span><span·class="p"·data-group-id="1441648188-13">}</span><span·class="p">,</span><span·class="n">Default[·...·truncated·by·diffoscope;·len:·48,·SHA:·9dd106b2703c0aeed815dc9c30ac4f51ab601017eafc5bedc3748bbb776f8ba6·...·]-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="1630416510-14">(</span><span·class="ss">unknownkey</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="1630416510-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="1441648188-14">(</span><span·class="ss">unknownkey</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="1441648188-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="9358472680-1">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="p"·data-group-id="9358472680-2">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">user</span><span·class="p"·data-group-id="9358472680-2">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·d6d724661905c8f1fec5ac574b7339c715af031d31c21798d27dac23b0ceed2c·...·]-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="4686141216-1">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="p"·data-group-id="4686141216-2">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="ss">user</span><span·class="p"·data-group-id="4686141216-2">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·cb5bb61573f31d02a8c753560f2744801bb936853d5ef292bfd00c2c591fd2cd·...·]-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="9358472680-3">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="9358472680-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:·5a280bb663b6c6957074a24b463244f93d0426db4a14df4bcbfc22791a1726a6·...·]-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="4686141216-3">(</span><span·class="ss">myuser</span><span·class="p">,</span><span·class="n">Default</span><span·class="p"·data-group-id="4686141216-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:·34084f4fca90a162e893e725046ea07b80761ba6f2dcce8302a567d775f1b3db·...·]-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.3/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.3/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="3750248722-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="3750248722-2">(</span><span·class="p"·data-group-id="3750248722-2">)</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·237,·SHA:·cf9e50d1fc34d86a523eadd149a4e07342a409d2cb624ff96f162c74ea4c0aaa·...·]-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="7095396939-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="7095396939-2">(</span><span·class="p"·data-group-id="7095396939-2">)</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·237,·SHA:·45f6c76639a8fbaa80c4298b286da4d33b0728b6940c10065742f33c7315dcd5·...·]-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.3/doc/html/erlang.html#t:string/0">string</a>(),2236 ·····················Key·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>(),
2237 ·····················KeyFile·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>(),2237 ·····················KeyFile·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>(),
2238 ·····················Reason·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>().</pre>2238 ·····················Reason·::·<a·href="../../../../erts-15.2.3/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="7642711743-1">(</span><span·class="p"·data-group-id="7642711743-2">[</span><span·class="p"·data-group-id="7642711743-3">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="p"·data-group-id="7642711743-4">[</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·302,·SHA:·f51474584175f4c9c2df69e43acd26150a49b36a4e1e50ca36e2d27e7f88c222·...·]3-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="5799690363-1">(</span><span·class="p"·data-group-id="5799690363-2">[</span><span·class="p"·data-group-id="5799690363-3">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="p"·data-group-id="5799690363-4">[</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·302,·SHA:·1bd35fac0d5d2a916bce83d7d8a09a27f524553d597e203b890062584c42ce60·...·]3-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.3/doc/html/erlang.html#t:atom/0">atom</a>(),3026 ·····················SubKey·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:atom/0">atom</a>(),
3027 ·····················Reason·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>().</pre>3027 ·····················Reason·::·<a·href="../../../../erts-15.2.3/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="4602323414-1">(</span><span·class="ss">myvar</span><span·class="p"·data-group-id="4602323414-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:·6b17e4953e150c32fbadc339ec1b2451796da46e6f211dfc1c3771580216f5c3·...·]-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="8914998829-1">(</span><span·class="ss">myvar</span><span·class="p"·data-group-id="8914998829-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:·aca7d1455d525c0a0cf895b16b5aa0d6b9b05d06adb13bc4e1147f4452020ed7·...·]-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="7919117605-1">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="7919117605-2">{</span><span·class="ss">machine</span><span·class="p">,</span><span·class="nb">node</span><span·class="p"·data-group-id="7919117605-2">}</span><span·class="p"·data-group-id="7919117605-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:·934246bb5675488829bf27d0ce67b31eedd3ecd5b3f113acd16cf2becfa815ea·...·]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:·b5f6cd964e65d4b9775dfc9bfa74ac07d73a9d01c067eab1866aa02310d045d7·...·]
 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="3846728542-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="3846728542-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="7928339821-1">{</span><span·class="ss">machine</span><span·class="p">,</span><span·class="p"·data-group-id="7928339821-2">[</span><span·class="p"·data-group-id="7928339821-3">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="7928339821-4">[</span><span·class="p"·data-group-id="7928339821-5">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="7928339821-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="7928339821-6">{</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="7928339821-6">}</span><span·class="p"·data-group-id="7928339821-4">]</span><span·class="p"·data-group-id="7928339821-3">}</span><span·class="p"·data-group-id="7928339821-2">]</span><span·class="p"·data-group-id="7928339821-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="5403905552-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="5403905552-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="9382764865-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="9382764865-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="5403905552-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="5403905552-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="9382764865-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="9382764865-2">)</span><span·class="p">.</span><span·class="w">
3434 </span><span·class="p"·data-group-id="5403905552-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="5403905552-3">}</span><span·class="gp·unselectable">3434 </span><span·class="p"·data-group-id="9382764865-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="9382764865-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="5403905552-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="5403905552-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="9382764865-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="9382764865-4">)</span><span·class="p">.</span><span·class="w">
3436 </span><span·class="p"·data-group-id="5403905552-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5403905552-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:·a6e29461de5d0ccfd0e0e2e1b5648db38868a7a1caf60d7e0baad6e94a36a575·...·]-5">}</span></code></pre>3436 </span><span·class="p"·data-group-id="9382764865-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9382764865-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:·01cf37c1dacd318ce1261fbfcbf9c099a4bc3d74495e5576ca8855a643e62937·...·]-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.7/doc/html/ct_ftp.html
    
Offset 567, 18 lines modifiedOffset 567, 18 lines modified
567 ·················LocalFile·::·<a·href="../../../../lib/kernel-10.2.3/doc/html/file.html#t:filename/0">file:filename</a>(),567 ·················LocalFile·::·<a·href="../../../../lib/kernel-10.2.3/doc/html/file.html#t:filename/0">file:filename</a>(),
568 ·················RemoteFile·::·<a·href="../../../../lib/kernel-10.2.3/doc/html/file.html#t:filename/0">file:filename</a>(),568 ·················RemoteFile·::·<a·href="../../../../lib/kernel-10.2.3/doc/html/file.html#t:filename/0">file:filename</a>(),
569 ·················Reason·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>().</pre>569 ·················Reason·::·<a·href="../../../../erts-15.2.3/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="7404156898-1">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="7404156898-2">[</span><span·class="p"·data-group-id="7404156898-3">{</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="7404156898-3">}</span><span·class="p"·data-group-id="7404156898-2">]</span><span·class="p"·data-group-id="7404156898-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="9998745637-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="999874563[·...·truncated·by·diffoscope;·len:·239,·SHA:·b8ed7e4c0ff3cbeef509e57fde95e43d4f06909e3c1da05659bdf716d193777c·...·]572 configuration·file·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5526084888-1">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="p"·data-group-id="5526084888-2">[</span><span·class="p"·data-group-id="5526[·...·truncated·by·diffoscope;·len:·364,·SHA:·56844711d61d3b5fecc260afe9c02ff3822c9d7840d6e810e7649c7db42b4622·...·]
 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="4300261165-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="4300261165-2">[</span><span·class="p"·data-group-id="4300261165-3">{</span><span·class="ss">ftp</span><span·class="p">,</span><span·class="n">IpAddr</span><span·class="p"·data-group-id="4300261165-3">}</span><span·class="p">,</span><span·class="w">
574 ·······</span><span·class="p"·data-group-id="9998745637-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="9998745637-4">}</span><span·class="p">,</span><span·class="w">574 ·······</span><span·class="p"·data-group-id="4300261165-4">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">Username</span><span·class="p"·data-group-id="4300261165-4">}</span><span·class="p">,</span><span·class="w">
575 ·······</span><span·class="p"·data-group-id="9998745637-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="9998745637-5">}</span><span·class="p"·data-group-id="9998745637-2">]</span><span·class="p"·data-group-id="9998745637-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="4300261165-5">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="4300261165-5">}</span><span·class="p"·data-group-id="4300261165-2">]</span><span·class="p"·data-group-id="4300261165-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.7/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="6865558471-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="6865558471-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="6268845227-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="6268845227-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="6865558471-2">(</span><span·class="p"·data-group-id="6865558471-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="6268845227-2">(</span><span·class="p"·data-group-id="6268845227-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
258 ····</span><span·class="p"·data-group-id="6865558471-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="6865558471-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">258 ····</span><span·class="p"·data-group-id="6268845227-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="6268845227-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
259 ······</span><span·class="p"·data-group-id="6865558471-4">{</span><span·class="p"·data-group-id="6865558471-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="6865558471-5">}</[·...·truncated·by·diffoscope;·len:·125,·SHA:·5edfb89fac3f8c8871737bd2b05a1ef7b1f34e6bf7d44cfacf23dab2cf447745·...·]-4">}</span><span·class="p">;</span><span·class="w">259 ······</span><span·class="p"·data-group-id="6268845227-4">{</span><span·class="p"·data-group-id="6268845227-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="6268845227-5">}</[·...·truncated·by·diffoscope;·len:·125,·SHA:·63b05a44482c1cf8699554baf2f5522e64bd6af8bcf220cab398668f0e272689·...·]-4">}</span><span·class="p">;</span><span·class="w">
260 ····</span><span·class="p"·data-group-id="6865558471-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="6865558471-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">260 ····</span><span·class="p"·data-group-id="6268845227-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="6268845227-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
261 ······</span><span·class="p"·data-group-id="6865558471-7">{</span><span·class="p"·data-group-id="6865558471-8">[</span><span·class="p"·data-group-id="6865558471-9">{</span><span·class="ss">db_handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handle</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·648,·SHA:·ddcb48a1fd44801aa00fbcd45f40082449eb0461c711e8ee789805189f388437·...·]-7">}</span><span·class="w">261 ······</span><span·class="p"·data-group-id="6268845227-7">{</span><span·class="p"·data-group-id="6268845227-8">[</span><span·class="p"·data-group-id="6268845227-9">{</span><span·class="ss">db_handle</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Handle</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·648,·SHA:·e042e0cd20d1c70c4a043b3da895f2a76edebdcc8a38175338eb3d33707753fa·...·]-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="1631293599-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:·505,·SHA:·66226c4aa72654ec2f859d3f753815294a2060257e2e2e044a45aa9ecf558c44·...·]9-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="5702149459-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:·505,·SHA:·7026eaa004cd9d63ae50f70285b5a0ceb5436ae4fe66436d6c8a45db0d5caf8d·...·]9-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="1631293599-4">(</span><span·class="p"·data-group-id="1631293599-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="5702149459-4">(</span><span·class="p"·data-group-id="5702149459-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="1631293599-5">{</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="1631293599-6">(</span><span·class="ss">tc_status</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·188,·SHA:·ef786ce8cb7513baef20480caf4cfa4d67ae186b87c2f52305e7388c519f0958·...·]9-5">}</span><span·class="p">;</span><span·class="w">287 ······</span><span·class="p"·data-group-id="5702149459-5">{</span><span·class="nc">proplists</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="5702149459-6">(</span><span·class="ss">tc_status</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·188,·SHA:·f73d55f7a3a0520ba4d8ee33084cf42fd48e45b44995cba0120335c5a27d837c·...·]9-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="1631293599-7">{</span><span·class="p"·data-group-id="1631293599-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="1631293599-8">}</spa[·...·truncated·by·diffoscope;·len:·121,·SHA:·1eb5bad1c3db317ae5e79c72b45e8aaf54aad8314b781c0afcdd45dfd4af915e·...·]9-7">}</span><span·class="w">290 ······</span><span·class="p"·data-group-id="5702149459-7">{</span><span·class="p"·data-group-id="5702149459-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="5702149459-8">}</spa[·...·truncated·by·diffoscope;·len:·121,·SHA:·8babf9755f75168bef8a9b1bdfc9531fc239e0a1b4613af1dbfb9c87222ad818·...·]9-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="1631293599-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:·188,·SHA:·ae132aac7bda4e35b47041e4183f3eaf002b2bcc07823f7f12df2f49fb9298d8·...·]9-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="5702149459-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:·188,·SHA:·500bb035cd5d5a4033d379ff3a62f66c1c991f3082ada65e772ba1619360f171·...·]9-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="1631293599-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="1631293599-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="5702149459-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="5702149459-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.3/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.3/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="3092032487-1">(</span><span·class="ss">example_cth</span><span·class="p"·data-group-id="3092032487-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="6190203119-1">(</span><span·class="ss">example_cth</span><span·class="p"·data-group-id="6190203119-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="3092032487-2">(</span><span·class="p"·data-group-id="3092032487-3">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="3092032487-3">]</span><span·class="p"·data-group-id="3092032487-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="6190203119-2">(</span><span·class="p"·data-group-id="6190203119-3">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="6190203119-3">]</span><span·class="p"·data-group-id="6190203119-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="3092032487-4">(</span><span·class="p"·data-group-id="3092032487-5">[</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3092032487-5">]</span><span·class="p"·data-group-id="3092032487-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="6190203119-4">(</span><span·class="p"·data-group-id="6190203119-5">[</span><span·class="ss">id</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6190203119-5">]</span><span·class="p"·data-group-id="6190203119-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="3092032487-6">(</span><span·class="p"·data-group-id="3092032487-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="3092032487-7">]</span><span·class="p"·data-group-id="309203[·...·truncated·by·diffoscope;·len:·4,·SHA:·387c447c4e9503163ed092be997cadddfd4c8682a7d222ef29e8b24122015662·...·]-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="6190203119-6">(</span><span·class="p"·data-group-id="6190203119-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="6190203119-7">]</span><span·class="p"·data-group-id="619020[·...·truncated·by·diffoscope;·len:·4,·SHA:·2c7881a5e706e7ad13217ab8e9dc6da1f5f8e96e2c45ed0244437477d09432d2·...·]-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="3092032487-8">(</span><span·class="p"·data-group-id="3092032487-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="3092032487-9">]</span><span·class="p"·data-group-id="309203[·...·truncated·by·diffoscope;·len:·4,·SHA:·387c447c4e9503163ed092be997cadddfd4c8682a7d222ef29e8b24122015662·...·]-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="6190203119-8">(</span><span·class="p"·data-group-id="6190203119-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="6190203119-9">]</span><span·class="p"·data-group-id="619020[·...·truncated·by·diffoscope;·len:·4,·SHA:·2c7881a5e706e7ad13217ab8e9dc6da1f5f8e96e2c45ed0244437477d09432d2·...·]-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="3092032487-10">(</span><span·class="p"·data-group-id="3092032487-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="3092032487-11">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·af271067bf62fde194ead4d358d341194f1e9d0f7a255ce414241599e98226ed·...·]-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="6190203119-10">(</span><span·class="p"·data-group-id="6190203119-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="6190203119-11">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·c4ca6917dbab3496277ad4303a88aa8ca5ee135f4b9b138853fec9a0df8b5a16·...·]-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="3092032487-12">(</span><span·class="p"·data-group-id="3092032487-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="3092032487-13">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·af271067bf62fde194ead4d358d341194f1e9d0f7a255ce414241599e98226ed·...·]-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="6190203119-12">(</span><span·class="p"·data-group-id="6190203119-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="6190203119-13">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·c4ca6917dbab3496277ad4303a88aa8ca5ee135f4b9b138853fec9a0df8b5a16·...·]-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="3092032487-14">(</span><span·class="p"·data-group-id="3092032487-15">[</span><span·class="ss">on_tc_skip</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="3092032487-15">]</span><span·class="p"·data-group-id="3092032487-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="6190203119-14">(</span><span·class="p"·data-group-id="6190203119-15">[</span><span·class="ss">on_tc_skip</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="6190203119-15">]</span><span·class="p"·data-group-id="6190203119-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="3092032487-16">(</span><span·class="p"·data-group-id="3092032487-17">[</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="3092032487-17">]</span><span·class="p"·data-group-id="3092032487-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="6190203119-16">(</span><span·class="p"·data-group-id="6190203119-17">[</span><span·class="ss">terminate</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="6190203119-17">]</span><span·class="p"·data-group-id="6190203119-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="3092032487-18">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3092032487-19">{</span><span·class="ss">filename</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">total[·...·truncated·by·diffoscope;·len:·489,·SHA:·4e550a35be1d0110731dd512a93aac5d7f17e895844d80dd4ed03e8c19bdeec9·...·]-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="6190203119-18">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6190203119-19">{</span><span·class="ss">filename</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">total[·...·truncated·by·diffoscope;·len:·489,·SHA:·e1659573562e68f5c2285af085f2a78098adfde083ebf17ca8e709472fa51334·...·]-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="3092032487-20">(</span><span·class="ss">test_run</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3092032487-21">{</span><span·class="ss">total</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">skipp[·...·truncated·by·diffoscope;·len:·182,·SHA:·ce4256a1a44958d00335d8fb30cb8d6f71a3ab88c957f6636620c63571965eb5·...·]-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="6190203119-20">(</span><span·class="ss">test_run</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6190203119-21">{</span><span·class="ss">total</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">skipp[·...·truncated·by·diffoscope;·len:·182,·SHA:·51f2bd621dfe272053e37823c98079e370da0d09f437db7cb3e67302fede1735·...·]-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="3092032487-22">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="3092032487-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="6190203119-22">(</span><span·class="n">Opts</span><span·class="p"·data-group-id="6190203119-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="3092032487-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:·13,·SHA:·63d8124eee94dba224bad57829e087987d20b845ead5caa24319df978a4f619a·...·]-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="6190203119-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:·13,·SHA:·7289eacffdb4d278db8496379394ce89743e72a794b84dfa154b1eff64d4a366·...·]-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="3092032487-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="3092032487-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="6190203119-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="6190203119-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
372 ····</span><span·class="p"·data-group-id="3092032487-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="3092032487-26">{</span><span·class="ss">filename</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·602,·SHA:·fcc163fde364284fc1ffb5ab034119eebbfe7c591459c07f6d2d388278e11f8d·...·]-25">}</span><span·class="p">.</span><span·class="w">372 ····</span><span·class="p"·data-group-id="6190203119-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="6190203119-26">{</span><span·class="ss">filename</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·602,·SHA:·06886472713235e2046aee26e48d5b1eea17099be06a1cff620c78b0df8825cd·...·]-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="3092032487-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="3092032487-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="6190203119-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="6190203119-28">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
375 ····</span><span·class="p"·data-group-id="3092032487-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="3092032487-30">{</span><span·class="ss">suit[·...·truncated·by·diffoscope;·len:·461,·SHA:·e3108f5f9e0b0e65a9e8a7e6ec303a3cc5aac4c58c8b1908d3f94fe89a2805da·...·]-29">}</span><span·class="p">.</span><span·class="w">375 ····</span><span·class="p"·data-group-id="6190203119-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="6190203119-30">{</span><span·class="ss">suit[·...·truncated·by·diffoscope;·len:·461,·SHA:·fc551b026905aec951c264fe2607af6bbaa47758c068401b4ab69a96e0f382b1·...·]-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="3092032487-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:·18,·SHA:·00fe0397726fe9f5712a66a1ffa79a4761e8fd46b5de6b14aca756673df3814d·...·]-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="6190203119-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:·18,·SHA:·afb2bfdab875370f597da92902637223fbc7c0d429cce5660f3443ef047ea403·...·]-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="3092032487-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="6190203119-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="3092032487-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="3092032487-34">)</span><span·class="p"·data-group-id="3092032487-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="6190203119-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="6190203119-34">)</span><span·class="p"·data-group-id="6190203119-33">}</span><span·class="p">,</span><span·class="w">
380 ····</span><span·class="p"·data-group-id="3092032487-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="3092032487-36">{</span><span·class="ss">data[·...·truncated·by·diffoscope;·len:·406,·SHA:·31afae52ab1cd257f773110cc6a525283a74217ba89ab129e9c5c7b187b4b82b·...·]-37">]</span><span·class="p">,</span><span·class="w">380 ····</span><span·class="p"·data-group-id="6190203119-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="6190203119-36">{</span><span·class="ss">data[·...·truncated·by·diffoscope;·len:·406,·SHA:·a53171b404d02c3e6cbbb888af2c3b6777c21e710da12692cb8999cfa0b256d9·...·]-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="3092032487-36">}</span><span·class="p"·data-group-id="3092032487-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="6190203119-36">}</span><span·class="p"·data-group-id="6190203119-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="3092032487-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:·38,·SHA:·04bcae97cb90ea45b94d770dcc18a28301bf836d409a2c2c1822673c4beb3fd3·...·]-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="6190203119-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:·38,·SHA:·ba77baf0eef4d3d30c39cef8efc70de2fb1db6f3916e3bc5effa6d7f5330cd77·...·]-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="3092032487-39">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="3092032487-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="6190203119-39">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="6190203119-39">)</span><span·class="p">,</span><span·class="w">
385 ····</span><span·class="p"·data-group-id="3092032487-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="3092032487-41">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·590,·SHA:·7ed4769c5667dca421347f65a52008cdd11d6b3fa1796abbbef9a9cbb5b807a9·...·]-40">}</span><span·class="p">.</span><span·class="w">385 ····</span><span·class="p"·data-group-id="6190203119-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="6190203119-41">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·590,·SHA:·c1ca12179b4503970b9d1538ffa29d2b126b216628a418d8b03f9c2e81a577bc·...·]-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="3092032487-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:·67,·SHA:·9f4dc7b4c7e89d02782b18647949892bd3f79f14660bf047feaa43e6d2df83de·...·]-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="6190203119-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:·67,·SHA:·9896352ea8e6be86f9c5aaa48ef9dca5681b4309b1586b263048dc37a36335d8·...·]-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="3092032487-43">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="3092032487-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="6190203119-43">(</span><span·class="ss">microsecond</span><span·class="p"·data-group-id="6190203119-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="3092032487-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:·343,·SHA:·aa5197d0759103e07e3fdf266f0bca62dba48ae1eccb8e5198f453606c15a981·...·]-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="6190203119-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:·343,·SHA:·05176ff98c0ac68333a270d19a9cf018d05892ccec574623635cfe5823089171·...·]-44">}</span><span·class="p">,</span><span·class="w">
390 ····</span><span·class="p"·data-group-id="3092032487-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="3092032487-46">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·693,·SHA:·a311c9665acaccb61a9166ccb520bdfae4002d6b0e6dd22dbb6faf005893e80f·...·]-45">}</span><span·class="p">.</span><span·class="w">390 ····</span><span·class="p"·data-group-id="6190203119-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="6190203119-46">{</span><span·class="ss">ts</[·...·truncated·by·diffoscope;·len:·693,·SHA:·3b06136fb01782454c60404f66cf728e84e1aa7e13bd0db70a1cb0369b2f9f7e·...·]-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="3092032487-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:·134,·SHA:·80830d4a545a2c7d6c648ab0321cc9ed30b0d37933c9bebdd2e22604e86923ea·...·]-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="6190203119-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:·134,·SHA:·4a825b38e1b263663ea67d1835e991919b3c2309d7854bde3197754c856d1c3b·...·]-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="3092032487-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:·144,·SHA:·b7d344c39c37cb90662f422b83b8fa9806535ddb20b01b45f1225047fbf6216a·...·]-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="6190203119-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:·144,·SHA:·b67cea248bbe605d8f48ef9a2774ea582cbc59f151ef3ed86a920baca01150a2·...·]-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="3092032487-50">(</span><span·class="n">State</span><span·class="p"·data-group-id="3092032487-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="6190203119-50">(</span><span·class="n">State</span><span·class="p"·data-group-id="6190203119-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="3092032487-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="3092032487-51">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·569,·SHA:·9f44db22ff1c40d1ec5f284bb241d54c54b94f8a442bd90dc30818ca77a4ae9a·...·]-52">)</span><span·class="p">,</span><span·class="w">398 ····</span><span·class="p"·data-group-id="6190203119-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="6190203119-51">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·569,·SHA:·3b3752a2a6be0d2e9095af36ae21ad82d5aecfd0fc12e325440af5a8018701b0·...·]-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="3092032487-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:·340,·SHA:·a741e3a4f04a4e1398837ceeb694a85b968d86b5a56111f88871a5836e574a3f·...·]-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="6190203119-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:·340,·SHA:·9485d982a9ac9b15b0483303bedaa1279befa54bb66163f94616e044dc881b1d·...·]-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="3092032487-57">(</span><span·class="n">File</span><span·class="p"·data-group-id="3092032487-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="6190203119-57">(</span><span·class="n">File</span><span·class="p"·data-group-id="6190203119-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="3092032487-58">(</span><span·class="n">State</span><span·class="p"·data-group-id="3092032487-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="6190203119-58">(</span><span·class="n">State</span><span·class="p"·data-group-id="6190203119-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.7/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.3/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.3/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="9930104202-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="9930104202-2">(</span><span·class="p"·data-group-id="9930104202-2">)</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·244,·SHA:·b3d95c7a152912efdf4a85ce787435b28f93fff505dda3e22127a8f4f2aad314·...·]-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="3502268395-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="3502268395-2">(</span><span·class="p"·data-group-id="3502268395-2">)</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·244,·SHA:·2670beec06522bc0c910d6d23248bfebeecb4c8fcf8731b1a2a1f8d75dd2d319·...·]-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.7/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="3956318331-1">(</span><span·class="p"·data-group-id="3956318331-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="3956318331-3">[</span><spa[·...·truncated·by·diffoscope;·len:·243,·SHA:·0c579d82635bd69aaa738b44f5d6a9e1e4752327a685992a6b6e58186ae68cab·...·]-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="5089214528-1">(</span><span·class="p"·data-group-id="5089214528-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="5089214528-3">[</span><spa[·...·truncated·by·diffoscope;·len:·243,·SHA:·6f519e8ccc66b9508a019f9e7728d77984df05011004082f2720f59bce26cb68·...·]-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="9470105039-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:·80cc8ddd07c8b284f8599cd2b3cf963d8096c455ab0608b87ee6790002657f47·...·]-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="3116390881-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:·fbbfe556cddbb6ac39f921021517dfd217b022080d5da6fefd41114dcb60d07a·...·]-1">}</span><span·class="p">.</span><span·class="w">
200 </span><span·class="p"·data-group-id="9470105039-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:·f701ca775cf9a61080aef3ad615053835d95cdc3aeeacf95d25e94f5f1b17653·...·]-2">}</span><span·class="p">.</span><span·class="w">200 </span><span·class="p"·data-group-id="3116390881-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:·d4097a0e1f39504b7b1afbac3d1676f423c8937c8723a190e30c01c39ba35182·...·]-2">}</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="9470105039-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:·f701ca775cf9a61080aef3ad615053835d95cdc3aeeacf95d25e94f5f1b17653·...·]-3">}</span><span·class="p">.</span><span·class="w">201 </span><span·class="p"·data-group-id="3116390881-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:·d4097a0e1f39504b7b1afbac3d1676f423c8937c8723a190e30c01c39ba35182·...·]-3">}</span><span·class="p">.</span><span·class="w">
202 </span><span·class="p"·data-group-id="9470105039-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:·f701ca775cf9a61080aef3ad615053835d95cdc3aeeacf95d25e94f5f1b17653·...·]-4">}</span><span·class="p">.</span><span·class="w">202 </span><span·class="p"·data-group-id="3116390881-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:·d4097a0e1f39504b7b1afbac3d1676f423c8937c8723a190e30c01c39ba35182·...·]-4">}</span><span·class="p">.</span><span·class="w">
203 </span><span·class="p"·data-group-id="9470105039-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:·c371562cc0eb2b57e9b20d7c4af2c5a52ee0e5784094d8bd9a6949ce323dbbff·...·]-5">}</span><span·class="p">.</span><span·class="w">203 </span><span·class="p"·data-group-id="3116390881-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:·2848bc83e9c5de0bdecd1052abcaa206750c8a5a6c600f9aba9d3bb648e3fd48·...·]-5">}</span><span·class="p">.</span><span·class="w">
204 </span><span·class="p"·data-group-id="9470105039-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="94701050[·...·truncated·by·diffoscope;·len:·2,·SHA:·0b918943df0962bc7a1824c0555a389347b4febdc7cf9d1254406d80ce44e3f9·...·]-6">}</span><span·class="p">.</span><span·class="w">204 </span><span·class="p"·data-group-id="3116390881-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="31163908[·...·truncated·by·diffoscope;·len:·2,·SHA:·5316ca1c5ddca8e6ceccfce58f3b8540e540ee22f6180fb89492904051b3d531·...·]-6">}</span><span·class="p">.</span><span·class="w">
  
205 </span><span·class="p"·data-group-id="9470105039-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="94701[·...·truncated·by·diffoscope;·len:·5,·SHA:·7cdf719ad2389da4c9dbbfc43a9243f2eb00386d0e72560e39e30539edf442ed·...·]-7">}</span><span·class="p">.</span><span·class="w">205 </span><span·class="p"·data-group-id="3116390881-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="31163[·...·truncated·by·diffoscope;·len:·5,·SHA:·45733e271e269f699f201ef03fab42bdf0b2351d7bf7a678159092c6a40f13cd·...·]-7">}</span><span·class="p">.</span><span·class="w">
206 </span><span·class="p"·data-group-id="9470105039-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="94701[·...·truncated·by·diffoscope;·len:·5,·SHA:·7cdf719ad2389da4c9dbbfc43a9243f2eb00386d0e72560e39e30539edf442ed·...·]-8">}</span><span·class="p">.</span><span·class="w">206 </span><span·class="p"·data-group-id="3116390881-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="31163[·...·truncated·by·diffoscope;·len:·5,·SHA:·45733e271e269f699f201ef03fab42bdf0b2351d7bf7a678159092c6a40f13cd·...·]-8">}</span><span·class="p">.</span><span·class="w">
  
207 </span><span·class="p"·data-group-id="9470105039-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:·508963ea485d75ecbb3f45ee0b3f3cc505d96e9cfb12c946fbf7602808371393·...·]-9">}</span><span·class="p">.</span><span·class="w">207 </span><span·class="p"·data-group-id="3116390881-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:·fd7febeda1a9fafae8f34f1e644d585169d1944d5c55f3a39977a28e4ac23e34·...·]-9">}</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p"·data-group-id="9470105039-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="9470105039-10">}</span><span·class="p">.</span><span·class="w">208 </span><span·class="p"·data-group-id="3116390881-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="3116390881-10">}</span><span·class="p">.</span><span·class="w">
  
209 </span><span·class="p"·data-group-id="9470105039-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:·eb2023578fd53ff0b044ffd446651e36e5aa8bceaa8e6875168c881c30bfb4a1·...·]-11">}</span><span·class="p">.</span><span·class="w">209 </span><span·class="p"·data-group-id="3116390881-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:·c54345ca34c6181249c5343cfe349f72d205dae52d0641fdfd1b797a89914dc6·...·]-11">}</span><span·class="p">.</span><span·class="w">
210 </span><span·class="p"·data-group-id="9470105039-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:·eb2023578fd53ff0b044ffd446651e36e5aa8bceaa8e6875168c881c30bfb4a1·...·]-12">}</span><span·class="p">.</span><span·class="w">210 </span><span·class="p"·data-group-id="3116390881-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:·c54345ca34c6181249c5343cfe349f72d205dae52d0641fdfd1b797a89914dc6·...·]-12">}</span><span·class="p">.</span><span·class="w">
211 </span><span·class="p"·data-group-id="9470105039-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="9470105039-13">}</span><span·class="p">.</span><span·class="w">211 </span><span·class="p"·data-group-id="3116390881-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="3116390881-13">}</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="p"·data-group-id="9470105039-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:·7cac66fcc8557dac3ec81d016319a781260969756eb20cf149938b533f0ce79e·...·]-14">}</span><span·class="p">.</span><span·class="w">212 </span><span·class="p"·data-group-id="3116390881-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:·c6b40033a209c5af3d829777979e37b624ec5d0adbc35a0ac49c1ad46791015a·...·]-14">}</span><span·class="p">.</span><span·class="w">
213 </span><span·class="p"·data-group-id="9470105039-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:·66730a3688f1fd0a91a367778c0bd09102afdb83cdd014a9952f298d131c1a1f·...·]-15">}</span><span·class="p">.</span><span·class="w">213 </span><span·class="p"·data-group-id="3116390881-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:·213292531806140a86febbf967991b7bd99c4110af71741b8830864e981cadc2·...·]-15">}</span><span·class="p">.</span><span·class="w">
214 </span><span·class="p"·data-group-id="9470105039-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:·bc86869a606c766eca4dc333bf931613890d2a724e2c97294c958af3faf67aae·...·]-17">}</span><span·class="p">.</span><span·class="w">214 </span><span·class="p"·data-group-id="3116390881-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:·0e0c9338bc63f899700710761bcad4141e819b128058097c8db598698e038e02·...·]-17">}</span><span·class="p">.</span><span·class="w">
215 </span><span·class="p"·data-group-id="9470105039-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:·e426e815a5a7f64359b38a7ae3e84f799836f18c7d7a7a613f8e728bc5c78bc7·...·]-19">}</span><span·class="p">.</span><span·class="w">215 </span><span·class="p"·data-group-id="3116390881-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:·07b1ba03d300452f484738ddc6b7fec8318ab9e65a813be81646375172924da9·...·]-19">}</span><span·class="p">.</span><span·class="w">
  
216 </span><span·class="p"·data-group-id="9470105039-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:·cfd52b6209a3a4e7995d3d6bc934c3cf778db66bdc81bbababde8b7be47cdb19·...·]-21">}</span><span·class="p">.</span><span·class="w">216 </span><span·class="p"·data-group-id="3116390881-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:·3d13a0835fa9f2c07389a4ea9c6ec4e8e1a85d8c4aa69a30f97bf871f233b70b·...·]-21">}</span><span·class="p">.</span><span·class="w">
217 </span><span·class="p"·data-group-id="9470105039-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:·21cea869cd0378da0d0e640fc8696899c4bfed9c3f53069f740567f872ed7ba9·...·]-23">}</span><span·class="p">.</span><span·class="w">217 </span><span·class="p"·data-group-id="3116390881-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:·4488dbbc87d86959c388ad27078bb891672173d5ce9fdd3bee5d3113b5586ffd·...·]-23">}</span><span·class="p">.</span><span·class="w">
  
218 </span><span·class="p"·data-group-id="9470105039-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:·fe17f5414e6111b5a5a5063bd0fcf8f0dc3d07a6055bb3d42a16a6b644603c04·...·]-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="3116390881-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:·622e8f1907854bb50aa360be3f096e89b542c03debd267c4b59773543758a803·...·]-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="8579724870-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="8579724870-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="1627691890-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="1627691890-1">}</span><span·class="p">.</span><span·class="w">
248 </span><span·class="p"·data-group-id="8579724870-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="8579724870-2">}</span><span·class="p">.</span><span·class="w">248 </span><span·class="p"·data-group-id="1627691890-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="1627691890-2">}</span><span·class="p">.</span><span·class="w">
249 </span><span·class="p"·data-group-id="8579724870-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="8579724870-3">}</span><span·class="p">.</span><span·class="w">249 </span><span·class="p"·data-group-id="1627691890-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="1627691890-3">}</span><span·class="p">.</span><span·class="w">
250 </span><span·class="p"·data-group-id="8579724870-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="8579724870-4">}</span><span·class="p">.</span><span·class="w">250 </span><span·class="p"·data-group-id="1627691890-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="1627691890-4">}</span><span·class="p">.</span><span·class="w">
251 </span><span·class="p"·data-group-id="8579724870-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="8579724870-6">[</span><span·class="p"·data-group-id="8579724870-7">{</span><span·class="ss">node_start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8579724870-8">[</span><span·class="p"·data-group-id="8579724870-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="8579724870-9">}</span><span·class="p"·data-group-id="8579724870-8">]</span><span·class="p"·data-group-id="8579724870-7">}</span><span·class="p"·data-group-id="8579724870-6">]</span><span·class="p"·data-group-id="8579724870-5">}</span><span·class="p">.</span><span·class="w"> 
252 </span><span·class="p"·data-group-id="8579724870-10">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8579724870-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="8579724870-11">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8579724870-12">{</span><span·class="ss">node_start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8579724870-13">[</span><span·class="p"·data-group-id="8579724870-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="8579724870-14">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8579724870-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="8579724870-15">}</span><span·class="p"·data-group-id="8579724870-13">]</span><span·class="p"·data-group-id="8579724870-12">}</span><span·class="p"·data-group-id="8579724870-10">}</span><span·class="p">.</span><span·class="w"> 
253 </span><span·class="p"·data-group-id="8579724870-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="8579724870-17">{</span><span·class="ss">eval</spa[·...·truncated·by·diffoscope;·len:·676,·SHA:·e7fc6d6420c96f5e9c12410b7cf5df1a580b43fa8a02a8f0add4bd5ce5a3032e·...·]251 </span><span·class="p"·data-group-id="1627691890-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="1627691890-6">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·646,·SHA:·79736b5f57b8497d33fd55fb9e7da8b5d92b63f10670e9d2f87a4126cf47b9cb·...·]
 252 </span><span·class="p"·data-group-id="1627691890-10">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1627691890-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="1627691890-11">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1627691890-12">{</span><span·class="ss">node_start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1627691890-13">[</span><span·class="p"·data-group-id="1627691890-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="1627691890-14">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1627691890-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="1627691890-15">}</span><span·class="p"·data-group-id="1627691890-13">]</span><span·class="p"·data-group-id="1627691890-12">}</span><span·class="p"·data-group-id="1627691890-10">}</span><span·class="p">.</span><span·class="w">
 253 </span><span·class="p"·data-group-id="1627691890-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="1627691890-17">{</span><span·class="ss">eval</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1627691890-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="1627691890-19">[</span><span·class="p"·data-group-id="1627691890-19">]</span><span·class="p"·data-group-id="1627691890-18">}</span><span·class="p"·data-group-id="1627691890-17">}</span><span·class="p"·data-group-id="1627691890-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.7/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="3077179524-1">{</span><span·class="nf">server_id</span><span·class="p"·data-group-id="3077179524-2">(</span><span·class="p"·data-group-id="3077179524-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3077179524-3">[</[·...·truncated·by·diffoscope;·len:·235,·SHA:·b28df2c40cc025b0e11fcd810b90f50086580bebe602b4d82d697a2125c4cd61·...·]-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="3878249510-1">{</span><span·class="nf">server_id</span><span·class="p"·data-group-id="3878249510-2">(</span><span·class="p"·data-group-id="3878249510-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3878249510-3">[</[·...·truncated·by·diffoscope;·len:·235,·SHA:·266e76aa14510f42a48674926b16eb97902e398bf63e6fa57223e3640b72a8b8·...·]-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="2473548892-1">(</span><span·class="p"·data-group-id="2473548892-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="3697110257-1">(</span><span·class="p"·data-group-id="3697110257-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
154 ····</span><span·class="p"·data-group-id="2473548892-2">[</span><span·class="p"·data-group-id="2473548892-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2473548892-4">[</span><span·class="p"·data-group-id="2473548892-5">{</[·...·truncated·by·diffoscope;·len:·937,·SHA:·6637d3a00d37d6f9a8de2140ca898b94b7d60598dbbdb55753a1421072c158d9·...·]-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="3697110257-2">[</span><span·class="p"·data-group-id="3697110257-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3697110257-4">[</span><span·class="p"·data-group-id="3697110257-5">{</[·...·truncated·by·diffoscope;·len:·937,·SHA:·4b653b050fc680499afa394a9a4934f1ba2326d61ad5538d2332196c46ee747e·...·]-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="2707793058-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="2707793058-2">[</span><span·class="p"·data-group-id="2707793058-3">{</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">conn_log_mod</span><span·class="p"·data-group-id="2707793058-4">(</span><span·class="p"·data-group-id="2707793058-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="2707793058-5">(</span><span·class="p"·data-group-id="2707793058-5">)</span><span·class="p"·data-group-id="2707793058-3">}</span><span·class="p"·data-group-id="2707793058-2">]</span><span·class="p"·data-group-id="2707793058-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="2738294934-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="2738294934-2">[</span><span·class="p"·data-group-id="2738294934-3">{</span><span·class="ss">ct_netconfc</span><span·class="p">,</span><span·class="p"·data-group-id="2738294934-4">[</span><span·class="p"·data-group-id="2738294934-5">{</span><span·class="ss">log_type</span><span·class="p">,</span><span·class="ss">pretty</span><span·class="p"·data-group-id="2738294934-5">}</span><span·class="p">,</span><span·class="w"> 
166 ····························</span><span·class="p"·data-group-id="2738294934-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="2738294934-7">[</span><span·class="nc">ct</span><span·class="p">:</span><span·class=[·...·truncated·by·diffoscope;·len:·627,·SHA:·94978904359ff8f599092c3d84b62621e617f0a8138cb50a06012b4ad4ab3801·...·]165 configuration·variable·<code·class="inline">ct_conn_log</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4248659187-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:·9e0eba58fac1c7b169dbbb9f465778c494b85cc242e71eeeaa2c1125cf64336c·...·]
 166 ····························</span><span·class="p"·data-group-id="1491687853-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="1491687853-7">[</span><span·class="nc">ct</span><span·class="p">:</span><span·class="nf">key_or_name</span><span·class="p"·data-group-id="1491687853-8">(</span><span·class="p"·data-group-id="1491687853-8">)</span><span·class="p"·data-group-id="1491687853-7">]</span><span·class="p"·data-group-id="1491687853-6">}</span><span·class="p"·data-group-id="1491687853-4">]</span><span·class="p"·data-group-id="1491687853-3">}</span><span·class="p"·data-group-id="1491687853-2">]</span><span·class="p"·data-group-id="1491687853-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="5034465762-1">(</span><span·class="p"·data-group-id="5034465762-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="8479298820-1">(</span><span·class="p"·data-group-id="8479298820-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
170 ···</span><span·class="p"·data-group-id="5034465762-2">[</span><span·class="p"·data-group-id="5034465762-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5034465762-4">[</span><span·class="p"·data-group-id="5034465762-5">{</[·...·truncated·by·diffoscope;·len:·487,·SHA:·74cdf5fc9fd612b59437e718c726968b7ad27755596b37a619fe727c4e4f5240·...·]-9">}</span><span·class="p">}</span><span·class="p">,</span><span·class="w">170 ···</span><span·class="p"·data-group-id="8479298820-2">[</span><span·class="p"·data-group-id="8479298820-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8479298820-4">[</span><span·class="p"·data-group-id="8479298820-5">{</[·...·truncated·by·diffoscope;·len:·487,·SHA:·36f4e3601ba24ad331ccaf6a454a1295db2e3e0187e6a4fb7f86390a447523fc·...·]-9">}</span><span·class="p">}</span><span·class="p">,</span><span·class="w">
171 ··············································</span><span·class="p"·data-group-id="5034465762-10">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="5034465762-11">[</span><span·class="ss">nc_server1</span><span·class="p">,</span><span·class="ss">nc_server2</span><span·class="p"·data-group-id="5034465762-11">]</span><span·class="p"·data-group-id="5034465762-10">}</span><span·class="p"·data-group-id="5034465762-8">]</span><span·class="p"·data-group-id="5034465762-7">}</span><span·class="w"> 
172 ·······························</span><span·class="p"·data-group-id="5034465762-6">]</span><span·class="p"·data-group-id="5034465762-5">}</span><span·class="p"·data-group-id="5034465762-4">]</span><span·class="p"·data-group-id="5034465762-3">}</span><span·class="p"·data-group-id="5034465762-2">]</span><span·class="p">.</span></code></pre><p>Connections·must·be·opened·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">open</span><span·class="p"·data-group-id="9463201355-1">(</span><span·class="ss">nc_server1</span><span·class="p">,</span><span·class="p"·data-group-id="9463201355-2">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9463201355-2">]</span><span·class="p"·data-group-id="9463201355-1">)</span><span·class="p">,</span><span·class="w"> 
173 </span><span·class="nf">open</span><span·class="p"·data-group-id="9463201355-3">(</span><span·class="ss">nc_server2</span><span·class="p">,</span><span·class="p"·data-group-id="9463201355-4">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9463201355-4">]</span><span·class="p"·data-group-id="9463201355-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="3519087353-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="3519087353-2">[</span><span·class="p"·data-group-id="3519087353-3">{</span><span·class="ss">ct_netconfc</span><span·class="p">,</span><span·class="p"·data-group-id="3519087353-4">[</span><span·class="p"·data-group-id="3519087353-5">{</span><span·class="ss">log_type</span><span·class="p">,</span><span·class="ss">raw</span><span·class="p"·data-group-id="3519087353-5">}</span><span·class="p"·data-group-id="3519087353-4">]</span><span·class="p"·data-group-id="3519087353-3">}</span><span·class="p"·data-group-id="3519087353-2">]</span><span·class="p"·data-group-id="3519087353-1">}</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">ct_hooks</code>·statement·must·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="0094769476-1">(</span><span·class="p"·data-group-id="0094769476-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
175 ····</span><span·class="p"·data-group-id="0094769476-2">[</span><span·class="p"·data-group-id="0094769476-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0094769476-4">[</span><span·clas[·...·truncated·by·diffoscope;·len:·588,·SHA:·3ad03f9f1ce1f116bcd820459d299b154c9d5f600ea78e045e61943dc20c4ea4·...·]171 ··············································</span><span·class="p"·data-group-id="8479298820-10">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="8479298820-11">[</span><span·class="ss">nc_server1</span><span·class=[·...·truncated·by·diffoscope;·len:·276,·SHA:·14669949de16c799b2d6b6b68983028cf9adbdea849f617b2f9dc1c2330fe43a·...·]
 172 ·······························</span><span·class="p"·data-group-id="8479298820-6">]</span><span·class="p"·data-group-id="8479298820-5">}</span><span·class="p"·data-group-id="8479298820-4">]</span><span·class="p"·data-group-id="8479298820-3">}</span><span·class="p"·data-group-id="8479298820-2">]</span><span·class="p">.</span></code></pre><p>Connections·must·be·opened·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">open</span><span·class="p"·data-group-id="4839809577-1">(</span><span·class="ss">nc_server1</span><span·class="p">,</span><span·class="p"·data-group-id="4839809577-2">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4839809577-2">]</span><span·class="p"·data-group-id="4839809577-1">)</span><span·class="p">,</span><span·class="w">
 173 </span><span·class="nf">open</span><span·class="p"·data-group-id="4839809577-3">(</span><span·class="ss">nc_server2</span><span·class="p">,</span><span·class="p"·data-group-id="4839809577-4">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="4839809577-4">]</span><span·class="p"·data-group-id="4839809577-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="4251485275-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="p"·data-group-id="4251485275-2">[</span><span·class="p"·data-group-id="4251485275-3">{</span><span·class="ss">ct_netconfc</span><span·class="p">,</span><span·class="p"·data-group-id="4251485275-4">[</span><span·class="p"·data-group-id="4251485275-5">{</span><span·class="ss">log_type</span><span·class="p">,</span><span·class="ss">raw</span><span·class="p"·data-group-id="4251485275-5">}</span><span·class="p"·data-group-id="4251485275-4">]</span><span·class="p"·data-group-id="4251485275-3">}</span><span·class="p"·data-group-id="4251485275-2">]</span><span·class="p"·data-group-id="4251485275-1">}</span><span·class="p">.</span></code></pre><p>The·<code·class="inline">ct_hooks</code>·statement·must·look·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">suite</span><span·class="p"·data-group-id="7730259177-1">(</span><span·class="p"·data-group-id="7730259177-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 175 ····</span><span·class="p"·data-group-id="7730259177-2">[</span><span·class="p"·data-group-id="7730259177-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7730259177-4">[</span><span·class="p"·data-group-id="7730259177-5">{</span><span·class="ss">cth_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7730259177-6">[</span><span·class="p"·data-group-id="7730259177-6">]</span><span·class="p"·data-group-id="7730259177-5">}</span><span·class="p"·data-group-id="7730259177-4">]</span><span·class="p"·data-group-id="7730259177-3">}</span><span·class="p"·data-group-id="7730259177-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="5180270667-1">[</span><span·class="p"·data-group-id="5180270667-2">{</span><span·class="ss">&#39;default-operation&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5180270667-3">[</span><span·class="s">&quot;none&qu[·...·truncated·by·diffoscope;·len:·104,·SHA:·7023aa56524ab3a71595ca005852b213415d17dafbca240af472066f5508bdd3·...·]-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="8471232259-1">[</span><span·class="p"·data-group-id="8471232259-2">{</span><span·class="ss">&#39;default-operation&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8471232259-3">[</span><span·class="s">&quot;none&qu[·...·truncated·by·diffoscope;·len:·104,·SHA:·e93062e4e364796b22aae5ce4bd2484497ff55751c5f3efd5212f1d4eaa21dc6·...·]-2">}</span><span·class="p">,</span><span·class="w">
2103 ·</span><span·class="p"·data-group-id="5180270667-4">{</span><span·class="ss">&#39;error-option&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5180270667-5">[</span><span·class="s">&quot;rollback-on-error&quot;</span><span·class="p"·data-group-id="5180[·...·truncated·by·diffoscope;·len:·112,·SHA:·d34bb874d877fa724ff5531bb818aa9b9f095485b04e4867d375a3bdb4d6285b·...·]-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="8471232259-4">{</span><span·class="ss">&#39;error-option&#39;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8471232259-5">[</span><span·class="s">&quot;rollback-on-error&quot;</span><span·class="p"·data-group-id="8471[·...·truncated·by·diffoscope;·len:·112,·SHA:·9fb984bdecce6a6249ed445112971ed6c2e4f37d98ccecc31393ae354605445f·...·]-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.7/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="3145431101-1">(</span><span·class="ss">my_prop_test_SUITE</span><span·class="p"·data-group-id="3145431101-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="9452088598-1">(</span><span·class="ss">my_prop_test_SUITE</span><span·class="p"·data-group-id="9452088598-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="3145431101-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="3145431101-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="9452088598-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="9452088598-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="3145431101-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="3145431101-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="9452088598-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="9452088598-3">)</span><span·class="p">.</span><span·class="w">
  
142 </span><span·class="nf">all</span><span·class="p"·data-group-id="3145431101-4">(</span><span·class="p"·data-group-id="3145431101-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3145431101-5">[</span><span·class="ss">prop_ftp_case</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·1adaf1ef4d8ab47d2e4762b26e2e5d79a0b8366556ce6be3859c123f6026e01c·...·]-5">]</span><span·class="p">.</span><span·class="w">142 </span><span·class="nf">all</span><span·class="p"·data-group-id="9452088598-4">(</span><span·class="p"·data-group-id="9452088598-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9452088598-5">[</span><span·class="ss">prop_ftp_case</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·0dadf2a6028d64b86b56020f03716b23cad5103b8753bc1d6285f135ecf062b0·...·]-5">]</span><span·class="p">.</span><span·class="w">
  
143 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="3145431101-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3145431101-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="9452088598-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9452088598-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="3145431101-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3145431101-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="9452088598-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9452088598-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="3145431101-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3145431101-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="9452088598-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9452088598-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="3145431101-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="9452088598-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="3145431101-10">(</span><span·class="p"·data-group-id="3145431101-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="9452088598-10">(</span><span·class="p"·data-group-id="9452088598-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="3145431101-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="9452088598-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="6106562558-1">(</span><span·class="ss">ftp_simple_client_server</span><span·class="p"·data-group-id="6106562558-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="6106562558-2">(</span><span·class="p"·data-group-id="6106562558-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:·4883a64a6934fa1be44e6500f84a274d9e3ac0932daddd7491d892d3f9d1c14c·...·]">)</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="9633269652-1">(</span><span·class="ss">ft[·...·truncated·by·diffoscope;·len:·72,·SHA:·d2a0465c4b8c8e0f737e81a6379fd4a43a5f2967fe64fa7fd081d47501efa50b·...·]">)</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="9633269652-2">(</span><span·class="p"·data-group-id="9633269652-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="9633269652-3">]</span><span·class="p"·data-group-id="9633269652-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="6106562558-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="6106562558-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="9633269652-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="9633269652-4">)</span><span·class="p">.</span><span·class="w">
  
156 </span><span·class="nf">prop_ftp</span><span·class="p"·data-group-id="6106562558-5">(</span><span·class="p"·data-group-id="6106562558-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="9633269652-5">(</span><span·class="p"·data-group-id="9633269652-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="6106562558-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="9633269652-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="8385313729-1">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="8385313729-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="0177304526-1">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="0177304526-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.1/doc/html/proplists.html#t:proplist/0">proplists:proplist</a>(),947 ····························Config·::·<a·href="../../../../lib/stdlib-6.2.1/doc/html/proplists.html#t:proplist/0">proplists:proplist</a>(),
948 ····························Options0·::·<a·href="../../../../lib/stdlib-6.2.1/doc/html/proplists.html#t:proplist/0">proplists:proplist</a>().</pre>948 ····························Options0·::·<a·href="../../../../lib/stdlib-6.2.1/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="5630849190-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="5630849190-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="7955078467-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="7955078467-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="5630849190-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:·7d1cbf818cee79c3223316eca58a18b95d1d6234fe3209e05f60123640c8dc56·...·]-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="7955078467-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:·0cc7c5dcb77bd93ba801a5128f3574c4735ba3f5c53d1c8609e01d68554f21b7·...·]-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="8813729316-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="8813729316-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="4954197068-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="4954197068-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="7130348888-1">[</span><span·class="p"·data-group-id="7130348888-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:·90,·SHA:·9d505b4a48beafa2ea817aaad70c12c300d127b6d974cddf20ef1b19f75d6573·...·]-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="0356624014-1">[</span><span·class="p"·data-group-id="0356624014-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:·90,·SHA:·7efa92b5b63de7e009f658909a74464dadccf858f5fd966f568ae67a58f5ccd4·...·]-2">}</span><span·class="p">,</span><span·class="w">
967 ·</span><span·class="p"·data-group-id="7130348888-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="0356624014-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="7130348888-3">}</span><span·class="p"·data-group-id="7130348888-1">]</span></code></pre></li><li><p>For·parallel·commands:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7391938080-1">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·322,·SHA:·da81f560f63705e452bb69ee3441265fb4247ff359672c3a4718c5bc71f4fe7a·...·]-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="0356624014-3">}</span><span·class="p"·data-group-id="0356624014-1">]</span></code></pre></li><li><p>For·parallel·commands:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7544271148-1">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·322,·SHA:·3562ed524051b68a9909ccfb044d0da1d223d500eda28b36fb148509e49d03fb·...·]-2">}</span><span·class="p">,</span><span·class="w">
969 ·</span><span·class="p"·data-group-id="7391938080-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><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·b0c5a5ff660872a712c1f7de8750c3bb5a8078ae743e175c8284345610892a84·...·]-3">}</span><span·class="p">,</span><span·class="w">969 ·</span><span·class="p"·data-group-id="7544271148-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><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·49ff813e674038128863020b25c97ce83af4f331360df2a61acc0f6a4f03d62e·...·]-3">}</span><span·class="p">,</span><span·class="w">
970 ·</span><span·class="p"·data-group-id="7391938080-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="7544271148-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="7391938080-4">}</span><span·class="p"·data-group-id="7391938080-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="7544271148-4">}</span><span·class="p"·data-group-id="7544271148-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.7/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="0151374816-1">(</span><span·class="ss">ct_prop</span><span·class="p"·data-group-id="0151374816-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="8863989084-1">(</span><span·class="ss">ct_prop</span><span·class="p"·data-group-id="8863989084-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="0151374816-2">(</span><span·class="p"·data-group-id="0151374816-3">[</span><span·class="ss">prop_sort</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="0151374816-3">]</span><span·class="p"·data-group-id="0151374816-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="8863989084-2">(</span><span·class="p"·data-group-id="8863989084-3">[</span><span·class="ss">prop_sort</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8863989084-3">]</span><span·class="p"·data-group-id="8863989084-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="0151374816-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="0151374816-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="8863989084-4">(</span><span·class="s">&quot;common_test/include/ct_property_test.hrl&quot;</span><span·class="p"·data-group-id="8863989084-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="0151374816-5">(</span><span·class="p"·data-group-id="0151374816-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="8863989084-5">(</span><span·class="p"·data-group-id="8863989084-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="0151374816-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="0151374816-7">(</span><span·class="p"·data-group-id="0151374816-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="8863989084-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="8863989084-7">(</span><span·class="p"·data-group-id="8863989084-7">)</span><span·class="p">,</span><span·class="w">
159 ············</span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="0151374816-8">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="0151374816-9">(</span><span·class="n">UnSorted</span><span·class="p"·data-group-id="0151374816-9">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·3c5f88a102294b6e405da5359adc49a1b08383898cfb5870f6e84e7dfbccf09a·...·]-8">)</span><span·class="w">159 ············</span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="8863989084-8">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">sort</span><span·class="p"·data-group-id="8863989084-9">(</span><span·class="n">UnSorted</span><span·class="p"·data-group-id="8863989084-9">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·3b80a3df22b18f7585c6b07d0a2c51fe425f940e3123fcd977be6d75c3d1616c·...·]-8">)</span><span·class="w">
160 ···········</span><span·class="p"·data-group-id="0151374816-6">)</span><span·class="p">.</span><span·class="w">160 ···········</span><span·class="p"·data-group-id="8863989084-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="0151374816-10">(</span><span·class="p"·data-group-id="0151374816-11">[</span><span·class="p"·data-group-id="0151374816-11">]</span><span·class="p"·data-group-id="0151374816-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="8863989084-10">(</span><span·class="p"·data-group-id="8863989084-11">[</span><span·class="p"·data-group-id="8863989084-11">]</span><span·class="p"·data-group-id="8863989084-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="0151374816-12">(</span><span·class="p"·data-group-id="0151374816-13">[</span><span·class="p">_</span><span·class="p"·data-group-id="0151374816-13">]</span><span·class="p"·data-group-id="0151374816-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="8863989084-12">(</span><span·class="p"·data-group-id="8863989084-13">[</span><span·class="p">_</span><span·class="p"·data-group-id="8863989084-13">]</span><span·class="p"·data-group-id="8863989084-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="0151374816-14">(</span><span·class="p"·data-group-id="0151374816-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="0151374816-15">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·5492278a1a83d20c5d5a51c47c584e08b6f2106caab8d6e5e8a4bbbbd1d3778c·...·]-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="8863989084-14">(</span><span·class="p"·data-group-id="8863989084-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="8863989084-15">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·70bbfe960955caf0a556dd24bb442ec76ca2966f32d6272a79d495218a9ab5c2·...·]-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="0151374816-16">(</span><span·class="p"·data-group-id="0151374816-17">[</span><span·class="n">H2</span><span·class="p">|</span><span·class="n">SortedTail</span><span·class="p"·data-group-id="0151374816-17">]</span><span·class="p"·data-group-id="0151374816-16">)</span><span·class="p">;</span><span·class="w">167 ····</span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="8863989084-16">(</span><span·class="p"·data-group-id="8863989084-17">[</span><span·class="n">H2</span><span·class="p">|</span><span·class="n">SortedTail</span><span·class="p"·data-group-id="8863989084-17">]</span><span·class="p"·data-group-id="8863989084-16">)</span><span·class="p">;</span><span·class="w">
168 </span><span·class="nf">is_sorted</span><span·class="p"·data-group-id="0151374816-18">(</span><span·class="p">_</span><span·class="p"·data-group-id="0151374816-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="8863989084-18">(</span><span·class="p">_</span><span·class="p"·data-group-id="8863989084-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="2188149279-1">(</span><span·class="ss">ct_property_test_SUITE</span><span·class="p"·data-group-id="2188149279-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="2313783586-1">(</span><span·class="ss">ct_property_test_SUITE</span><span·class="p"·data-group-id="2313783586-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="2188149279-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="2188149279-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="2313783586-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="2313783586-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="2188149279-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="2188149279-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="2313783586-3">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="2313783586-3">)</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">all</span><span·class="p"·data-group-id="2188149279-4">(</span><span·class="p"·data-group-id="2188149279-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2188149279-5">[</span><span·class="ss">prop_sort</span><span·class="w">173 </span><span·class="nf">all</span><span·class="p"·data-group-id="2313783586-4">(</span><span·class="p"·data-group-id="2313783586-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2313783586-5">[</span><span·class="ss">prop_sort</span><span·class="w">
174 ·········</span><span·class="p"·data-group-id="2188149279-5">]</span><span·class="p">.</span><span·class="w">174 ·········</span><span·class="p"·data-group-id="2313783586-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="2188149279-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2188149279-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="2313783586-6">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2313783586-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="2188149279-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2188149279-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="2313783586-7">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2313783586-7">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="2188149279-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2188149279-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="2313783586-8">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2313783586-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="2188149279-9">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2188149279-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="2313783586-9">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2313783586-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="2188149279-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="2313783586-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="2188149279-11">(</span><span·class="p"·data-group-id="2188149279-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="2313783586-11">(</span><span·class="p"·data-group-id="2313783586-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="2188149279-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="2313783586-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="1974232104-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="1974232104-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="1928499846-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="1928499846-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="1974232104-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="1928499846-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="1974232104-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="1974232104-4">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·dc9397fd646b02604cd78b033bf1e591caf445ebddb78035aaaaba33d0783f6b·...·]-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="1928499846-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="1928499846-4">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·9ec1b806471fda8920ac1d28ff86fab9275e17206def3e44a696004ea8311b8f·...·]-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="1974232104-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="1974232104-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="1928499846-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="1928499846-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="1974232104-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><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·d8d0ab75f9d7a020c7abcf72abd16166c5d2b2561a87f503ff8f24ba5302b060·...·]-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="1928499846-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><spa[·...·truncated·by·diffoscope;·len:·90,·SHA:·017df8c13bfa5abac775863b9a7df27359c3a44588c6cc834aa3d67d86ee76d6·...·]-6">)</span><span·class="w">
230 ·····················</span><span·class="k">end</span><span·class="p"·data-group-id="1974232104-3">)</span><span·class="p"·data-group-id="1974232104-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="1928499846-3">)</span><span·class="p"·data-group-id="1928499846-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.7/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="3323426126-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:·ba5428239d54044c07295dd2ebd9dbe77c6e286cccaf610b8480cf552e843ec9·...·]-1">]</span><span·class="w">254 ··</span><span·class="p"·data-group-id="4987426543-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:·be0b8c7fc2d55be0e2cad64bc848e06e00c7079e6cba3dab3904311a88ef839d·...·]-1">]</span><span·class="w">
255 ··</span><span·class="p"·data-group-id="3323426126-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="4987426543-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="3323426126-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="4987426543-2">]</span><span·class="w">
257 ··</span><span·class="p"·data-group-id="3323426126-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="3323426126-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·208,·SHA:·a8a08884e2a3e397f3fe6babb8b93cb99d2275c0e328662e49f5e1d5095eb927·...·]-4">]</span></code></pre><h2·id="start-a-common-test-master-node"·class="section-heading">257 ··</span><span·class="p"·data-group-id="4987426543-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="4987426543-3">]</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·208,·SHA:·cde8f04d0314113ee6e7e31fbefd1f23bc1264b73c49b165cc5c40d4c5c65c6f·...·]-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.7/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.3/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.3/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="6797313972-1">(</span><span·class="p"·data-group-id="6797313972-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6797313972-2">[</span><span·class="p"·data-group-id="6797313972-3">{</span[·...·truncated·by·diffoscope;·len:·683,·SHA:·a76d5db0ac9c17b364b93fa008642f1f265b8147dfdc37785f774352c216b3c5·...·]-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="7032139916-1">(</span><span·class="p"·data-group-id="7032139916-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7032139916-2">[</span><span·class="p"·data-group-id="7032139916-3">{</span[·...·truncated·by·diffoscope;·len:·683,·SHA:·f43dfe904c12b6481f652de98f2f4d1f69a1c154d933bed0d8324300160d5927·...·]-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.1/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.1/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="9196637526-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="9196637526-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="3255690454-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="3255690454-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.1/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.1/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="6065892262-1">{</span><span·class="ss">snmp_app</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6065892262-2">[</span><span·class="p"·data-group-id="6065892262-3">{</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6065892262-4">[</span><span·class="nf">snmp_app_manager_params</span><span·class="p"·data-group-id="6065892262-5">(</span><span·class="p"·data-group-id="6065892262-5">)</span><span·class="p"·data-group-id="6065892262-4">]</span><span·class="p"·data-group-id="6065892262-3">}</span><span·class="p">,</span><span·class="w"> 
161 ············</span><span·class="p"·data-group-id="6065892262-6">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6065892262-7">[</span><span·class="nf">snmp_app_agent_params</span><span·cla[·...·truncated·by·diffoscope;·len:·450,·SHA:·336233f79aad48e376e8d626c3bce69ca83b82410934c9b4281839f40cf25be6·...·]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="2891280652-1">{</span><span·class="ss">snmp_app</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·543,·SHA:·2fc4e610e25c209f519f930ad58a431926ae990eed7e6bc8a2fcac382ab09c18·...·]
 161 ············</span><span·class="p"·data-group-id="2891280652-6">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2891280652-7">[</span><span·class="nf">snmp_app_agent_params</span><span·class="p"·data-group-id="2891280652-8">(</span><span·class="p"·data-group-id="2891280652-8">)</span><span·class="p"·data-group-id="2891280652-7">]</span><span·class="p"·data-group-id="2891280652-6">}</span><span·class="p"·data-group-id="2891280652-2">]</span><span·class="p"·data-group-id="2891280652-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.7/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="0357118621-1">[</span><span·class="p"·data-group-id="0357118621-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="0357118621-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="0858158121-1">[</span><span·class="p"·data-group-id="0858158121-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="0858158121-2">}</span><span·class="p">,</span><span·class="w">
136 ·</span><span·class="p"·data-group-id="0357118621-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="0357118621-3">}</span><span·class="p">,</span><span·class="w">136 ·</span><span·class="p"·data-group-id="0858158121-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="0858158121-3">}</span><span·class="p">,</span><span·class="w">
137 ·</span><span·class="p"·data-group-id="0357118621-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="0357118621-4">}</span><span·class="w">137 ·</span><span·class="p"·data-group-id="0858158121-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="0858158121-4">}</span><span·class="w">
138 ·</span><span·class="p"·data-group-id="0357118621-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="0357118621-5">}</span><span·class="w">138 ·</span><span·class="p"·data-group-id="0858158121-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="0858158121-5">}</span><span·class="w">
139 ·</span><span·class="p"·data-group-id="0357118621-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="0357118621-6">}</span><span·class="w">139 ·</span><span·class="p"·data-group-id="0858158121-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="0858158121-6">}</span><span·class="w">
140 ·</span><span·class="p"·data-group-id="0357118621-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="0357118621-7">}</span><span·class="w">140 ·</span><span·class="p"·data-group-id="0858158121-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="0858158121-7">}</span><span·class="w">
141 ·</span><span·class="p"·data-group-id="0357118621-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="0357118621-8">}</span><span·class="w">141 ·</span><span·class="p"·data-group-id="0858158121-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="0858158121-8">}</span><span·class="w">
142 ·</span><span·class="p"·data-group-id="0357118621-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="0357118621-9">}</span><span·class="p"·data-group-id="0357118621-1">]</span></code></pre><p><code·class="inline">ConnType·=·ssh·|·sftp</code>.</p><p>For·other·types,·see·<a·href="../../../../lib/ssh-5.2.8/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="0858158121-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="0858158121-9">}</span><span·class="p"·data-group-id="0858158121-1">]</span></code></pre><p><code·class="inline">ConnType·=·ssh·|·sftp</code>.</p><p>For·other·types,·see·<a·href="../../../../lib/ssh-5.2.8/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.7/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="3481309677-1">{</span><span·class="ss">telnet_settings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3481309677-2">[</span><span·class="p"·data-group-id="3481309677-3">{</span><span·class="ss">connect_timeout</span><s[·...·truncated·by·diffoscope;·len:·94,·SHA:·13773f269f0b556ba8698d6dbcb18f613b34fb5e0b6b5659091adee3059d68d8·...·]-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="6054753312-1">{</span><span·class="ss">telnet_settings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6054753312-2">[</span><span·class="p"·data-group-id="6054753312-3">{</span><span·class="ss">connect_timeout</span><s[·...·truncated·by·diffoscope;·len:·94,·SHA:·28e5a580a0e2523aa4fd4f60e1180033fc14bb3c44e41df32cd31747e73b747c·...·]-3">}</span><span·class="p">,</span><span·class="w">
140 ···················</span><span·class="p"·data-group-id="3481309677-4">{</span><span·class="ss">command_timeout</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="3481309677-4">}</span><span·class="p">,</span><span·class="w">140 ···················</span><span·class="p"·data-group-id="6054753312-4">{</span><span·class="ss">command_timeout</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="6054753312-4">}</span><span·class="p">,</span><span·class="w">
141 ···················</span><span·class="p"·data-group-id="3481309677-5">{</span><span·class="ss">reconnection_attempts</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="3481309677-5">}</span><span·class="p">,</span><span·class="w">141 ···················</span><span·class="p"·data-group-id="6054753312-5">{</span><span·class="ss">reconnection_attempts</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="6054753312-5">}</span><span·class="p">,</span><span·class="w">
142 ···················</span><span·class="p"·data-group-id="3481309677-6">{</span><span·class="ss">reconnection_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="3481309677-6">}</span><span·class="p">,</span><span·class="w">142 ···················</span><span·class="p"·data-group-id="6054753312-6">{</span><span·class="ss">reconnection_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="6054753312-6">}</span><span·class="p">,</span><span·class="w">
143 ···················</span><span·class="p"·data-group-id="3481309677-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="3481309677-7">}</span><span·class="p">,</span><span·class="w">143 ···················</span><span·class="p"·data-group-id="6054753312-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="6054753312-7">}</span><span·class="p">,</span><span·class="w">
144 ···················</span><span·class="p"·data-group-id="3481309677-8">{</span><span·class="ss">poll_limit</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="3481309677-8">}</span><span·class="p">,</span><span·class="w">144 ···················</span><span·class="p"·data-group-id="6054753312-8">{</span><span·class="ss">poll_limit</span><span·class="p">,</span><span·class="n">N</span><span·class="p"·data-group-id="6054753312-8">}</span><span·class="p">,</span><span·class="w">
145 ···················</span><span·class="p"·data-group-id="3481309677-9">{</span><span·class="ss">poll_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="3481309677-9">}</span><span·class="p">,</span><span·class="w">145 ···················</span><span·class="p"·data-group-id="6054753312-9">{</span><span·class="ss">poll_interval</span><span·class="p">,</span><span·class="n">Millisec</span><span·class="p"·data-group-id="6054753312-9">}</span><span·class="p">,</span><span·class="w">
146 ···················</span><span·class="p"·data-group-id="3481309677-10">{</span><span·class="ss">tcp_nodelay</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="3481309677-10">}</span><span·class="p"·data-group-id="3481309677-2">]</span><span·class="p"·data-group-id="348130967[·...·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·test146 ···················</span><span·class="p"·data-group-id="6054753312-10">{</span><span·class="ss">tcp_nodelay</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="6054753312-10">}</span><span·class="p"·data-group-id="6054753312-2">]</span><span·class="p"·data-group-id="605475331[·...·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·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="7597346929-1">(</span><span·class="p"·data-group-id="7597346929-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="8006599192-1">(</span><span·class="p"·data-group-id="8006599192-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
162 ····</span><span·class="p"·data-group-id="7597346929-2">[</span><span·class="p"·data-group-id="7597346929-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7597346929-4">[</span><span·class="p"·data-group-id="7597346929-5">{</[·...·truncated·by·diffoscope;·len:·805,·SHA:·78dde53084d494a18d775a345f417c8a73a4400eed5c70ce45c1ae486feb24d1·...·]-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="8006599192-2">[</span><span·class="p"·data-group-id="8006599192-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8006599192-4">[</span><span·class="p"·data-group-id="8006599192-5">{</[·...·truncated·by·diffoscope;·len:·805,·SHA:·f57c70fd5a7b4ef9bd5e8554cfddbb1e894be8806e9ac78cd2e6fde7f3c75733·...·]-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="5642750802-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5642750802-2">[</span><span·class="p"·data-group-id="5642750802-3">{</span><span·class="ss">ct_telnet</span><span·class="p">,</span><span·class="p"·data-group-id="5642750802-4">[</span><span·class="p"·data-group-id="5642750802-5">{</span><span·class="ss">log_type</span><span·class="p">,</span><span·class="ss">raw</span><span·class="p"·data-group-id="5642750802-5">}</span><span·class="p">,</span><span·class="w"> 
180 ···························</span><span·class="p"·data-group-id="5642750802-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="5642750802-7">[</span><span·class="nf">key_or_name</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·576,·SHA:·0949a3fc900e83321b433c2b0eb1e81376b0329e139fcd071778c42893561793·...·]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="8914909898-1">{</span><span·class="ss">ct_conn_log</span><span[·...·truncated·by·diffoscope;·len:·488,·SHA:·1e0315d42942750c2ff829cc6c146de4601ce1df9867b12734c65804c23535d4·...·]
 180 ···························</span><span·class="p"·data-group-id="8914909898-6">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="8914909898-7">[</span><span·class="nf">key_or_name</span><span·class="p"·data-group-id="8914909898-8">(</span><span·class="p"·data-group-id="8914909898-8">)</span><span·class="p"·data-group-id="8914909898-7">]</span><span·class="p"·data-group-id="8914909898-6">}</span><span·class="p"·data-group-id="8914909898-4">]</span><span·class="p"·data-group-id="8914909898-3">}</span><span·class="p"·data-group-id="8914909898-2">]</span><span·class="p"·data-group-id="8914909898-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="2370976069-1">(</span><span·class="p"·data-group-id="2370976069-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="0147766833-1">(</span><span·class="p"·data-group-id="0147766833-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
184 ····</span><span·class="p"·data-group-id="2370976069-2">[</span><span·class="p"·data-group-id="2370976069-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">184 ····</span><span·class="p"·data-group-id="0147766833-2">[</span><span·class="p"·data-group-id="0147766833-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">
185 ······</span><span·class="p"·data-group-id="2370976069-4">[</span><span·class="p"·data-group-id="2370976069-5">{</span><span·class="ss">cth_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2370976069-6">[</span><span·class="p"·data-group-id="2370976069-7">{</span><span·class="ss">ct_telnet</span><span·class="p">,</span><span·class="p"·data-group-id="2370976069-8">[</span><span·class="p"·data-group-id="2370976069-9">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="2370976069-10">[</span><span·class="ss">server1</span><span·class="p">,</span><span·class="ss">server2</span><span·class="p"·data-group-id="2370976069-10">]</span><span·class="p"·data-group-id="2370976069-9">}</span><span·class="p"·data-group-id="2370976069-8">]</span><span·class="p"·data-group-id="2370976069-7">}</span><span·class="p"·data-group-id="2370976069-6">]</span><span·class="p"·data-group-id="2370976069-5">}</span><span·class="p"·data-group-id="2370976069-4">]</span><span·class="p"·data-group-id="2370976069-3">}</span><span·class="p"·data-group-id="2370976069-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="3564007894-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3564007894-2">[</span><span·class="p"·data-group-id="3564007894-3">{</span><span·class="ss">ct_telnet</span><span·class="p">,</span><span·class="p"·data-group-id="3564007894-4">[</span><span·class="p"·data-group-id="3564007894-5">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="3564007894-6">[</span><span·class="ss">server1</span><span·class="p">,</span><span·class="ss">server2</span><span·class="p"·data-group-id="3564007894-6">]</span><span·class="p"·data-group-id="3564007894-5">}</span><span·class="p"·data-group-id="3564007894-4">]</span><span·class="p"·data-group-id="3564007894-3">}</span><span·class="p"·data-group-id="3564007894-2">]</span><span·class="p"·data-group-id="3564007894-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="3060381783-1">(</span><span·class="p"·data-group-id="3060381783-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
187 ····</span><span·class="p"·data-group-id="3060381783-2">[</span><span·class="p"·data-group-id="3060381783-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3060381783-4">[</span><span·clas[·...·truncated·by·diffoscope;·len:·531,·SHA:·dfcb0c6c346e56623bf153ccca351dc712d7ef6b6d9ac364c391b383a96ea2af·...·]185 ······</span><span·class="p"·data-group-id="0147766833-4">[</span><span·class="p"·data-group-id="0147766833-5">{</span><span·class="ss">cth_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0147766833-6">[</span><spa[·...·truncated·by·diffoscope;·len:·999,·SHA:·998574010f89a3c3e55439b9bd9f1d50b944b2e42227f225854b722fa53cbad9·...·]
 186 like·the·following·in·a·configuration·file:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2690011391-1">{</span><span·class="ss">ct_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2690011391-2">[</span><span·class="p"·data-group-id="2690011391-3">{</span><span·class="ss">ct_telnet</span><span·class="p">,</span><span·class="p"·data-group-id="2690011391-4">[</span><span·class="p"·data-group-id="2690011391-5">{</span><span·class="ss">hosts</span><span·class="p">,</span><span·class="p"·data-group-id="2690011391-6">[</span><span·class="ss">server1</span><span·class="p">,</span><span·class="ss">server2</span><span·class="p"·data-group-id="2690011391-6">]</span><span·class="p"·data-group-id="2690011391-5">}</span><span·class="p"·data-group-id="2690011391-4">]</span><span·class="p"·data-group-id="2690011391-3">}</span><span·class="p"·data-group-id="2690011391-2">]</span><span·class="p"·data-group-id="2690011391-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="6415057100-1">(</span><span·class="p"·data-group-id="6415057100-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 187 ····</span><span·class="p"·data-group-id="6415057100-2">[</span><span·class="p"·data-group-id="6415057100-3">{</span><span·class="ss">ct_hooks</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6415057100-4">[</span><span·class="p"·data-group-id="6415057100-5">{</span><span·class="ss">cth_conn_log</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6415057100-6">[</span><span·class="p"·data-group-id="6415057100-6">]</span><span·class="p"·data-group-id="6415057100-5">}</span><span·class="p"·data-group-id="6415057100-4">]</span><span·class="p"·data-group-id="6415057100-3">}</span><span·class="p"·data-group-id="6415057100-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="1366684503-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="1366684503-2">[</span><span·class="p"·data-group-id="1366684503-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·1028,·SHA:·78c4460116ed838fb4139e1b4d24059fb80b6690d6cd53cd1c49192ae65c70f1·...·]-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="1948645202-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="1948645202-2">[</span><span·class="p"·data-group-id="1948645202-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·1028,·SHA:·52d56c68e33481777e145768e292901e981a0b5fd6368b249241ca7c04232460·...·]-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="3348450184-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="3348450184-2">[</span><span·class="p"·data-group-id="3348450184-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·1181,·SHA:·ff2bb8c221685a82fae73a974fc73b97b3063ae7dc99c2681d14cab81333be06·...·]-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="3737081020-1">(</span><span·class="n">Connection</span><span·class="p">,</span><span·class="p"·data-group-id="3737081020-2">[</span><span·class="p"·data-group-id="3737081020-3">{</span><span·class="ss">abc</span><span·class="p">,</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·1181,·SHA:·1fa882e726f04c4d2eb6d224b503a15a2951e4f06a05755aad07b6176fe244d3·...·]-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.7/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="0916717088-1">(</span><span·class="ss">my_server_SUITE</span><span·class="p"·data-group-id="0916717088-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="3599747740-1">(</span><span·class="ss">my_server_SUITE</span><span·class="p"·data-group-id="3599747740-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="0916717088-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="0916717088-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="3599747740-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="3599747740-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="0916717088-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="0916717088-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="3599747740-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="3599747740-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="0916717088-4">(</span><span·class="p"·data-group-id="0916717088-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0916717088-5">[</span><span·class="p"·data-group-id="0916717088-6">{</span[·...·truncated·by·diffoscope;·len:·187,·SHA:·e10ee87c4577f18807d884d2dbc19ba3f8d50626c93ddcd96dd07817c6a9bf0d·...·]-5">]</span><span·class="p">.</span><span·class="w">168 </span><span·class="nf">suite</span><span·class="p"·data-group-id="3599747740-4">(</span><span·class="p"·data-group-id="3599747740-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3599747740-5">[</span><span·class="p"·data-group-id="3599747740-6">{</span[·...·truncated·by·diffoscope;·len:·187,·SHA:·6152ebf2517950c6c376b54865d9f76b7ce1e3a2276b48a98811e364336c0792·...·]-5">]</span><span·class="p">.</span><span·class="w">
  
169 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="0916717088-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="0916717088-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="3599747740-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="3599747740-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="0916717088-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="0916717088-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="3599747740-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="3599747740-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="p"·data-group-id="0916717088-9">[</span><span·class="p"·data-group-id="0916717088-10">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="nf">start_server</span><span·class="p"·data-group-id="0916717088-11">(</span><span·class="p"·data-group-id="0[·...·truncated·by·diffoscope;·len:·218,·SHA:·b6457c5daed6cd6a2814c4af2b313de984ec3ad978b544977f23e4a53ad2b606·...·]-9">]</span><span·class="p">;</span><span·class="w">172 ····</span><span·class="p"·data-group-id="3599747740-9">[</span><span·class="p"·data-group-id="3599747740-10">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="nf">start_server</span><span·class="p"·data-group-id="3599747740-11">(</span><span·class="p"·data-group-id="3[·...·truncated·by·diffoscope;·len:·218,·SHA:·94551f27bfbbc3826b4450c44faa01bd42fba84b0642ce38bd6a7c711b5e625e·...·]-9">]</span><span·class="p">;</span><span·class="w">
  
173 </span><span·class="nf">init_per_testcase</span><span·class="p"·data-group-id="0916717088-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="0916717088-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="3599747740-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="3599747740-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="0916717088-13">(</span><span·class="p"·data-group-id="0916717088-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="3599747740-13">(</span><span·class="p"·data-group-id="3599747740-13">)</span><span·class="p">,</span><span·class="w">
175 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="0916717088-14">(</span><span·class="p"·data-group-id="0916717088-14">)</span><span·class="p">,</span><span·class="w">175 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="3599747740-14">(</span><span·class="p"·data-group-id="3599747740-14">)</span><span·class="p">,</span><span·class="w">
176 ····</span><span·class="p"·data-group-id="0916717088-15">[</span><span·class="p"·data-group-id="0916717088-16">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0916717088-16">}</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·107,·SHA:·e7e6d113a1365bcdfbdf123e5d676af5033f7d4d67b091aab3656378ea56b20e·...·]-15">]</span><span·class="p">.</span><span·class="w">176 ····</span><span·class="p"·data-group-id="3599747740-15">[</span><span·class="p"·data-group-id="3599747740-16">{</span><span·class="ss">server_pid</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="3599747740-16">}</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·107,·SHA:·b89c0c8d7eee9d61bd15884319cedb7022d2107496c5228d01b401850b50298e·...·]-15">]</span><span·class="p">.</span><span·class="w">
  
177 </span><span·class="nf">end_per_testcase</span><span·class="p"·data-group-id="0916717088-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="0916717088-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="3599747740-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="3599747740-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="0916717088-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="0916717088-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="3599747740-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="3599747740-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="0916717088-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="0916717088-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="3599747740-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="3599747740-19">)</span><span·class="p">,</span><span·class="w">
181 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="0916717088-20">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0916717088-20">)</span><span·class="p">.</span><span·class="w">181 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="3599747740-20">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="3599747740-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="0916717088-21">(</span><span·class="p"·data-group-id="0916717088-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0916717088-22">[</span><span·class="ss">start_and_stop</span><span·class[·...·truncated·by·diffoscope;·len:·202,·SHA:·e0d8e13a43f91bb1f170b9f4a112c094c1f39915f75b6c5c4ea140627a2439b2·...·]-22">]</span><span·class="p">.</span><span·class="w">183 </span><span·class="nf">all</span><span·class="p"·data-group-id="3599747740-21">(</span><span·class="p"·data-group-id="3599747740-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3599747740-22">[</span><span·class="ss">start_and_stop</span><span·class[·...·truncated·by·diffoscope;·len:·202,·SHA:·bae529f9444bca1df9f90473c893157b9250cc522b54126d4876aaf08b04108a·...·]-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="0916717088-23">(</span><span·class="p">_</span><span·class="p"·data-group-id="0916717088-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="3599747740-23">(</span><span·class="p">_</span><span·class="p"·data-group-id="3599747740-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="0916717088-24">(</span><span·class="p"·data-group-id="0916717088-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="3599747740-24">(</span><span·class="p"·data-group-id="3599747740-24">)</span><span·class="p">,</span><span·class="w">
187 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="0916717088-25">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0916717088-25">)</span><span·class="p">.</span><span·class="w">187 ····</span><span·class="nf">stop_server</span><span·class="p"·data-group-id="3599747740-25">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="3599747740-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="0916717088-26">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0916717088-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="3599747740-26">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3599747740-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="0916717088-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="0916717088-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="3599747740-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="3599747740-27">)</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="0916717088-28">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0916717088-28">)</span><span·class="p">.</span><span·class="w">191 ····</span><span·class="nf">configure_server</span><span·class="p"·data-group-id="3599747740-28">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="3599747740-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="0916717088-29">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0916717088-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="3599747740-29">(</span><span·class="n">Config</span><span·class="p"·data-group-id="3599747740-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="0916717088-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="0916717088-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="3599747740-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="3599747740-30">)</span><span·class="p">,</span><span·class="w">
195 ····</span><span·class="p"·data-group-id="0916717088-31">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="0916717088-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:·20f5af18560e70a01209c23755824b77d7a0a0758280f70765270ea3b2478d03·...·]-32">)</span><span·class="p">,</span><span·class="w">195 ····</span><span·class="p"·data-group-id="3599747740-31">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="3599747740-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:·42a39718835ea3b6d7daf6a2eb9cf9e0af3f116f8104427b8e49964a39a80066·...·]-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="0916717088-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="0916717088-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="3599747740-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="3599747740-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="0916717088-34">(</span><span·class="p"·data-group-id="0916717088-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="3599747740-34">(</span><span·class="p"·data-group-id="3599747740-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ····</span><span·class="p"·data-group-id="0916717088-35">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0916717088-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:·bcda4d1ab1de31b1d4caa2d50f28ddeade92221a370fcbdd6d9a0b9d2fe4a86f·...·]-36">)</span><span·class="p">,</span><span·class="w">199 ····</span><span·class="p"·data-group-id="3599747740-35">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="3599747740-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:·5b93de0b4aad4b076ee5cf9c8eed20b46ead9de4cc212d35a225d8bad68cb29d·...·]-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="0916717088-37">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0916717088-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="3599747740-37">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="3599747740-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="0916717088-38">(</span><span·class="p"·data-group-id="0916717088-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="3599747740-38">(</span><span·class="p"·data-group-id="3599747740-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="0916717088-39">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="0916717088-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="3599747740-39">(</span><span·class="n">ServerPid</span><span·class="p"·data-group-id="3599747740-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="0916717088-40">(</span><span·class="ss">my_server_cfg</span><span·class="p"·data-group-id="0916717088-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="3599747740-40">(</span><span·class="ss">my_server_cfg</span><span·class="p"·data-group-id="3599747740-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="0916717088-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="0916717088-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="3599747740-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="3599747740-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="2057985062-1">(</span><span·class="ss">server_b_SUITE</span><span·class="p"·data-group-id="2057985062-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="9479987833-1">(</span><span·class="ss">server_b_SUITE</span><span·class="p"·data-group-id="9479987833-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="2057985062-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="2057985062-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="9479987833-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="9479987833-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="2057985062-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="2057985062-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="9479987833-3">(</span><span·class="s">&quot;ct.hrl&quot;</span><span·class="p"·data-group-id="9479987833-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="2057985062-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2057985062-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="9479987833-4">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9479987833-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="2057985062-5">{</span><span·class="ss">server_a_SUITE</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="2057985062-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc[·...·truncated·by·diffoscope;·len:·282,·SHA:·93261ee28422ebb0f788c4b883469064df8a8e7b29e4ba7ba58ee0ec9f75fef7·...·]-6">)</span><span·class="p">,</span><span·class="w">256 ····</span><span·class="p"·data-group-id="9479987833-5">{</span><span·class="ss">server_a_SUITE</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="9479987833-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc[·...·truncated·by·diffoscope;·len:·282,·SHA:·a56059be8059e9816da2e33f789a24cab11530189ce6fb910e47be3f81134f8b·...·]-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="2057985062-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="2057985062-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="9479987833-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="9479987833-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="2057985062-8">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="2057985062-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="9479987833-8">(</span><span·class="n">ServerId</span><span·class="p"·data-group-id="9479987833-8">)</span><span·class="p">,</span><span·class="w">
260 ····</span><span·class="p"·data-group-id="2057985062-9">[</span><span·class="p"·data-group-id="2057985062-10">{</span><span·class="ss">ids</span><span·class="p">,</span><span·class="p"·data-group-id="2057985062-11">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">Sess[·...·truncated·by·diffoscope;·len:·262,·SHA:·5dac92c0e27745a19a827278345be281fc356a71717d964b2f49f1769b55a9f4·...·]-9">]</span><span·class="p">.</span><span·class="w">260 ····</span><span·class="p"·data-group-id="9479987833-9">[</span><span·class="p"·data-group-id="9479987833-10">{</span><span·class="ss">ids</span><span·class="p">,</span><span·class="p"·data-group-id="9479987833-11">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">Sess[·...·truncated·by·diffoscope;·len:·262,·SHA:·100cc147a9238197b9f4c1b50d9fc5bf891aef6eb88438da59b5887672d184d0·...·]-9">]</span><span·class="p">.</span><span·class="w">
  
261 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="2057985062-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2057985062-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="9479987833-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9479987833-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="2057985062-13">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="2057985062-13">}</span><span·class="w">263 ····</span><span·class="p"·data-group-id="9479987833-13">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="9479987833-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="2057985062-14">(</span><span·class="p"·data-group-id="2057985062-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2057985062-15">[</span><span·class="ss">allocate</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·106,·SHA:·f152e4d468d78fcba77a2c1a9c3f717d196825afcfc736e750a1f53e154f80d8·...·]-15">]</span><span·class="p">.</span><span·class="w">265 </span><span·class="nf">all</span><span·class="p"·data-group-id="9479987833-14">(</span><span·class="p"·data-group-id="9479987833-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="9479987833-15">[</span><span·class="ss">allocate</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·106,·SHA:·fd7bca10528b6c45275dad571bfade41bb03e3c8d3f103011b52888f56904ec8·...·]-15">]</span><span·class="p">.</span><span·class="w">
  
266 </span><span·class="nf">allocate</span><span·class="p"·data-group-id="2057985062-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2057985062-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="9479987833-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9479987833-16">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
267 ····</span><span·class="p"·data-group-id="2057985062-17">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="2057985062-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·18a2c813613338cb39edd466bf65329c34bec07e66de622be2df0b3453982606·...·]-18">)</span><span·class="p">,</span><span·class="w">267 ····</span><span·class="p"·data-group-id="9479987833-17">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="9479987833-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·628c3bdff67b9516d8b986dc1af38923d3e684a86a8afe5d60bc38fd038db025·...·]-18">)</span><span·class="p">,</span><span·class="w">
268 ····</span><span·class="p"·data-group-id="2057985062-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="2057985062-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:·fd38fb3a539b1896efdffa38b584b636d4a74803e4358d00e95c5d9bc9c60177·...·]-20">)</span><span·class="p">,</span><span·class="w">268 ····</span><span·class="p"·data-group-id="9479987833-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="9479987833-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:·e4d5517e843a4392d60060dce0e29cbba5cd084279ebd149e23ff66e5fbde3a1·...·]-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="2057985062-21">[</span><span·class="p"·data-group-id="2057985062-22">{</span><span·class="ss">handle</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="2057985062-22">}</span><span·class="p"·data-group-id="2057985062-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="9479987833-21">[</span><span·class="p"·data-group-id="9479987833-22">{</span><span·class="ss">handle</span><span·class="p">,</span><span·class="n">Handle</span><span·class="p"·data-group-id="9479987833-22">}</span><span·class="p"·data-group-id="9479987833-21">]</span><span·class="p">,</span><span·class="w">
271 ····</span><span·class="p"·data-group-id="2057985062-23">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">NewConfig</span><span·class="p"·data-group-id="2057985062-23">}</span><span·class="p">.</span><span·class="w">271 ····</span><span·class="p"·data-group-id="9479987833-23">{</span><span·class="ss">save_config</span><span·class="p">,</span><span·class="n">NewConfig</span><span·class="p"·data-group-id="9479987833-23">}</span><span·class="p">.</span><span·class="w">
  
272 </span><span·class="nf">deallocate</span><span·class="p"·data-group-id="2057985062-24">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2057985062-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="9479987833-24">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9479987833-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
273 ····</span><span·class="p"·data-group-id="2057985062-25">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="2057985062-25">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·d9885ff02396f0f25539fad922d2c0dc0f173ebcf0e26bb69947dfda3bc3bd38·...·]-26">)</span><span·class="p">,</span><span·class="w">273 ····</span><span·class="p"·data-group-id="9479987833-25">{</span><span·class="n">ServerId</span><span·class="p">,</span><span·class="n">SessionId</span><span·class="p"·data-group-id="9479987833-25">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pro[·...·truncated·by·diffoscope;·len:·269,·SHA:·24ccb0570eac3cf0f8925fed38b65b624fed7b4862bc040c177dfc3146eefe5c·...·]-26">)</span><span·class="p">,</span><span·class="w">
274 ····</span><span·class="p"·data-group-id="2057985062-27">{</span><span·class="ss">allocate</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="2057985062-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pr[·...·truncated·by·diffoscope;·len:·279,·SHA:·d20f3998ad865a3aad41b0a8f8cc362571d24cda966be718a478ae27e853b9d5·...·]-28">)</span><span·class="p">,</span><span·class="w">274 ····</span><span·class="p"·data-group-id="9479987833-27">{</span><span·class="ss">allocate</span><span·class="p">,</span><span·class="n">OldConfig</span><span·class="p"·data-group-id="9479987833-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">pr[·...·truncated·by·diffoscope;·len:·279,·SHA:·fe7737948afdd4131e502600252f3671024fa47485e065843eaaf5a34e7dcc57·...·]-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="2057985062-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="2057985062-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="9479987833-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="9479987833-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="2057985062-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="2057985062-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="9479987833-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="9479987833-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.7/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="6685473298-1">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="n">EventHandlers</span><span·class="p"·data-group-id="6685473298-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="1883498247-1">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="n">EventHandlers</span><span·class="p"·data-group-id="1883498247-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="6685473298-2">[</span><span·class="n">EH</span><span·class="p"·data-group-id="6685473298-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="1883498247-2">[</span><span·class="n">EH</span><span·class="p"·data-group-id="1883498247-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="6685473298-3">(</span><span·class="p"·data-group-id="6685473298-3">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="6685473298-4">{</span><span·class="nf">atom</span><span·class="p"·data-group-id="6685473298-5">(</span><span·class="p"·data-group-id="6685473298-5">)</span><span·class="p">,</span><span·class="n">InitArgs</span><span·class="p"·data-group-id="6685473298-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="6685473298-6">{</span><span·class="p"·data-group-id="6685473298-7">[</span><span·class="nf">atom</span><span·class="p"·data-group-id="6685473298-8">(</span><span·class="p"·data-group-id="6685473298-8">)</span><span·class="p"·data-group-id="6685473298-7">]</span><span·class="p">,</span><span·class="n">InitArgs</span><span·class="p"·data-group-id="6685473298-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="6685473298-9">[</span><span·class="nf">term</span><span·class="p"·data-group-id="6685473298-10">(</span><span·class="p"·data-group-id="6685473298-10">)</span><span·class="p"·data-group-id="6685473298-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="3676741880-1">(</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·1273,·SHA:·bef1004410233915709a819c975eb2369e2ea91f3a97dbf07a24fc308e2db3de·...·]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="1883498247-3">(</span><span·class="p"·data-group-id="1883498247-3">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·838,·SHA:·abee66e3c59177583e2decd173f3074b713a19935bd678a1b32b8768abeffcf0·...·]
 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="1883498247-9">[</span><span·class="nf">term</span><span·class="p"·data-group-id="1883498247-10">(</span><span·class="p"·data-group-id="1883498247-10">)</span><span·class="p"·data-group-id="1883498247-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="5276158700-1">(</span><span·class="p"·data-group-id="5276158700-2">[</span><span·class="p"·data-group-id="5276158700-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-id="5276158700-3">}</span><span·class="p">,</span><span·class="p"·data-group-id="5276158700-4">{</span><span·class="ss">event_handler</span><span·class="p">,</span><span·class="p"·data-group-id="5276158700-5">[</span><span·class="ss">my_evh1</span><span·class="p">,</span><span·class="p"·data-group-id="5276158700-6">{</span><span·class="ss">my_evh2</span><span·class="p">,</span><span·class="p"·data-group-id="5276158700-7">[</span><span·class="nf">node</span><span·class="p"·data-group-id="5276158700-8">(</span><span·class="p"·data-group-id="5276158700-8">)</span><span·class="p"·data-group-id="5276158700-7">]</span><span·class="p"·data-group-id="5276158700-6">}</span><span·class="p"·data-group-id="5276158700-5">]</span><span·class="p"·data-group-id="5276158700-4">}</span><span·class="p"·data-group-id="5276158700-2">]</span><span·class="p"·data-group-id="5276158700-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.7/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="8774301285-1">(</span><span·class="ss">db_data_type_SUITE</span><span·class="p"·data-group-id="8774301285-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="9569010140-1">(</span><span·class="ss">db_data_type_SUITE</span><span·class="p"·data-group-id="9569010140-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="8774301285-2">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="8774301285-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="9569010140-2">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="9569010140-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="8774301285-3">(</span><span·class="p"·data-group-id="8774301285-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="9569010140-3">(</span><span·class="p"·data-group-id="9569010140-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="8774301285-4">]</span><span·class="p"·data-group-id="8774301285-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="9569010140-4">]</span><span·class="p"·data-group-id="9569010140-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="8774301285-5">(</span><span·class="p"·data-group-id="8774301285-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:·a037944baefef05298b1e288faaccff18c9ddef6d1c04e7d3cdc75dac7045811·...·]-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="9569010140-5">(</span><span·class="p"·data-group-id="9569010140-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:·e8401cfbcf28c76aeaf782eb6e03eea4d4bb1161f8b5907c388bc7fb53f4757f·...·]-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="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-8">(</span><span·class="p"·data-group-id="8774301285-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="9569010140-8">(</span><span·class="p"·data-group-id="9569010140-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
157 ····</span><span·class="p"·data-group-id="8774301285-9">[</span><span·class="p"·data-group-id="8774301285-10">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="8774301285-11">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·159,·SHA:·852b83b50a27b972e15cca496034ea8a1294fe553052995bdd247f856864527e·...·]-9">]</span><span·class="p">.</span><span·class="w">157 ····</span><span·class="p"·data-group-id="9569010140-9">[</span><span·class="p"·data-group-id="9569010140-10">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="9569010140-11">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·159,·SHA:·9ad994fb6f9e729ed0f248b5489d8ce4180cbddf6f08cb796575f9f895acf452·...·]-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="8774301285-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8774301285-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="9569010140-12">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9569010140-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
167 ····</span><span·class="p"·data-group-id="8774301285-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="8774301285-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·383,·SHA:·97e7247a507ed3f74cb0e632004e1452e9eaef942d738c77ad29f725501ea3c2·...·]-14">)</span><span·class="p">,</span><span·class="w">167 ····</span><span·class="p"·data-group-id="9569010140-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="9569010140-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·383,·SHA:·3c45e3a1d788d7f488b8bc7bd8096325e4f7baae3f044f48abe8fb3f40380696·...·]-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="8774301285-16">(</span><span·class="p"·data-group-id="8774301285-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="9569010140-16">(</span><span·class="p"·data-group-id="9569010140-16">)</span><span·class="p">,</span><span·class="w">
169 ····</span><span·class="p"·data-group-id="8774301285-17">[</span><span·class="p"·data-group-id="8774301285-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="8774301285-18">}</s[·...·truncated·by·diffoscope;·len:·368,·SHA:·a7f866748ee2d7a1e2914c750e994eb3912e77824d72203342b5bbe1f3d2517b·...·]-17">]</span><span·class="p">.</span><span·class="w">169 ····</span><span·class="p"·data-group-id="9569010140-17">[</span><span·class="p"·data-group-id="9569010140-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="9569010140-18">}</s[·...·truncated·by·diffoscope;·len:·368,·SHA:·63b6aa6c7d7668571e60dc26a659666107417dd923853d10c932b5a2e7fc0a82·...·]-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="8774301285-20">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8774301285-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="9569010140-20">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9569010140-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="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-22">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="8774301285-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="9569010140-22">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="9569010140-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="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-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="8774301285-27"[·...·truncated·by·diffoscope;·len:·131,·SHA:·8c832e40219b2c001f7cdc072847caeca60467475fe06b572c50bcde852ed149·...·]-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="9569010140-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="9569010140-27"[·...·truncated·by·diffoscope;·len:·131,·SHA:·77359dc636a2fda50276dc45d28d4c251ab43e3533129471564ed4144b661f53·...·]-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="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-32">(</span><span·class="p"·data-group-id="8774301285-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="9569010140-32">(</span><span·class="p"·data-group-id="9569010140-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 ····</span><span·class="p"·data-group-id="8774301285-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="8774301285-33">]</span><span·class="p">.</span><span·class="w">225 ····</span><span·class="p"·data-group-id="9569010140-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="9569010140-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="8774301285-34">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8774301285-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="9569010140-34">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9569010140-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="8774301285-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:·991784b4e8dfe0cec5974be74567548920cb39883bf8d92c530c5eeaf234edc6·...·]-35">)</span><span·class="p">.</span><span·class="w">230 ····</span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="9569010140-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:·aadb3d59f1c42d2d1c68ccb9f4da28be2c32c7bf05da1ca1c38cd92f7200a3bb·...·]-35">)</span><span·class="p">.</span><span·class="w">
  
231 </span><span·class="nf">integer</span><span·class="p"·data-group-id="8774301285-36">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8774301285-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="9569010140-36">(</span><span·class="n">Config</span><span·class="p"·data-group-id="9569010140-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="8774301285-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="8774301285-37">)</span><span·class="p">.</span><span·class="w">232 ····</span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="9569010140-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="9569010140-37">)</span><span·class="p">.</span><span·class="w">
  
  
233 </span><span·class="nf">insert_and_lookup</span><span·class="p"·data-group-id="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-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="8774301285-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="9569010140-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="9569010140-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="8774301285-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:·e568e6c89547ace675c94a3cc6990cc065a65e57a8c898f7a188a1db819e7213·...·]-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="9569010140-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:·be30cd96b7bcbf6e1867054ebeefcbcce918b704cb45ebacbacf8c006b6d6499·...·]-41">)</span><span·class="p">,</span><span·class="w">
237 ····</span><span·class="p"·data-group-id="8774301285-42">[</span><span·class="n">Value</span><span·class="p"·data-group-id="8774301285-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:·13dbf9e1b0450efdbeb0309dfeed82363ab453826d3123bcdbd360be2d73e4bc·...·]-43">)</span><span·class="p">,</span><span·class="w">237 ····</span><span·class="p"·data-group-id="9569010140-42">[</span><span·class="n">Value</span><span·class="p"·data-group-id="9569010140-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:·61c56ab1109c52d3a058de0b84ec561dbafc712e252436c1883f26c33c6b04f9·...·]-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.7/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="1261755613-1">(</span><span·class="ss">my1st_SUITE</span><span·class="p"·data-group-id="1261755613-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="0735386098-1">(</span><span·class="ss">my1st_SUITE</span><span·class="p"·data-group-id="0735386098-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="1261755613-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="1261755613-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="0735386098-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="0735386098-2">)</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">all</span><span·class="p"·data-group-id="1261755613-3">(</span><span·class="p"·data-group-id="1261755613-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="0735386098-3">(</span><span·class="p"·data-group-id="0735386098-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
175 ····</span><span·class="p"·data-group-id="1261755613-4">[</span><span·class="ss">mod_exists</span><span·class="p"·data-group-id="1261755613-4">]</span><span·class="p">.</span><span·class="w">175 ····</span><span·class="p"·data-group-id="0735386098-4">[</span><span·class="ss">mod_exists</span><span·class="p"·data-group-id="0735386098-4">]</span><span·class="p">.</span><span·class="w">
  
176 </span><span·class="nf">mod_exists</span><span·class="p"·data-group-id="1261755613-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="1261755613-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="0735386098-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="0735386098-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ····</span><span·class="p"·data-group-id="1261755613-6">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">mymod</span><span·class="p"·data-group-id="1261755613-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</spa[·...·truncated·by·diffoscope;·len:·182,·SHA:·d473b764c3a4a4bbb366b20e1cd9cc343b79c09b3df97a47aa2407b79ed94df2·...·]-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="0735386098-6">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">mymod</span><span·class="p"·data-group-id="0735386098-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">code</spa[·...·truncated·by·diffoscope;·len:·182,·SHA:·8b4bc2cde61138921202be9b9497060449ed7224f3c40143d630cdedbbcd850e·...·]-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="0175194268-1">(</span><span·class="ss">check_log_SUITE</span><span·class="p"·data-group-id="0175194268-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="8094954422-1">(</span><span·class="ss">check_log_SUITE</span><span·class="p"·data-group-id="8094954422-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="0175194268-2">(</span><span·class="p"·data-group-id="0175194268-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:·93f0c6d7959a5ceb805916becd08b90ceaadf4c5b017a384911fb6563db36e15·...·]-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="8094954422-2">(</span><span·class="p"·data-group-id="8094954422-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:·aad62a72e7c06b6d1808ec4d7d9cce76fe9e12a17e749832f1c1a221a805b86f·...·]-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="0175194268-4">(</span><span·class="p"·data-group-id="0175194268-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:·3fc26ede4246483150289cc669ad105d3864970716d5cef8ea4103f9d5d8607f·...·]-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="8094954422-4">(</span><span·class="p"·data-group-id="8094954422-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:·d269a294c8aaa869fca9bc83ac21976d6ae1976b707c481818813f55a3066545·...·]-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="0175194268-6">(</span><span·class="nf">value</span><span·class="p"·data-group-id="0175194268-7">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="0175194268-7">)</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·344,·SHA:·ec03d31d38cde10ba312091c1d7fbff25bec06cc275d8b884db3fa15c051ffb8·...·]-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="8094954422-6">(</span><span·class="nf">value</span><span·class="p"·data-group-id="8094954422-7">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Config</span><span·class="p"·data-group-id="8094954422-7">)</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·344,·SHA:·c560b053dd285afdc2697871859eba257bc6a49c42e32c81fd9a60e6ffcb7dbe·...·]-6">)</span><span·class="p">.</span><span·class="w">
  
195 </span><span·class="nf">all</span><span·class="p"·data-group-id="0175194268-9">(</span><span·class="p"·data-group-id="0175194268-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0175194268-10">[</span><span·class="ss">check_restart_result</span><span·c[·...·truncated·by·diffoscope;·len:·121,·SHA:·546d934a2a024645383e51fa390bff9b69081d0190892b09aaac4a13e70b9037·...·]-10">]</span><span·class="p">.</span><span·class="w">195 </span><span·class="nf">all</span><span·class="p"·data-group-id="8094954422-9">(</span><span·class="p"·data-group-id="8094954422-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8094954422-10">[</span><span·class="ss">check_restart_result</span><span·c[·...·truncated·by·diffoscope;·len:·121,·SHA:·b9e1a34dd990166df5c8f64b723f06e6732a1e1f0e95f726e9da1bf6b59fbc3a·...·]-10">]</span><span·class="p">.</span><span·class="w">
  
196 </span><span·class="nf">init_per_suite</span><span·class="p"·data-group-id="0175194268-11">(</span><span·class="n">InitConfigData</span><span·class="p"·data-group-id="0175194268-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="8094954422-11">(</span><span·class="n">InitConfigData</span><span·class="p"·data-group-id="8094954422-11">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ····</span><span·class="p"·data-group-id="0175194268-12">[</span><span·class="p"·data-group-id="0175194268-13">{</span><span·class="ss">logref</span><span·class="p">,</span><span·class="nf">open_log</span><span·class="p"·data-group-id="0175194268-14">(</span><span·class="p"·data-group-id="01751942[·...·truncated·by·diffoscope;·len:·219,·SHA:·540157e10ede719a32f51990bf2790587062b4800d660af24d8cfad1031bf523·...·]-12">]</span><span·class="p">.</span><span·class="w">197 ····</span><span·class="p"·data-group-id="8094954422-12">[</span><span·class="p"·data-group-id="8094954422-13">{</span><span·class="ss">logref</span><span·class="p">,</span><span·class="nf">open_log</span><span·class="p"·data-group-id="8094954422-14">(</span><span·class="p"·data-group-id="80949544[·...·truncated·by·diffoscope;·len:·219,·SHA:·3cc2a0c6e395ce61c31c073b737f1305edccc04ac460e388406d67d367516460·...·]-12">]</span><span·class="p">.</span><span·class="w">
  
198 </span><span·class="nf">end_per_suite</span><span·class="p"·data-group-id="0175194268-15">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="0175194268-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="8094954422-15">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="8094954422-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="0175194268-16">(</span><span·class="o">?</span><span·class="nf">value</span><span·class="p"·data-group-id="0175194268-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:·f1f9a5350220c29daed1b607d447e08567d7f98821ab07206ad4a460b330dbf6·...·]-16">)</span><span·class="p">.</span><span·class="w">199 ····</span><span·class="nf">close_log</span><span·class="p"·data-group-id="8094954422-16">(</span><span·class="o">?</span><span·class="nf">value</span><span·class="p"·data-group-id="8094954422-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:·4aea6c301349981f3a2fd4781d47dd10b8fa3a0a130f1aa30a53d7cf68e440db·...·]-16">)</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="nf">check_restart_result</span><span·class="p"·data-group-id="0175194268-18">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="0175194268-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="8094954422-18">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="8094954422-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="0175194268-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="0175194268-20">(</span><span·class="ss">logref</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·159,·SHA:·efec6e809f38d17e149ca9d2aafec32bba04dab2e346de7a25e78d9ac98da00f·...·]-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="8094954422-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="8094954422-20">(</span><span·class="ss">logref</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·159,·SHA:·b0c9e6c844e341cf258e30102d3388c34d93dc035a29769b643f57dd66d38df8·...·]-19">)</span><span·class="p">,</span><span·class="w">
202 ····</span><span·class="p"·data-group-id="0175194268-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="0175194268-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·258,·SHA:·f4acb1968eaf6844478b60f635e48ca75894947359daeab395fb158f12e12d1a·...·]-22">)</span><span·class="p">.</span><span·class="w">202 ····</span><span·class="p"·data-group-id="8094954422-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="8094954422-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·258,·SHA:·4b12447d99480b3cd2a48d7be8a42bdc3bee2858e08bc13709f10d122694beed·...·]-22">)</span><span·class="p">.</span><span·class="w">
  
203 </span><span·class="nf">check_no_errors</span><span·class="p"·data-group-id="0175194268-23">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="0175194268-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="8094954422-23">(</span><span·class="n">ConfigData</span><span·class="p"·data-group-id="8094954422-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="0175194268-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="0175194268-25">(</span><span·class="ss">logref</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·155,·SHA:·3db4954ad8313d3c65312ea4354d8d57aaefc3aa68e40e657287f7590d70d56a·...·]-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="8094954422-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="8094954422-25">(</span><span·class="ss">logref</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·155,·SHA:·e130183c9eb05de03d76a64339e8e19125788bf3c5c54c314a86cdf004608216·...·]-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="0175194268-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="0175194268-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="8094954422-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="8094954422-26">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
206 ········</span><span·class="p"·data-group-id="0175194268-27">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">Line</span><span·class="p"·data-group-id="0175194268-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:·8987d11121b4eeed1bd15f4b87de60459fa81e26d9ecb29d57981b79a1672ab5·...·]-28">)</span><span·class="p">;</span><span·class="w">206 ········</span><span·class="p"·data-group-id="8094954422-27">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">Line</span><span·class="p"·data-group-id="8094954422-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:·1269fca187d12dc6900bb334af4cbe47c0c157857968b2a2c65677b6377dbbe7·...·]-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="3468622104-1">(</span><span·class="p"·data-group-id="3468622104-2">[</span><span·class="p"·data-group-id="3468622104-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:·d7a96d50f9d3f5bd6059070b7d707df41223600c69f9bb93536848cf82665de0·...·]-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="2471156175-1">(</span><span·class="p"·data-group-id="2471156175-2">[</span><span·class="p"·data-group-id="2471156175-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:·490ed0a2e19d627daa523779a07fce18f14440f4d532f267ad78f126ba719b3d·...·]-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.7/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="5447539884-1">(</span><span·class="p"·data-group-id="5447539884-2">[</span><span·class="p"·data-group-id="5447539884-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="n">GroupsNamesOrPaths</span><span·class="p"·data-group-id="544[·...·truncated·by·diffoscope;·len:·346,·SHA:·de3f8d7d527ab86270c882eb4988255a8bdae1033d0fb84d47bd31a203f17420·...·]-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="4761055769-1">(</span><span·class="p"·data-group-id="4761055769-2">[</span><span·class="p"·data-group-id="4761055769-3">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="n">GroupsNamesOrPaths</span><span·class="p"·data-group-id="476[·...·truncated·by·diffoscope;·len:·346,·SHA:·14a8634596e0dea1ad05836d75ec6a93b8adfc1f27e135cd52c518f1b46d7fae·...·]-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="1819914126-1">(</span><span·class="ss">x_SUITE</span><span·class="p"·data-group-id="1819914126-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="5675628512-1">(</span><span·class="ss">x_SUITE</span><span·class="p"·data-group-id="5675628512-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="1819914126-2">(</span><span·class="p"·data-group-id="1819914126-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="5675628512-2">(</span><span·class="p"·data-group-id="5675628512-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
318 ··</span><span·class="p"·data-group-id="1819914126-3">[</span><span·class="p"·data-group-id="1819914126-4">{</span><span·class="ss">top1</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-5">[</span><span·class="p"·data-group-id="1819914126-5">]</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·5facb0b1a5b2f9444333c7aa50c36bf15bec5784d8493946c7ba2deaa79cbbb6·...·]-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="5675628512-3">[</span><span·class="p"·data-group-id="5675628512-4">{</span><span·class="ss">top1</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-5">[</span><span·class="p"·data-group-id="5675628512-5">]</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·489e0d6a194a9ad5e342291ca83222a2c6a607a8fb43656a9ef9cd3812f77374·...·]-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="1819914126-7">{</span><span·class="ss">sub11</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-8">[</span><span·class="p"·data-group-id="1819914126-8">]</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-9">[</spa[·...·truncated·by·diffoscope;·len:·176,·SHA:·c1dac3e40bb40006dca6793c3d44c669c76c8419376a6ec54a21ec8190d5229f·...·]-7">}</span><span·class="p">,</span><span·class="w">319 ·············</span><span·class="p"·data-group-id="5675628512-7">{</span><span·class="ss">sub11</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-8">[</span><span·class="p"·data-group-id="5675628512-8">]</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-9">[</spa[·...·truncated·by·diffoscope;·len:·176,·SHA:·2e72e23ea73194ca7f9b9a195bd607c5714772c1dce77ea0ea54d7960f063a56·...·]-7">}</span><span·class="p">,</span><span·class="w">
320 ·············</span><span·class="p"·data-group-id="1819914126-10">{</span><span·class="ss">sub12</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-11">[</span><span·class="p"·data-group-id="1819914126-11">]</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-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="5675628512-10">{</span><span·class="ss">sub12</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-11">[</span><span·class="p"·data-group-id="5675628512-11">]</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-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="1819914126-13">{</span><span·class="ss">sub121</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-14">[</span><span·class="p"·data-group-id="1819914126-14">]</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-15">[[·...·truncated·by·diffoscope;·len:·397,·SHA:·1f868870a73f50aa421e8974de7e045c1e17b569f6abf154b0496f4636e5c93b·...·]-4">}</span><span·class="p">,</span><span·class="w">321 ·······»       »       ·</span><span·class="p"·data-group-id="5675628512-13">{</span><span·class="ss">sub121</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-14">[</span><span·class="p"·data-group-id="5675628512-14">]</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-15">[[·...·truncated·by·diffoscope;·len:·397,·SHA:·f60b38d73bab02e223a29f80fcf5c88bedc48a62a82d2cdc09e9f4179e8c31f0·...·]-4">}</span><span·class="p">,</span><span·class="w">
  
322 ···</span><span·class="p"·data-group-id="1819914126-16">{</span><span·class="ss">top2</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-17">[</span><span·class="p"·data-group-id="1819914126-17">]</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-18">[</span><span·class="p"·data-group-id="1819914126-19">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="ss">sub21</span><span·class="p"·data-group-id="1819914126-19">}</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-20">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="ss">sub22</span><span·class="p"·data-group-id="1819914126-20">}</span><span·class="p"·data-group-id="1819914126-18">]</span><span·class="p"·data-group-id="1819914126-16">}</span><span·class="p">,</span><span·class="w"> 
323 ···</span><span·class="p"·data-group-id="1819914126-21">{</span><span·class="ss">sub21</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-22">[</span><span·class="p"·data-group-id="1819914126-22">]</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-23">[</span><span·class="ss">tc21</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-24">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="ss">sub2X2</span><span·class="p"·data-group-id="1819914126-24">}</span><span·class="p"·data-group-id="1819914126-23">]</span><span·class="p"·data-group-id="1819914126-21">}</span><span·class="p">,</span><span·class="w"> 
324 ···</span><span·class="p"·data-group-id="1819914126-25">{</span><span·class="ss">sub22</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-26">[</span><span·class="p"·data-group-id="1819914126-26">]</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-27">[<[·...·truncated·by·diffoscope;·len:·614,·SHA:·d9118e42d5786890a4daa5fa1ff9bae02ea0b36a7aa9a9b8022957267490dc15·...·]">}</span><span·class="p">,</span><span·class="w">322 ···</span><span·class="p"·data-group-id="5675628512-16">{</span><span·class="ss">top2</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-17">[</span><span·class="p"·data-group-id="5675628512-17">]</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-18">[</[·...·truncated·by·diffoscope;·len:·507,·SHA:·0ac4a20d6f395304ee7331a97dc9a9e5f8c4b5a422fed508ac8924be7184f13e·...·]">}</span><span·class="p">,</span><span·class="w">
 323 ···</span><span·class="p"·data-group-id="5675628512-21">{</span><span·class="ss">sub21</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-22">[</span><span·class="p"·data-group-id="5675628512-22">]</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-23">[</span><span·class="ss">tc21</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-24">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="ss">sub2X2</span><span·class="p"·data-group-id="5675628512-24">}</span><span·class="p"·data-group-id="5675628512-23">]</span><span·class="p"·data-group-id="5675628512-21">}</span><span·class="p">,</span><span·class="w">
 324 ···</span><span·class="p"·data-group-id="5675628512-25">{</span><span·class="ss">sub22</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-26">[</span><span·class="p"·data-group-id="5675628512-26">]</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-27">[</span><span·class="p"·data-group-id="5675628512-28">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="ss">sub221</span><span·class="p"·data-group-id="5675628512-28">}</span><span·class="p">,</span><span·class="ss">tc21</span><span·class="p">,</span><span·class="ss">tc22</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-29">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="ss">sub2X2</span><span·class="p"·data-group-id="5675628512-29">}</span><span·class="p"·data-group-id="5675628512-27">]</span><span·class="p"·data-group-id="5675628512-25">}</span><span·class="p">,</span><span·class="w">
325 ···</span><span·class="p"·data-group-id="1819914126-30">{</span><span·class="ss">sub221</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-31">[</span><span·class="p"·data-group-id="1819914126-31">]</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-32">[[·...·truncated·by·diffoscope;·len:·182,·SHA:·24ca46b6c53c7531fb85c0121fc8bc8e66e06b62d4c70ba1d25426b04820bfef·...·]-30">}</span><span·class="p">,</span><span·class="w">325 ···</span><span·class="p"·data-group-id="5675628512-30">{</span><span·class="ss">sub221</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-31">[</span><span·class="p"·data-group-id="5675628512-31">]</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-32">[[·...·truncated·by·diffoscope;·len:·182,·SHA:·09d85d32071d15d6316c28d8675cf6eeb1f751c43f03bc6dd00dc1ccbf7d3bf7·...·]-30">}</span><span·class="p">,</span><span·class="w">
326 ···</span><span·class="p"·data-group-id="1819914126-33">{</span><span·class="ss">sub2X2</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-34">[</span><span·class="p"·data-group-id="1819914126-34">]</span><span·class="p">,</span><span·class="p"·data-group-id="1819914126-35">[[·...·truncated·by·diffoscope;·len:·236,·SHA:·5bb6ca2cc091723fc54bab2ec8abb523a3d8013a1389701b38c4a5762b46a14a·...·]-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="5675628512-33">{</span><span·class="ss">sub2X2</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-34">[</span><span·class="p"·data-group-id="5675628512-34">]</span><span·class="p">,</span><span·class="p"·data-group-id="5675628512-35">[[·...·truncated·by·diffoscope;·len:·236,·SHA:·9a3186737d7c3e4e51f66aedfbe22165f9937155beb6df43c5ba880d0d040012·...·]-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="9829490522-1">(</span><span·class="p"·data-group-id="9829490522-2">[</span><span·class="p"·data-group-id="9829490522-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="98[·...·truncated·by·diffoscope;·len:·1634,·SHA:·b5eb31641b7e1bafc92b87d610aca2323f336765e7f5b4c5b1bba295d11687c6·...·]-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="4266202532-1">(</span><span·class="p"·data-group-id="4266202532-2">[</span><span·class="p"·data-group-id="4266202532-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:·1634,·SHA:·33f31251ea86c6d555a95030e4bcbae403a3be0905c92df2102c7fdbb72cc101·...·]-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="8964648191-1">(</span><span·class="p"·data-group-id="8964648191-2">[</span><span·class="p"·data-group-id="8964648191-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="8964648191-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8964648191-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="8964648191-5">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="8964648191-5">]</span><span·class="p"·data-group-id="8964648191-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8964648191-6">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="8964648191-7">[</span><span·class="ss">tc12</span><span·class="p"·data-group-id="8964648191-7">]</span><span·class="p"·data-group-id="8964648191-6">}</span><span·class="p"·data-group-id="8964648191-2">]</span><span·class="p"·data-group-id="8964648191-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="6047279698-1">(</span><span·class="p"·data-group-id="6047279698-2">[</span><span·class="p"·data-group-id="6047279698-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="6047279698-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6047279698-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="6047279698-5">[</span><span·class="p"·data-group-id="6047279698-6">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="6047279698-6">]</span><span·class="p"·data-group-id="6047279698-5">]</span><span·class="p"·data-group-id="6047279698-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6047279698-7">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="6047279698-8">[</span><span·class="ss">tc12</span><span·class="p"·data-group-id="6047279698-8">]</span><span·class="p"·data-group-id="6047279698-7">}</span><span·class="p"·data-group-id="6047279698-2">]</span><span·class="p"·data-group-id="6047279698-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:·609363cfb36914a97c4355c5db3dc0731ed545b13865725373c987274344ee95·...·]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:·512cb1613a13d07c19e7b3cd5932704cb028054c5bddd2bec62474c9c5a71ffd·...·]
 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="1273604228-1">(</span><span·class="p"·data-group-id="1273604228-2">[</span><span·class="p"·data-group-id="1273604228-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="1273604228-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1273604228-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="1273604228-5">[</span><span·class="ss">top1</span><span·class="p"·data-group-id="1273604228-5">]</span><span·class="p"·data-group-id="1273604228-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1273604228-6">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="1273604228-7">[</span><span·class="ss">tc16</span><span·class="p"·data-group-id="1273604228-7">]</span><span·class="p"·data-group-id="1273604228-6">}</span><span·class="p"·data-group-id="1273604228-2">]</span><span·class="p"·data-group-id="1273604228-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="3518933347-1">(</span><span·class="p"·data-group-id="3518933347-2">[</span><span·class="p"·data-group-id="3518933347-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="35[·...·truncated·by·diffoscope;·len:·613,·SHA:·6971f8031fd88966016c78ab7dc0a66af9b539e6701e714e00383beb5aaa0abe·...·]47-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="9176954947-1">(</span><span·class="p"·data-group-id="9176954947-2">[</span><span·class="p"·data-group-id="9176954947-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="91[·...·truncated·by·diffoscope;·len:·613,·SHA:·9997153eaa48a06c34ff81b278a18fc077e915717faa1ebbe2218732c5636376·...·]47-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="7863037481-1">(</span><span·class="p"·data-group-id="7863037481-2">[</span><span·class="p"·data-group-id="7863037481-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="78[·...·truncated·by·diffoscope;·len:·457,·SHA:·afe4a22b0a858ec2a4fcfdd3f6efa42429549de22963a97249cc12c6d62f9170·...·]-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="6840521689-1">(</span><span·class="p"·data-group-id="6840521689-2">[</span><span·class="p"·data-group-id="6840521689-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="68[·...·truncated·by·diffoscope;·len:·457,·SHA:·a344075609d61cf960725618785b9851cf69c5c245f3180b9967daa498bdaa08·...·]-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="1145022468-1">(</span><span·class="p"·data-group-id="1145022468-2">[</span><span·class="p"·data-group-id="1145022468-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="1145022468-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1145022468-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="1145022468-5">[</span><span·class="p"·data-group-id="1145022468-6">[</span><span·class="ss">sub21</span><span·class="p">,</span><span·class="ss">sub2X2</span><span·class="p"·data-group-id="1145022468-6">]</span><span·class="p"·data-group-id="1145022468-5">]</span><span·class="p"·data-group-id="1145022468-4">}</span><span·class="p"·data-group-id="1145022468-2">]</span><span·class="p"·data-group-id="1145022468-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:·315744831f5e394c418877ea2ade96fd501838b10a987dd66c7b07e5354f2f31·...·]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:·0796aaedf3409677b6d1765d1c7bb51d1e4a55b5cb41e0fa71fc7b4a29f3c0f4·...·]
 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="1570703128-1">(</span><span·class="p"·data-group-id="1570703128-2">[</span><span·class="p"·data-group-id="1570703128-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="1570703128-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1570703128-4">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="p"·data-group-id="1570703128-5">[</span><span·class="p"·data-group-id="1570703128-6">[</span><span·class="ss">sub22</span><span·class="p"·data-group-id="1570703128-6">]</span><span·class="p"·data-group-id="1570703128-5">]</span><span·class="p"·data-group-id="1570703128-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1570703128-7">{</span><span·class="ss">testcase</span><span·class="p">,</span><span·class="p"·data-group-id="1570703128-8">[</span><span·class="ss">tc22</span><span·class="p">,</span><span·class="ss">tc21</span><span·class="p"·data-group-id="1570703128-8">]</span><span·class="p"·data-group-id="1570703128-7">}</span><span·class="p"·data-group-id="1570703128-2">]</span><span·class="p"·data-group-id="1570703128-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="2254533049-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="2254533049-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="2354426446-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="2354426446-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="2254533049-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="2254533049-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="2354426446-2">(</span><span·class="ss">unix_telnet</span><span·class="p"·data-group-id="2354426446-2">)</span><span·class="p">.</span><span·class="w">
368 </span><span·class="p"·data-group-id="2254533049-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="2254533049-3">}</span><span·class="gp·unselectable">368 </span><span·class="p"·data-group-id="2354426446-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="2354426446-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="2254533049-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="2254533049-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="2354426446-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="2354426446-4">)</span><span·class="p">.</span><span·class="w">
370 </span><span·class="p"·data-group-id="2254533049-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2254533049-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:·166,·SHA:·0b9fa48743eb963da5a14ce98aa342c9a92c75488254db2dca9eaf24c3de4f40·...·]-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="2354426446-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2354426446-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:·166,·SHA:·8565e8d470c480f5b666986becc63109d9c11701cb4bbc27a9a2e9c658603f17·...·]-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="0761827887-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="0761827887-2">[</span><span·class="s">&quot;b.spec[·...·truncated·by·diffoscope;·len:·196,·SHA:·d4ac8f492c0222e40a8879bfe23ad8e0e526c6032ec49a3249c6b6d5a24f2abf·...·]-1">}</span><span·class="p">.</span><span·class="w">457 </span><span·class="p"·data-group-id="8677798158-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="8677798158-2">[</span><span·class="s">&quot;b.spec[·...·truncated·by·diffoscope;·len:·196,·SHA:·ab77eca35105569c2a023bee248fe38fe20482103f65882c22e1ceb01720b62b·...·]-1">}</span><span·class="p">.</span><span·class="w">
458 </span><span·class="p"·data-group-id="0761827887-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="0761827887-4">[</span><span·class="s">&quot;d.[·...·truncated·by·diffoscope;·len:·200,·SHA:·e1bd0dfb3d589e918050db120225b36b6de3d265e40cdad5be7477590dead36a·...·]-3">}</span><span·class="p">.</span><span·class="w">458 </span><span·class="p"·data-group-id="8677798158-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="8677798158-4">[</span><span·class="s">&quot;d.[·...·truncated·by·diffoscope;·len:·200,·SHA:·bb91e85042a21465f67959499ee32d564a7565d53b9d18ccea42b8224c4f5400·...·]-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="8373580949-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="8373580949-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="7245733618-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="7245733618-1">}</span><span·class="p">.</span><span·class="w">
  
521 </span><span·class="p"·data-group-id="8373580949-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="8373580949-2">}</span><span·class="p">.</span><span·class="w">521 </span><span·class="p"·data-group-id="7245733618-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="7245733618-2">}</span><span·class="p">.</span><span·class="w">
  
522 </span><span·class="p"·data-group-id="8373580949-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="83735809[·...·truncated·by·diffoscope;·len:·2,·SHA:·0e17daca5f3e175f448bacace3bc0da47d0655a74c8dd0dc497a3afbdad95f1f·...·]-3">}</span><span·class="p">.</span><span·class="w">522 </span><span·class="p"·data-group-id="7245733618-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="72457336[·...·truncated·by·diffoscope;·len:·2,·SHA:·4ec9599fc203d176a301536c2e091a19bc852759b255bd6818810a42c5fed14a·...·]-3">}</span><span·class="p">.</span><span·class="w">
  
523 </span><span·class="p"·data-group-id="8373580949-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="8373580949-4">}</span><span·class="p">.</span><span·class="w">523 </span><span·class="p"·data-group-id="7245733618-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="7245733618-4">}</span><span·class="p">.</span><span·class="w">
  
524 </span><span·class="p"·data-group-id="8373580949-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="8373580949-5">}</span><span·class="p">.</span><span·class="w">524 </span><span·class="p"·data-group-id="7245733618-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="7245733618-5">}</span><span·class="p">.</span><span·class="w">
525 </span><span·class="p"·data-group-id="8373580949-6">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8373580949-7">[</span><span·class="n">NodeAlias</span><span·class="p"·data-group-id="8373580949-7">]</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·103,·SHA:·63e42bb8905f72ef3f0d1b25d3fb6c30fbe8a154e60ae4fcbdd57b62d3bd633a·...·]-6">}</span><span·class="p">.</span><span·class="w">525 </span><span·class="p"·data-group-id="7245733618-6">{</span><span·class="ss">init</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7245733618-7">[</span><span·class="n">NodeAlias</span><span·class="p"·data-group-id="7245733618-7">]</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·103,·SHA:·4a0c95de0c7c97b2d449a041feae4283b03f201b8d1fe03f4852bcf1ea52158e·...·]-6">}</span><span·class="p">.</span><span·class="w">
  
526 </span><span·class="p"·data-group-id="8373580949-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="8373580949-8">}</span><span·class="p">.</span><span·class="w">526 </span><span·class="p"·data-group-id="7245733618-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="7245733618-8">}</span><span·class="p">.</span><span·class="w">
527 </span><span·class="p"·data-group-id="8373580949-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="8373580949-9">}</span><span·class="p">.</span><span·class="w">527 </span><span·class="p"·data-group-id="7245733618-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="7245733618-9">}</span><span·class="p">.</span><span·class="w">
  
528 </span><span·class="p"·data-group-id="8373580949-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="8373580949-10">}</span><span·class="p">.</span><span·class="w">528 </span><span·class="p"·data-group-id="7245733618-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="7245733618-10">}</span><span·class="p">.</span><span·class="w">
529 </span><span·class="p"·data-group-id="8373580949-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="8373[·...·truncated·by·diffoscope;·len:·6,·SHA:·c86bffa55e036accfe58271358573b8d67b489d1fa9057253fab5c5a66d80b45·...·]-11">}</span><span·class="p">.</span><span·class="w">529 </span><span·class="p"·data-group-id="7245733618-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="7245[·...·truncated·by·diffoscope;·len:·6,·SHA:·e3ad3dc43ba93d8e71c14dfa11019774e2f9386286e3c1884169c67d4fc762ac·...·]-11">}</span><span·class="p">.</span><span·class="w">
  
530 </span><span·class="p"·data-group-id="8373580949-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="8373580949-12">}</span><span·class="p">.</span><span·class="w">530 </span><span·class="p"·data-group-id="7245733618-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="7245733618-12">}</span><span·class="p">.</span><span·class="w">
531 </span><span·class="p"·data-group-id="8373580949-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="8373580949-13">}</span><span·class="p">.</span><span·class="w">531 </span><span·class="p"·data-group-id="7245733618-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="7245733618-13">}</span><span·class="p">.</span><span·class="w">
  
532 </span><span·class="p"·data-group-id="8373580949-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="8373580949-14">}</span><span·class="p">.</span><span·class="w">532 </span><span·class="p"·data-group-id="7245733618-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="7245733618-14">}</span><span·class="p">.</span><span·class="w">
533 </span><span·class="p"·data-group-id="8373580949-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="8[·...·truncated·by·diffoscope;·len:·9,·SHA:·81129a6d52d1a58042e6dbe88a5c3144f481015caeff9fd39ffde50159f67438·...·]-15">}</span><span·class="p">.</span><span·class="w">533 </span><span·class="p"·data-group-id="7245733618-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="7[·...·truncated·by·diffoscope;·len:·9,·SHA:·d9712f43a4b375fded75ec78b0d3789ee26ca1182fbbe57a73d1a3ed5f162f48·...·]-15">}</span><span·class="p">.</span><span·class="w">
  
Max diff block lines reached; 136708/203603 bytes (67.14%) of diff not shown.
8.34 KB
./usr/share/doc/erlang-doc/html/lib/common_test-1.27.7/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.7)</small>125 ····<small·class="app-vsn"·translate="no">(common_test·v1.27.7)</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="8004655295-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="8004655295-2">[</span><span·class="p"·data-group-id="8004655295-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">HostNa[·...·truncated·by·diffoscope;·len:·61,·SHA:·683b0021a491a58a159ae096568559e39b505cdde1681a42e79c8ad227cb353c·...·]-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="7270867299-1">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="p"·data-group-id="7270867299-2">[</span><span·class="p"·data-group-id="7270867299-3">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="n">HostNa[·...·truncated·by·diffoscope;·len:·61,·SHA:·65d3f0458c39ff5a18abf6606f580c0ccd44f86e532ea1feb90dcae32513c5fe·...·]-3">}</span><span·class="p">,</span><span·class="w">
130 ·······</span><span·class="p"·data-group-id="8004655295-4">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="n">PortNum</span><span·class="p"·data-group-id="8004655295-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="7270867299-4">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="n">PortNum</span><span·class="p"·data-group-id="7270867299-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="8004655295-5">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">UserName</span><span·class="p"·data-group-id="8004655295-5">}</span><span·class="p">,</span><span·class="w">131 ·······</span><span·class="p"·data-group-id="7270867299-5">{</span><span·class="ss">username</span><span·class="p">,</span><span·class="n">UserName</span><span·class="p"·data-group-id="7270867299-5">}</span><span·class="p">,</span><span·class="w">
132 ·······</span><span·class="p"·data-group-id="8004655295-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="8004655295-6">}</span><span·class="p">,</span><span·class="w"> 
133 ·······</span><span·class="p"·data-group-id="8004655295-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="8004655295-7">}</span><span·class="p"·data-group-id="8004655295-2">]</span><span·class="p"·data-group-id="8004655295-1[·...·truncated·by·diffoscope;·len:·222,·SHA:·67878fdbd1e304a1346f863eba7ee32a4a28313966a3fd87470af519a65c4b5e·...·]132 ·······</span><span·class="p"·data-group-id="7270867299-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="7270867299-6">}</span><span·class="p">,</span><span·class="w">
 133 ·······</span><span·class="p"·data-group-id="7270867299-7">{</span><span·class="ss">keep_alive</span><span·class="p">,</span><span·class="n">Bool</span><span·class="p"·data-group-id="7270867299-7">}</span><span·class="p"·data-group-id="7270867299-2">]</span><span·class="p"·data-group-id="7270867299-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="6830322563-1">(</span><span·class="p"·data-group-id="6830322563-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6830322563-2">[</span><span·class="p"·data-group-id="6830322563-3">{</span>[·...·truncated·by·diffoscope;·len:·1120,·SHA:·02568ce5f948d36294225093392b86933580bb7c8ae34a1a69bbc542735f44ed·...·]-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="6710321427-1">(</span><span·class="p"·data-group-id="6710321427-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6710321427-2">[</span><span·class="p"·data-group-id="6710321427-3">{</span>[·...·truncated·by·diffoscope;·len:·1120,·SHA:·b763e96d30245c0e5cced789546e121cea71e0179ec7a75c0a60f299bf2bd75a·...·]-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.7/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="8467864179-1">(</span><span·class="p"·data-group-id="8467864179-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="0340144710-1">(</span><span·class="p"·data-group-id="0340144710-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
270 ····</span><span·class="p"·data-group-id="8467864179-2">[</span><span·class="p"·data-group-id="8467864179-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="8467864179-3">}</span><span·class="p">,</span><span·class="w">270 ····</span><span·class="p"·data-group-id="0340144710-2">[</span><span·class="p"·data-group-id="0340144710-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="0340144710-3">}</span><span·class="p">,</span><span·class="w">
271 ·····</span><span·class="p"·data-group-id="8467864179-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="8467864179-5">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·195,·SHA:·82be8c1faa910cddedae71e36b8140ed0f56f267f52c48b2a68541eca4f6a4e8·...·]-6">}</span><span·class="p">,</span><span·class="w">271 ·····</span><span·class="p"·data-group-id="0340144710-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="0340144710-5">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·195,·SHA:·10466530680ff61d52f899db6989e6cafdca41b5c8bf9bef93dee46f44f883a6·...·]-6">}</span><span·class="p">,</span><span·class="w">
 272 ····························</span><span·class="p"·data-group-id="0340144710-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="0340144710-7">}</span><span·class="p">,</span><span·class="w">
 273 ····························</span><span·class="p"·data-group-id="0340144710-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="0340144710-8">}</span><span·class="p"·data-group-id="0340144710-5">]</span><span·class="p"·data-group-id="0340144710-4">}</span><span·class="p">}</span><span·class="p"·data-group-id="0340144710-2">]</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">testcase2</span><span·class="p"·data-group-id="3874081410-1">(</span><span·class="p"·data-group-id="3874081410-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
 274 ····</span><span·class="p"·data-group-id="3874081410-2">[</span><span·class="p"·data-group-id="3874081410-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">unix</span><span·class="p"·data-group-id="3874081410-3">}</span><span·class="p">,</span><span·class="w">
 275 ·····</span><span·class="p"·data-group-id="3874081410-4">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3874081410-5">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3874081410-6">[</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">username</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">password</span><span·class="p"·data-group-id="3874081410-6">]</span><span·class="p"·data-group-id="3874081410-5">}</span><span·class="p"·data-group-id="3874081410-4">}</span><span·class="p">,</span><span·class="w">
 276 ·····</span><span·class="p"·data-group-id="3874081410-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="3874081410-8">[</span><span·class="p"·data-group-id="3874081410-9">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_telnet_host&quot;</span><span·class="p"·data-group-id="3874081410-9">}</span><span·class="p">,</span><span·class="w">
272 ····························</span><span·class="p"·data-group-id="8467864179-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="8467864179-7">}</span><span·class="p">,</span><span·class="w">277 ·····························</span><span·class="p"·data-group-id="3874081410-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="3874081410-10">}</span><span·class="p">,</span><span·class="w">
273 ····························</span><span·class="p"·data-group-id="8467864179-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="8467864179-8">}</span><span·class="p"·data-group-id="8467864179-5">]</span><span·class="p"·data-group-id="8467864179-4">}</span><span·class="p">}</span><span·class="p"·data-group-id="8467864179-2">]</span><span·class="p">.</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">testcase2</span><span·class="p"·data-group-id="7056655869-1">(</span><span·class="p"·data-group-id="7056655869-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
274 ····</span><span·class="p"·data-group-id="7056655869-2">[</span><span·class="p"·data-group-id="7056655869-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">unix</span><span·class="p"·data-group-id="7056655869-3">}</span><span·class="p">,</span><span·class="w"> 
275 ·····</span><span·class="p"·data-group-id="7056655869-4">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7056655869-5">{</span><span·class="ss">unix</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7056655869-6">[</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">username</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">password</span><span·class="p"·data-group-id="7056655869-6">]</span><span·class="p"·data-group-id="7056655869-5">}</span><span·class="p"·data-group-id="7056655869-4">}</span><span·class="p">,</span><span·class="w"> 
276 ·····</span><span·class="p"·data-group-id="7056655869-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="7056655869-8">[</span><span·class="p"·data-group-id="7056655869-9">{</span><span·class="ss">telnet</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;my_telnet_host&quot;</span><span·class="p"·data-group-id="7056655869-9">}</span><span·class="p">,</span><span·class="w"> 
277 ·····························</span><span·class="p"·data-group-id="7056655869-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="7056655869-10">}</span><span·class="p">,</span><span·class="w"> 
278 ·····························</span><span·class="p"·data-group-id="7056655869-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="7056655869-11">}</span><span·class="p"·data-group-id="7056655869-8">]</span><span[·...·truncated·by·diffoscope;·len:·113,·SHA:·f0e5657b57f124b0b8cb56286decb459e59f34a43f9e15b51f33c8bee1613400·...·]-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="3874081410-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="3874081410-11">}</span><span·class="p"·data-group-id="3874081410-8">]</span><span[·...·truncated·by·diffoscope;·len:·113,·SHA:·9725e46715b01d16442c73a0141fe6f1eea4c0c9d290d51bafdf90fa5b2de1ac·...·]-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="6286803203-1">(</span><span·class="p"·data-group-id="6286803203-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="7534080896-1">(</span><span·class="p"·data-group-id="7534080896-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
285 ····</span><span·class="p"·data-group-id="6286803203-2">[</span><span·class="w">285 ····</span><span·class="p"·data-group-id="7534080896-2">[</span><span·class="w">
286 ·····</span><span·class="p"·data-group-id="6286803203-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="6286803203-4">{</span><span·class="ss">seconds</span><span·class="p">,</span><span·class="mi">60</span><span·class="p"·data-group-id="6286803203-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·9acf50d2f0cd3536ea189e180416da5a6da567989126d47e35208ac943548f66·...·]-3">}</span><span·class="p">,</span><span·class="w">286 ·····</span><span·class="p"·data-group-id="7534080896-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="7534080896-4">{</span><span·class="ss">seconds</span><span·class="p">,</span><span·class="mi">60</span><span·class="p"·data-group-id="7534080896-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·57635a502717a43cb3b2ffb3e7297ba153dc38013f4bb08646ed0ae88666f0d5·...·]-3">}</span><span·class="p">,</span><span·class="w">
287 ·····</span><span·class="p"·data-group-id="6286803203-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">interfaces</span><span·class="p"·data-group-id="6286803203-5">}</span><span·class="p">,</span><span·class="w">287 ·····</span><span·class="p"·data-group-id="7534080896-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">interfaces</span><span·class="p"·data-group-id="7534080896-5">}</span><span·class="p">,</span><span·class="w">
288 ·····</span><span·class="p"·data-group-id="6286803203-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="w">288 ·····</span><span·class="p"·data-group-id="7534080896-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="w">
289 ·········</span><span·class="p"·data-group-id="6286803203-7">[</span><span·class="p"·data-group-id="6286803203-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="6286803203-8">}</span><span·class="p">,</span><span·class="w">289 ·········</span><span·class="p"·data-group-id="7534080896-7">[</span><span·class="p"·data-group-id="7534080896-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="7534080896-8">}</span><span·class="p">,</span><span·class="w">
290 ··········</span><span·class="p"·data-group-id="6286803203-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="6286803203-9">}</span><span·class="p"·data-group-id="6286803203-7">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·cfef1d7a55574b0e686cecd970e2e38b35782fd570917e7d659fd3b1b3ad38e2·...·]-6">}</span><span·class="w">290 ··········</span><span·class="p"·data-group-id="7534080896-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="7534080896-9">}</span><span·class="p"·data-group-id="7534080896-7">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·220a939619197f8aee5e9213b985bb4d43b35d22ac4311d60517570ba3c3fa23·...·]-6">}</span><span·class="w">
291 ····</span><span·class="p"·data-group-id="6286803203-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="7534080896-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="3860977187-1">(</span><span·class="p"·data-group-id="3860977187-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="9804677100-1">(</span><span·class="p"·data-group-id="9804677100-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
306 ····</span><span·class="p"·data-group-id="3860977187-2">[</span><span·class="w">306 ····</span><span·class="p"·data-group-id="9804677100-2">[</span><span·class="w">
307 ·····</span><span·class="p"·data-group-id="3860977187-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="3860977187-4">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="3860977187-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·1b401b0a2dc55c637ce16921222bd8d916895365e7ff4fac47620c8625f89c91·...·]-3">}</span><span·class="p">,</span><span·class="w">307 ·····</span><span·class="p"·data-group-id="9804677100-3">{</span><span·class="ss">timetrap</span><span·class="p">,</span><span·class="p"·data-group-id="9804677100-4">{</span><span·class="ss">minutes</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="9804677100-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·22dd75b2f4dfcc2d4c6d566b1aefffb55b9330dc266551a96e159769861ab3e5·...·]-3">}</span><span·class="p">,</span><span·class="w">
308 ·····</span><span·class="p"·data-group-id="3860977187-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">global_names</span><span·class="p"·data-group-id="3860977187-5">}</span><span·class="p">,</span><span·class="w">308 ·····</span><span·class="p"·data-group-id="9804677100-5">{</span><span·class="ss">require</span><span·class="p">,</span><span·class="ss">global_names</span><span·class="p"·data-group-id="9804677100-5">}</span><span·class="p">,</span><span·class="w">
309 ·····</span><span·class="p"·data-group-id="3860977187-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="p"·data-group-id="3860977187-7">[</span><span·class="p"·data-group-id="3860977187-8">{</span><span·class="ss">info</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·201,·SHA:·37e34e0530682e9a6e335d197a0115b3ea58b598e0f3e28c072c6b8a9df67b61·...·]-6">}</span><span·class="p">,</span><span·class="w">309 ·····</span><span·class="p"·data-group-id="9804677100-6">{</span><span·class="ss">userdata</span><span·class="p">,</span><span·class="p"·data-group-id="9804677100-7">[</span><span·class="p"·data-group-id="9804677100-8">{</span><span·class="ss">info</span><span·class="p">,</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·201,·SHA:·acd2076eb6ad5ce72c7ad0f330ef1734eb4f21631677073dc4b2c57765046dd9·...·]-6">}</span><span·class="p">,</span><span·class="w">
310 ·····</span><span·class="p"·data-group-id="3860977187-9">{</span><span·class="ss">silent_connections</span><span·class="p">,</span><span·class="p"·data-group-id="3860977187-10">[</span><span·class="ss">telnet</span><span·class="p"·data-group-id="3860977187-10">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·b0d7d2d1a33909ebbed980129e4ae61b78d0e74ae0b1ae54def2c0bd26d215af·...·]-9">}</span><span·class="p">,</span><span·class="w">310 ·····</span><span·class="p"·data-group-id="9804677100-9">{</span><span·class="ss">silent_connections</span><span·class="p">,</span><span·class="p"·data-group-id="9804677100-10">[</span><span·class="ss">telnet</span><span·class="p"·data-group-id="9804677100-10">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·4a6b4d5345ff04e2f05b7e7724013b6c817b2cdf4eb0f7f4908a291a82a258a7·...·]-9">}</span><span·class="p">,</span><span·class="w">
311 ·····</span><span·class="p"·data-group-id="3860977187-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="3860977187-11">}</span><span·class="w">311 ·····</span><span·class="p"·data-group-id="9804677100-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="9804677100-11">}</span><span·class="w">
312 ····</span><span·class="p"·data-group-id="3860977187-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="9804677100-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="6223761323-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:·8d0e1b323b198e13037a13b0823cde03a4bb238ccb6c198dce193aeadb81d4b5·...·]-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="5853314636-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:·ce27bc8adfb6ef6bce2f6f6198bff1192f993d19b96a03716ecee12f0b88beda·...·]-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="6223761323-3">{</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="n">Seed</span><span·class="p"·data-group-id="6223761323-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="5853314636-3">{</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="n">Seed</span><span·class="p"·data-group-id="5853314636-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="6223761323-4">{</span><span·class="nf">integer</span><span·class="p"·data-group-id="6223761323-5">(</span><span·class="p"·data-group-id="6223761323-5">)</span><span·class="p">,</span><span·class="nf">integer</span><span·class="p"·data-group-id="6223761323-[·...·truncated·by·diffoscope;·len:·266,·SHA:·272831c2abe4140915fcd8b27baefa4ea76b2307fc7194dea7c3b56a5c41040d·...·]-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="5853314636-4">{</span><span·class="nf">integer</span><span·class="p"·data-group-id="5853314636-5">(</span><span·class="p"·data-group-id="5853314636-5">)</span><span·class="p">,</span><span·class="nf">integer</span><span·class="p"·data-group-id="5853314636-[·...·truncated·by·diffoscope;·len:·266,·SHA:·2383351aec2d3ea99a6c92ebf52d11fd606d2219a12371b85f526ceb393e5b08·...·]-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="6223761323-8">(</span><span·class="p"·data-group-id="6223761323-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="5853314636-8">(</span><span·class="p"·data-group-id="5853314636-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="2593376310-1">(</span><span·class="p"·data-group-id="2593376310-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2593376310-2">[</span><span·class="p"·data-group-id="2593376310-3">{</span>[·...·truncated·by·diffoscope;·len:·495,·SHA:·70c2196f64e040489d2792a74c390361141c2df06ae732a4787d96c91ea8a14e·...·]-3">}</span><span·class="p">,</span><span·class="w">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="2353137666-1">(</span><span·class="p"·data-group-id="2353137666-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2353137666-2">[</span><span·class="p"·data-group-id="2353137666-3">{</span>[·...·truncated·by·diffoscope;·len:·495,·SHA:·4459483759c8e6a5a2754a0a35b3e2d1eb4b76e63501131d5ef962a8164be367·...·]-3">}</span><span·class="p">,</span><span·class="w">
345 ·············</span><span·class="p"·data-group-id="2593376310-6">{</span><span·class="ss">group2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2593376310-7">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="ss">sequence</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·422,·SHA:·ab0a1050c666cef3074dd5b20673760e07216fc12960f5509a91a31592d885a6·...·]-2">]</span><span·class="p">.</span></code></pre><p>To·specify·in·which·order·groups·are·to·be·executed·(also·with·respect·to·test345 ·············</span><span·class="p"·data-group-id="2353137666-6">{</span><span·class="ss">group2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2353137666-7">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="ss">sequence</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·422,·SHA:·94422a9091ed01f943274975a1354bf1070161f969494106698680ed1b43437b·...·]-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="1525506651-1">(</span><span·class="p"·data-group-id="1525506651-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1525506651-2">[</span><span·class="ss">testcase1</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1055,·SHA:·560c9b56ed11b699c468d156eb529f0d38b6183f37279274c7889f59d8866ddd·...·]-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="3630599542-1">(</span><span·class="p"·data-group-id="3630599542-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3630599542-2">[</span><span·class="ss">testcase1</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1055,·SHA:·c818a42872999b6db17a69aa0f51f41f4c3380da2e333b9a75030851755bdf2a·...·]-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="3577202595-1">(</span><span·class="p"·data-group-id="3577202595-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3577202595-2">[</span><span·class="p"·data-group-id="3577202595-3">{</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3577202595-4">[</span><span·class="p"·data-group-id="3577202595-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3577202595-5">[</span><span·class="p"·data-group-id="3577202595-6">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3577202595-7">[</span><span·class="p"·data-group-id="3577202595-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3577202595-8">[</span><span·class="ss">t2a</span><span·class="p">,</span><span·class="ss">t2b</span><span·class="p"·data-group-id="3577202595-8">]</span><span·class="p"·data-group-id="3577202595-6">}</span><span·class="p">,</span><span·class="w"> 
357 ··························</span><span·class="p"·data-group-id="3577202595-9">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3577202595-10">[</span><span·class="p"·data-group-id="3577202[·...·truncated·by·diffoscope;·len:·629,·SHA:·8583becd7b12d67efea4c05c630a29345dcb47d20d8d70bbd5e9dc045b7ed3e4·...·]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="9120619973-1">(</span><span·class="p"·data-group-id="9120619973-1">)</s[·...·truncated·by·diffoscope;·len:·1033,·SHA:·d7c8fbb7d5591479d6214b0525f72666e6390a8890d76d34c48ef38f01668a11·...·]
 357 ··························</span><span·class="p"·data-group-id="9120619973-9">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9120619973-10">[</span><span·class="p"·data-group-id="9120619973-10">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9120619973-11">[</span><span·class="ss">t31</span><span·class="p">,</span><span·class="ss">t3b</span><span·class="p"·data-group-id="9120619973-11">]</span><span·class="p"·data-group-id="9120619973-9">}</span><span·class="p"·data-group-id="9120619973-5">]</span><span·class="p"·data-group-id="9120619973-3">}</span><span·class="p"·data-group-id="9120619973-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="2390524289-1">(</span><span·class="p"·data-group-id="2390524289-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="5471267733-1">(</span><span·class="p"·data-group-id="5471267733-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
359 ···</span><span·class="p"·data-group-id="2390524289-2">[</span><span·class="p"·data-group-id="2390524289-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:·522,·SHA:·4fbf50cb3777ed2b2547aa04c95db727e8842f0936d66d73fc7671031ffc73df·...·]-3">}</span><span·class="p">,</span><span·class="w">359 ···</span><span·class="p"·data-group-id="5471267733-2">[</span><span·class="p"·data-group-id="5471267733-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:·522,·SHA:·2ce094ad6815664ab86c39e1056ffe02276ded0ee53272e34edbc69d5f630474·...·]-3">}</span><span·class="p">,</span><span·class="w">
360 ····</span><span·class="p"·data-group-id="2390524289-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="2390524289-8">[</span><span·class="p"·data-group-id="2390524289-9">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2390524289-10">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="p"·data-group-id="2390524289-11">{</span><span·class="ss">repeat</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="2390524289-11">}</span><span·class="p"·data-group-id="2390524289-10">]</span><span·class="p"·data-group-id="2390524289-9">}</span><span·class="p"·data-group-id="2390524289-8">]</span><span·class="p"·data-group-id="2390524289-7">}</span><span·class="p"·data-group-id="2390524289-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="9552719678-1">(</span><span·class="p"·data-group-id="9552719678-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
361 ···</span><span·class="p"·data-group-id="9552719678-2">[</span><span·class="p"·data-group-id="9552719678-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=[·...·truncated·by·diffoscope;·len:·483,·SHA:·7b1645f51056bbd8ea53a4eeb395927a9545680313caa213f825c7adfd6a96f3·...·]</span><span·class="w">360 ····</span><span·class="p"·data-group-id="5471267733-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·cla[·...·truncated·by·diffoscope;·len:·1106,·SHA:·0acf7248c886262fb97306544d3122023e79e5545aec0e50046a3eef51c7f7cf·...·]</span><span·class="w">
 361 ···</span><span·class="p"·data-group-id="6356328755-2">[</span><span·class="p"·data-group-id="6356328755-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="6356328755-4">[</span><span·class="p"·data-group-id="6356328755-5">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6356328755-6">[</span><span·class="ss">parallel</span><span·class="p"·data-group-id="6356328755-6">]</span><span·class="p"·data-group-id="6356328755-5">}</span><span·class="p">,</span><span·class="w">
362 ······························</span><span·class="p"·data-group-id="9552719678-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="9552719678-7">}</span><span·class="p"·data-group-id="9552719678-4">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·ec03f70c9c59b7a4b3749631be6ac23b966586e818a4a03c43712b619857110c·...·]-3">}</span><span·class="p">,</span><span·class="w">362 ······························</span><span·class="p"·data-group-id="6356328755-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="6356328755-7">}</span><span·class="p"·data-group-id="6356328755-4">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·ce3528838ebb1b5185febb167c22c3263e9d6d316d70162b81c2baa8c9faff1a·...·]-3">}</span><span·class="p">,</span><span·class="w">
363 ····</span><span·class="p"·data-group-id="9552719678-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:·577,·SHA:·0b6a57205643302e25790063d42ca918accae976acbf41bbf057982813e7fa55·...·]-10">}</span><span·class="p">,</span><span·class="w">363 ····</span><span·class="p"·data-group-id="6356328755-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:·577,·SHA:·6d200df3f7a2641cf21e8e32bbb774c9d8a94a644f0605af2bcb2dbc345fd863·...·]-10">}</span><span·class="p">,</span><span·class="w">
364 ······························</span><span·class="p"·data-group-id="9552719678-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="9552719678-13">}</span><span·class="p"·data-group-id="9552719678-9">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·77,·SHA:·daecd4d9e1bdd44f251e7f71573558a3da91f0d95bc95326ee632a1b3e1f98a5·...·]-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="6356328755-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="6356328755-13">}</span><span·class="p"·data-group-id="6356328755-9">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·77,·SHA:·198f21403a302d03cd83b2d0ab129a7f309718c5c5ec9a023c95a33a72faf8a9·...·]-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="0874524560-1">(</span><span·class="p"·data-group-id="0874524560-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="1710174405-1">(</span><span·class="p"·data-group-id="1710174405-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
366 ···</span><span·class="p"·data-group-id="0874524560-2">[</span><span·class="p"·data-group-id="0874524560-3">{</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0874524560-4">[</span><span·class="p"·data-group-id="0874524560-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0874524560-5">[</span><span·class="p"·data-group-id="0874524560-6">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests2</span><span·class="p"·data-group-id="0874524560-6">}</span><span·class="p"·data-group-id="0874524560-5">]</span><span·class="p"·data-group-id="0874524560-3">}</span><span·class="p">,</span><span·class="w"> 
367 ····</span><span·class="p"·data-group-id="0874524560-7">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0874524560-8">[</span><span·class="p"·data-group-id="0874524560-8">]</span><span·class[·...·truncated·by·diffoscope;·len:·401,·SHA:·e0292df120686b9ac853d59cda1501ad10295f5901a3b6720ef07e3c9b52f33b·...·]">}</span><span·class="p">,</span><span·class="w">366 ···</span><span·class="p"·data-group-id="1710174405-2">[</span><span·class="p"·data-group-id="1710174405-3">{</span><span·class="ss">tests1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1710174405-4">[</span><span·class=[·...·truncated·by·diffoscope;·len:·451,·SHA:·e3fd07d6f01f9bcd2fe375be15e823b04c276d08c0fe48eedccefd2f39ddb7f5·...·]">}</span><span·class="p">,</span><span·class="w">
 367 ····</span><span·class="p"·data-group-id="1710174405-7">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1710174405-8">[</span><span·class="p"·data-group-id="1710174405-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1710174405-9">[</span><span·class="p"·data-group-id="1710174405-10">{</span><span·class="ss">group</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tests3</span><span·class="p"·data-group-id="1710174405-10">}</span><span·class="p"·data-group-id="1710174405-9">]</span><span·class="p"·data-group-id="1710174405-7">}</span><span·class="p">,</span><span·class="w">
368 ····</span><span·class="p"·data-group-id="0874524560-11">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0874524560-12">[</span><span·class="p"·data-group-id="0874524560-13">{</span><span·class="ss">repeat</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·520,·SHA:·d27f7cee4fabc44aae654b66d146f938e7641eb777da3d329f58e0b8c887a769·...·]-2">]</span><span·class="p">.</span><span·class="w">368 ····</span><span·class="p"·data-group-id="1710174405-11">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1710174405-12">[</span><span·class="p"·data-group-id="1710174405-13">{</span><span·class="ss">repeat</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·520,·SHA:·7a5b304a305be964f4f84734028dfd47c06536a8e6f7ae2fcadc2a61f0110d37·...·]-2">]</span><span·class="p">.</span><span·class="w">
  
369 </span><span·class="nf">all</span><span·class="p"·data-group-id="0874524560-15">(</span><span·class="p"·data-group-id="0874524560-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="1710174405-15">(</span><span·class="p"·data-group-id="1710174405-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
370 ···</span><span·class="p"·data-group-id="0874524560-16">[</span><span·class="p"·data-group-id="0874524560-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="1710174405-16">[</span><span·class="p"·data-group-id="1710174405-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="0874524560-18">[</span><span·class="p"·data-group-id="0874524560-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="1710174405-18">[</span><span·class="p"·data-group-id="1710174405-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="0874524560-20">[</span><span·class="p"·data-group-id="0874524560-21">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0874524560-22">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·563,·SHA:·ee480da99fbd783aea45bc07f3f6336d3807d5338282dbb5a04aaeb62784f5ed·...·]-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="1710174405-20">[</span><span·class="p"·data-group-id="1710174405-21">{</span><span·class="ss">tests3</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1710174405-22">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·563,·SHA:·6003c0b6902692268cc7b808fd8b6ac24b284fd10ef9c1211348d53a1a1bfd49·...·]-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="6481733365-1">(</span><span·class="p"·data-group-id="6481733365-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="5318174933-1">(</span><span·class="p"·data-group-id="5318174933-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
374 ···</span><span·class="p"·data-group-id="6481733365-2">[</span><span·class="p"·data-group-id="6481733365-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:·2d243c4d0cd40a5c887a8824a225a3c43084515d0d282a494900418b2b95eb8b·...·]-3">}</span><span·class="p">,</span><span·class="w">374 ···</span><span·class="p"·data-group-id="5318174933-2">[</span><span·class="p"·data-group-id="5318174933-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:·92fa7006d9c7a439007b9d6a4dc02d4957a427980390faaae459276606b0e5f1·...·]-3">}</span><span·class="p">,</span><span·class="w">
375 ····</span><span·class="p"·data-group-id="6481733365-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:·0e79de3ce1b4082975f1063fb5e30826e83fd76d1f58b6ad8a01c21f391c7679·...·]-7">)</span><span·class="p">,</span><span·class="w">375 ····</span><span·class="p"·data-group-id="5318174933-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:·945cf2c796211cb52ea65ac9e6e74421bdfdaf40a49ffafcabccad288db12335·...·]-7">)</span><span·class="p">,</span><span·class="w">
376 ······························</span><span·class="p"·data-group-id="6481733365-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="6481733365-8">}</span><span·class="p"·data-group-id="6481733365-6">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·f405942929d0c1c18cf4e72c1394c71756dddb640cf725a297014090367754ce·...·]-2">]</span><span·class="p">.</span><span·class="w">376 ······························</span><span·class="p"·data-group-id="5318174933-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="5318174933-8">}</span><span·class="p"·data-group-id="5318174933-6">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·71421319ada6a1ea12a976f07b09260d0d02f13b72368e282f40ca01070b0f47·...·]-2">]</span><span·class="p">.</span><span·class="w">
377 </span><span·class="nf">test_cases</span><span·class="p"·data-group-id="6481733365-9">(</span><span·class="p"·data-group-id="6481733365-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="5318174933-9">(</span><span·class="p"·data-group-id="5318174933-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
378 ···</span><span·class="p"·data-group-id="6481733365-10">[</span><span·class="p"·data-group-id="6481733365-11">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6481733365-12">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·399,·SHA:·49fd0304d5fb1ea63db35b88e84a42ee05c154f5e2c4a768f1b6914f56859add·...·]-10">]</span><span·class="p">.</span><span·class="w">378 ···</span><span·class="p"·data-group-id="5318174933-10">[</span><span·class="p"·data-group-id="5318174933-11">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5318174933-12">[</span><span·class="ss">parallel</span><span·class="p"[·...·truncated·by·diffoscope;·len:·399,·SHA:·6106672815abbea8e5365955b7279ecc4738a060d1264420b28938e873dc3866·...·]-10">]</span><span·class="p">.</span><span·class="w">
  
379 </span><span·class="nf">shuffle_test</span><span·class="p"·data-group-id="6481733365-14">(</span><span·class="p"·data-group-id="6481733365-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="5318174933-14">(</span><span·class="p"·data-group-id="5318174933-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
380 ···</span><span·class="p"·data-group-id="6481733365-15">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6481733365-16">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="p"·data-group-id="6481733365-17">[·...·truncated·by·diffoscope;·len:·237,·SHA:·3a7b9b6e37636afb1f0760f613913f7832e4b488139fe074984f9a204e9fba6e·...·]-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="5318174933-15">{</span><span·class="ss">tests2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5318174933-16">[</span><span·class="ss">shuffle</span><span·class="p">,</span><span·class="p"·data-group-id="5318174933-17">[·...·truncated·by·diffoscope;·len:·237,·SHA:·88ac1b344a80213db4f8030e15d375c5da5ec9aa5db7c9259798e38cae20ff91·...·]-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>,
Max diff block lines reached; 42880/111869 bytes (38.33%) of diff not shown.
595 B
./usr/share/doc/erlang-doc/html/lib/compiler-8.6/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-43A9611A.js26 dist/search_data-62F7C547.js
27 dist/sidebar_items-34FC5BF5.js27 dist/sidebar_items-34FC5BF5.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.6/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="5502613436-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:·25fda44cecdd5deb6ca2d664f5611ec108c5c69e8b9983ebe85b390c7dbececa·...·]-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="3584349152-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:·6f1a9b4c5c96cd2f13bf834bc160612f289ce14b8f59427faf1d067e19d34163·...·]-1">}</span><span·class="p">,</span><span·class="w">
190 ·············</span><span·class="p"·data-group-id="5502613436-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:·78bad5db9019958c079a544634161a11afd28693c7e162172861d1eb40aabdfd·...·]-2">}</span><span·class="w">190 ·············</span><span·class="p"·data-group-id="3584349152-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:·96e6031f70cbfe7c61dc0ce2118fa315072373acc976f012da1722da279298b3·...·]-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="5311717436-1">(</span><span·class="p"·data-group-id="5311717436-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="5311717436-2">(</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·4dc78130c4b07488ee34bfc57b424e68c45581244eb393ee6abae17708b0c9a8·...·]-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="8330799284-1">(</span><span·class="p"·data-group-id="8330799284-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="8330799284-2">(</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·7ebc5fb2bbdc986bb9b1ea43f413282699fa268f01f5c9256b8686697d638909·...·]-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.6/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="6771271008-1">(</span><span·class="ss">something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6771271008-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p">,</span><span·class="ss">warn_missing_spe[·...·truncated·by·diffoscope;·len:·101,·SHA:·bc2df71e73553c2a2db69dc78e604a64bac941a37a8c81c5a4a9785f1faf72d7·...·]8-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="3154040598-1">(</span><span·class="ss">something</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3154040598-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p">,</span><span·class="ss">warn_missing_spe[·...·truncated·by·diffoscope;·len:·101,·SHA:·b2967fec33fa99e0e8f7f5356de5b53db9312db034e4b9efab3d578a13d0fece·...·]8-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="7240638627-1">(</span><span·class="p"·data-group-id="7240638627-2">{</span><span·class="ss">inline</span><span·class="p">,</span><span·class="p"·data-group-id="7240638627-3">[</span><span·class="ss">pi</span><span·class="p">/</span><span·class="mi">0</span[·...·truncated·by·diffoscope;·len:·148,·SHA:·12ca7adf9b319d26eec6b0bb9ea11513cfcaf56690f49513fe4414ad1d2772ec·...·]-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="2423074183-1">(</span><span·class="p"·data-group-id="2423074183-2">{</span><span·class="ss">inline</span><span·class="p">,</span><span·class="p"·data-group-id="2423074183-3">[</span><span·class="ss">pi</span><span·class="p">/</span><span·class="mi">0</span[·...·truncated·by·diffoscope;·len:·148,·SHA:·cf31ab29672935ba118ab66c42b75c71a1160d70ee397db560da9d3c81654e46·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
181 </span><span·class="nf">pi</span><span·class="p"·data-group-id="7240638627-4">(</span><span·class="p"·data-group-id="7240638627-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="2423074183-4">(</span><span·class="p"·data-group-id="2423074183-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="7230969766-1">(</span><span·class="ss">inline</span><span·class="p"·data-group-id="7230969766-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="4795643479-1">(</span><span·class="ss">inline</span><span·class="p"·data-group-id="4795643479-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="7230969766-2">(</span><span·class="p"·data-group-id="7230969766-3">{</span><span·class="ss">inline_size</span><span·class="p">,</span><span·class="mi">100</span><span·class="p"·data-group-id="7230969766-3">}</span><span·class="p"·data-group-id="7230969766-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="4795643479-2">(</span><span·class="p"·data-group-id="4795643479-3">{</span><span·class="ss">inline_size</span><span·class="p">,</span><span·class="mi">100</span><span·class="p"·data-group-id="4795643479-3">}</span><span·class="p"·data-group-id="4795643479-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="8271839713-1">(</span><span·class="ss">module</span><span·class="p"·data-group-id="8271839713-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="0208170274-1">(</span><span·class="ss">module</span><span·class="p"·data-group-id="0208170274-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="8271839713-2">(</span><span·class="s">&quot;eunit/include/eunit.hrl&quot;</span><span·class="p"·data-group-id="8271839713-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="0208170274-2">(</span><span·class="s">&quot;eunit/include/eunit.hrl&quot;</span><span·class="p"·data-group-id="0208170274-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="8271839713-3">(</span><span·class="s">&quot;header.hrl&quot;</span><span·class="p"·data-group-id="8271839713-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="0208170274-3">(</span><span·class="s">&quot;header.hrl&quot;</span><span·class="p"·data-group-id="0208170274-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="9494520424-1">(</span><span·class="p"·data-group-id="9494520424-2">{</span><span·class="ss">no_auto_import</span><span·class="p">,</span><span·class="p"·data-group-id="9494520424-3">[</span><span·class="ss">error</span><span·class="p">/</span><span·class="[·...·truncated·by·diffoscope;·len:·159,·SHA:·e12c38e00ae359e951ab6a76930c14880b4eaab4b9bed3f290daeee9c0f15061·...·]-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="5667410343-1">(</span><span·class="p"·data-group-id="5667410343-2">{</span><span·class="ss">no_auto_import</span><span·class="p">,</span><span·class="p"·data-group-id="5667410343-3">[</span><span·class="ss">error</span><span·class="p">/</span><span·class="[·...·truncated·by·diffoscope;·len:·159,·SHA:·c6a6e5b14c8939c126cf21416d21f0679b8c9982da5f52efe2307f25bed40e5e·...·]-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
177 KB
./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/compiler.epub
2.67 KB
zipinfo {}
    
Offset 1, 18 lines modifiedOffset 1, 18 lines modified
1 Zip·file·size:·181878·bytes,·number·of·entries:·161 Zip·file·size:·181873·bytes,·number·of·entries:·16
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:53·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:45·mimetype
3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Mar-18·07:53·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Mar-18·08:45·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····12178·bx·defN·25-Mar-18·07:53·OEBPS/ssa_checks.xhtml4 ?rw-r--r--··6.1·unx····12178·bx·defN·25-Mar-18·08:45·OEBPS/ssa_checks.xhtml
5 ?rw-r--r--··6.1·unx···251255·bx·defN·25-Mar-18·07:53·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx···251255·bx·defN·25-Mar-18·08:45·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx·····1419·bx·defN·25-Mar-18·07:53·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1419·bx·defN·25-Mar-18·08:45·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-erlang-ESPT6BQV.css7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:45·OEBPS/dist/epub-erlang-ESPT6BQV.css
8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-LSJCIYTM.js8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:45·OEBPS/dist/epub-LSJCIYTM.js
9 ?rw-r--r--··6.1·unx·····2062·bx·defN·25-Mar-18·07:53·OEBPS/content.opf9 ?rw-r--r--··6.1·unx·····2062·bx·defN·25-Mar-18·08:45·OEBPS/content.opf
10 ?rw-r--r--··6.1·unx····78221·bx·defN·25-Mar-18·07:53·OEBPS/compile.xhtml10 ?rw-r--r--··6.1·unx····78221·bx·defN·25-Mar-18·08:45·OEBPS/compile.xhtml
11 ?rw-r--r--··6.1·unx····23043·bx·defN·25-Mar-18·07:53·OEBPS/cerl_trees.xhtml11 ?rw-r--r--··6.1·unx····23043·bx·defN·25-Mar-18·08:45·OEBPS/cerl_trees.xhtml
12 ?rw-r--r--··6.1·unx····22788·bx·defN·25-Mar-18·07:53·OEBPS/cerl_clauses.xhtml12 ?rw-r--r--··6.1·unx····22788·bx·defN·25-Mar-18·08:45·OEBPS/cerl_clauses.xhtml
13 ?rw-r--r--··6.1·unx···444580·bx·defN·25-Mar-18·07:53·OEBPS/cerl.xhtml13 ?rw-r--r--··6.1·unx···444580·bx·defN·25-Mar-18·08:45·OEBPS/cerl.xhtml
14 ?rw-r--r--··6.1·unx····18164·bx·defN·25-Mar-18·07:53·OEBPS/beam_ssa.xhtml14 ?rw-r--r--··6.1·unx····18164·bx·defN·25-Mar-18·08:45·OEBPS/beam_ssa.xhtml
15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:53·OEBPS/assets/logo.png15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:45·OEBPS/assets/logo.png
16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:53·META-INF/container.xml16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:45·META-INF/container.xml
17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:53·META-INF/com.apple.ibooks.display-options.xml17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:45·META-INF/com.apple.ibooks.display-options.xml
18 16·files,·875758·bytes·uncompressed,·179114·bytes·compressed:··79.5%18 16·files,·875758·bytes·uncompressed,·179109·bytes·compressed:··79.5%
90.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,·Mar·18·2025·07:53:26,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Mar·18·2025·08:45:48,·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.18 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
    
Offset 79, 16 lines modifiedOffset 79, 16 lines modified
  
79 </span><span·class="nc">landing_pad_block</span><span·class="p">:</span><span·class="w">79 </span><span·class="nc">landing_pad_block</span><span·class="p">:</span><span·class="w">
80 ···</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">80 ···</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">
81 ···</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">81 ···</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">
82 ···</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">82 ···</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">
  
83 </span><span·class="nc">common_end_of_catch</span><span·class="p">:</span><span·class="w">83 </span><span·class="nc">common_end_of_catch</span><span·class="p">:</span><span·class="w">
84 ··</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="8599690755-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:·fcdd9c8f82653adc161752cbd9cee94d916ae2a8d7dee09f02ae42abf797cf8d·...·]-1">}</span><span·class="p">,</span><span·class="w">84 ··</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="1600354308-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:·c86f2ce96732d34cd82c6bc8802414107abb41985282ed9b54593865692baebd·...·]-1">}</span><span·class="p">,</span><span·class="w">
85 ·············</span><span·class="p"·data-group-id="8599690755-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:·7ac981e290e9ae8d96e9863476da56c89af985817cc423dc1bd5f8b94517b82b·...·]-2">}</span><span·class="w">85 ·············</span><span·class="p"·data-group-id="1600354308-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:·67c1a8609e94156345ef983518858868d61e6fccf5f1740b22a8a5171147cefa·...·]-2">}</span><span·class="w">
86 ··</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·an86 ··</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
87 exception·in·one·of·the·protected·blocks·must·have·explicit·control87 exception·in·one·of·the·protected·blocks·must·have·explicit·control
88 flow·edges·to·the·landing·pad·block.</p><h2·id="exception-re-issuing"·class="section-heading">88 flow·edges·to·the·landing·pad·block.</p><h2·id="exception-re-issuing"·class="section-heading">
89 ··<a·href="#exception-re-issuing"·class="hover-link">89 ··<a·href="#exception-re-issuing"·class="hover-link">
90 ····<i·class="ri-link-m"·aria-hidden="true"></i>90 ····<i·class="ri-link-m"·aria-hidden="true"></i>
91 ··</a>91 ··</a>
92 ··<span·class="text">Exception·Re-issuing</span>92 ··<span·class="text">Exception·Re-issuing</span>
Offset 125, 15 lines modifiedOffset 125, 15 lines modified
125 proven·to·always·succeed·or·fail.</p></li></ul><h2·id="variable-naming"·class="section-heading">125 proven·to·always·succeed·or·fail.</p></li></ul><h2·id="variable-naming"·class="section-heading">
126 ··<a·href="#variable-naming"·class="hover-link">126 ··<a·href="#variable-naming"·class="hover-link">
127 ····<i·class="ri-link-m"·aria-hidden="true"></i>127 ····<i·class="ri-link-m"·aria-hidden="true"></i>
128 ··</a>128 ··</a>
129 ··<span·class="text">Variable·Naming</span>129 ··<span·class="text">Variable·Naming</span>
130 </h2>130 </h2>
131 <p>A·variable·name·in·BEAM·SSA·is·either·an·atom·or·a·non-negative131 <p>A·variable·name·in·BEAM·SSA·is·either·an·atom·or·a·non-negative
132 integer:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">atom</span><span·class="p"·data-group-id="6285044123-1">(</span><span·class="p"·data-group-id="6285044123-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="6285044123-2">(</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·3656f6094771559222bf49bf65ca992d18f0083f7bfbcc337bd916feaabc0757·...·]-2">)</span></code></pre><p>In·order·to·generate·fresh·unused·variable·names,·all·compiler132 integer:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">atom</span><span·class="p"·data-group-id="8566884072-1">(</span><span·class="p"·data-group-id="8566884072-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="8566884072-2">(</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·1d1237aafd818c4f1e5bce9aa14ad531e289f95d2e85266589062c1aa0a959e9·...·]-2">)</span></code></pre><p>In·order·to·generate·fresh·unused·variable·names,·all·compiler
133 transforms·maintain·a·counter,·the·<code·class="inline">cnt</code>-field·in·the·<code·class="inline">b_function</code>·and133 transforms·maintain·a·counter,·the·<code·class="inline">cnt</code>-field·in·the·<code·class="inline">b_function</code>·and
134 <code·class="inline">opt_st</code>·records,·which·is·incremented·each·time·a·new·variable·or134 <code·class="inline">opt_st</code>·records,·which·is·incremented·each·time·a·new·variable·or
135 label·is·created.·In·the·following·description·the·value·of·the135 label·is·created.·In·the·following·description·the·value·of·the
136 <code·class="inline">cnt</code>-field·is·called·<code·class="inline">Cnt</code>.·The·<code·class="inline">Cnt</code>·value·is·guaranteed·to·never136 <code·class="inline">cnt</code>-field·is·called·<code·class="inline">Cnt</code>.·The·<code·class="inline">Cnt</code>·value·is·guaranteed·to·never
137 clash·with·a·previously·defined·variable·name.·Therefore,·value·of137 clash·with·a·previously·defined·variable·name.·Therefore,·value·of
138 <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,·because138 <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
139 the·<code·class="inline">Cnt</code>·value·could·clash·with·other·variables.</p>139 the·<code·class="inline">Cnt</code>·value·could·clash·with·other·variables.</p>
45.9 KB
./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/notes.html
    
Offset 157, 18 lines modifiedOffset 157, 18 lines modified
157 </h2>157 </h2>
158 <h3·id="fixed-bugs-and-malfunctions-1"·class="section-heading">158 <h3·id="fixed-bugs-and-malfunctions-1"·class="section-heading">
159 ··<a·href="#fixed-bugs-and-malfunctions-1"·class="hover-link">159 ··<a·href="#fixed-bugs-and-malfunctions-1"·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">Fixed·Bugs·and·Malfunctions</span>162 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
163 </h3>163 </h3>
164 <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="0753793501-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="0753793501-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">164 <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="4920987096-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="4920987096-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p"·data-group-id="0753793501-2">&lt;&lt;</span><span·class="s">&quot;ÿÿÿÿÿÿÿÿ&quot;</span><span·class="p"·data-group-id="0753793501-2">&gt;&gt;</span><span·class="gp·unselectable">165 </span><span·class="p"·data-group-id="4920987096-2">&lt;&lt;</span><span·class="s">&quot;ÿÿÿÿÿÿÿÿ&quot;</span><span·class="p"·data-group-id="4920987096-2">&gt;&gt;</span><span·class="gp·unselectable">
166 2&gt;·</span><span·class="p"·data-group-id="0753793501-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="0753793501-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:·da84279eb2309cc8fb2750b7eea0f49b31da273df419dbc672ee20419a9a250a·...·]-3">]</span><span·class="p">.</span><span·class="w">166 2&gt;·</span><span·class="p"·data-group-id="4920987096-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="4920987096-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:·260539923727f39a50f50f5546f3f1e47cc15bc7646e77a85712822190232dbb·...·]-3">]</span><span·class="p">.</span><span·class="w">
167 </span><span·class="p"·data-group-id="0753793501-6">[</span><span·class="mf">0.0</span><span·class="p">,</span><span·class="mf">42.0</span><span·class="p"·data-group-id="0753793501-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">167 </span><span·class="p"·data-group-id="4920987096-6">[</span><span·class="mf">0.0</span><span·class="p">,</span><span·class="mf">42.0</span><span·class="p"·data-group-id="4920987096-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">
168 ··<a·href="#compiler-8-5-3"·class="hover-link">168 ··<a·href="#compiler-8-5-3"·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">Compiler·8.5.3</span>171 ··<span·class="text">Compiler·8.5.3</span>
172 </h2>172 </h2>
173 <h3·id="fixed-bugs-and-malfunctions-2"·class="section-heading">173 <h3·id="fixed-bugs-and-malfunctions-2"·class="section-heading">
174 ··<a·href="#fixed-bugs-and-malfunctions-2"·class="hover-link">174 ··<a·href="#fixed-bugs-and-malfunctions-2"·class="hover-link">
Offset 208, 61 lines modifiedOffset 208, 61 lines modified
208 </h2>208 </h2>
209 <h3·id="fixed-bugs-and-malfunctions-5"·class="section-heading">209 <h3·id="fixed-bugs-and-malfunctions-5"·class="section-heading">
210 ··<a·href="#fixed-bugs-and-malfunctions-5"·class="hover-link">210 ··<a·href="#fixed-bugs-and-malfunctions-5"·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">Fixed·Bugs·and·Malfunctions</span>213 ··<span·class="text">Fixed·Bugs·and·Malfunctions</span>
214 </h3>214 </h3>
215 <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="6297686195-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="6297686195-1">)</span><span·class="p">.</span><span·class="w">215 <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="4690896707-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="4690896707-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="6297686195-2">(</span><span·class="p"·data-group-id="6297686195-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6297686195-3">]</span><span·class="p"·data-group-id="6297686195-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="4690896707-2">(</span><span·class="p"·data-group-id="4690896707-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4690896707-3">]</span><span·class="p"·data-group-id="4690896707-2">)</span><span·class="p">.</span><span·class="w">
  
217 </span><span·class="nf">f</span><span·class="p"·data-group-id="6297686195-4">(</span><span·class="p"·data-group-id="6297686195-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">217 </span><span·class="nf">f</span><span·class="p"·data-group-id="4690896707-4">(</span><span·class="p"·data-group-id="4690896707-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
218 ····</span><span·class="p"·data-group-id="6297686195-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:·be7f5adb7a0481730352531a50a3be177912270664c1b48fadd55abcad79e309·...·]-1">)</span><span·class="p">.</span><span·class="w">218 ····</span><span·class="p"·data-group-id="4690896707-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:·2dfe3eebaa41471d5c74a3d59c63fdadeb55642c7ec3c8848bd497379e26d2ba·...·]-1">)</span><span·class="p">.</span><span·class="w">
219 </span><span·class="gt">**·exception·error:·bad·generator·ok219 </span><span·class="gt">**·exception·error:·bad·generator·ok
220 ·····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="3624883432-1">(</span><span·class="p"·data-group-id="3624883432-1">)</span><span·class="p">.</span><span·class="w">220 ·····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="0278582654-1">(</span><span·class="p"·data-group-id="0278582654-1">)</span><span·class="p">.</span><span·class="w">
221 </span><span·class="p"·data-group-id="3624883432-2">&lt;&lt;</span><span·class="p"·data-group-id="3624883432-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-1"·class="section-heading">221 </span><span·class="p"·data-group-id="0278582654-2">&lt;&lt;</span><span·class="p"·data-group-id="0278582654-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-1"·class="section-heading">
222 ··<a·href="#improvements-and-new-features-1"·class="hover-link">222 ··<a·href="#improvements-and-new-features-1"·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">Improvements·and·New·Features</span>225 ··<span·class="text">Improvements·and·New·Features</span>
226 </h3>226 </h3>
227 <ul><li><p>The·compiler·now·emits·nicer·error·message·for·function·head·mismatches.227 <ul><li><p>The·compiler·now·emits·nicer·error·message·for·function·head·mismatches.
228 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="7396764732-1">(</span><span·class="p"·data-group-id="7396764732-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">228 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="8694440693-1">(</span><span·class="p"·data-group-id="8694440693-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">
229 </span><span·class="nf">a</span><span·class="p"·data-group-id="7396764732-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="7396764732-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·mismatch229 </span><span·class="nf">a</span><span·class="p"·data-group-id="8694440693-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="8694440693-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
230 %····6|·a(_)·-&gt;·error.230 %····6|·a(_)·-&gt;·error.
231 %·····|·^</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?231 %·····|·^</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?
232 %····6|·a(_)·-&gt;·error.232 %····6|·a(_)·-&gt;·error.
233 %·····|·^</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="7035978407-1">(</span><span·class="p"·data-group-id="7035978407-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">233 %·····|·^</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="6875746293-1">(</span><span·class="p"·data-group-id="6875746293-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
234 ····</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="7035978407-2">(</span><span·class="p"·data-group-id="7035978407-2">)</span><span·class="p">,</span><span·class="w">234 ····</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="6875746293-2">(</span><span·class="p"·data-group-id="6875746293-2">)</span><span·class="p">,</span><span·class="w">
235 ····</span><span·class="p"·data-group-id="7035978407-3">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-group-id="7035978407-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">235 ····</span><span·class="p"·data-group-id="6875746293-3">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-group-id="6875746293-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
  
236 </span><span·class="nf">char</span><span·class="p"·data-group-id="7035978407-4">(</span><span·class="p"·data-group-id="7035978407-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:·365d3db78e357eb090c80e2cc46090e8dab24965a25f21e7803aee0d1a47692a·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">236 </span><span·class="nf">char</span><span·class="p"·data-group-id="6875746293-4">(</span><span·class="p"·data-group-id="6875746293-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:·67292874c444dcce00950aaadc7afefa54c3094609d8d17bdc397d136da80a57·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
237 ····</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="7490808876-2">(</span><span·class="p"·data-group-id="7490808876-2">)</span><span·class="p">,</span><span·class="w">237 ····</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="3561412813-2">(</span><span·class="p"·data-group-id="3561412813-2">)</span><span·class="p">,</span><span·class="w">
238 ····</span><span·class="p"·data-group-id="7490808876-3">&lt;&lt;</span><span·class="sc">$*</span><span·class="p"·data-group-id="7490808876-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">238 ····</span><span·class="p"·data-group-id="3561412813-3">&lt;&lt;</span><span·class="sc">$*</span><span·class="p"·data-group-id="3561412813-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
  
239 </span><span·class="nf">char</span><span·class="p"·data-group-id="7490808876-4">(</span><span·class="p"·data-group-id="7490808876-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:·95f9a1ca946279806157600d443fb4f1245099b05a5668302e957b52fd5d4cb4·...·]-1">)</span><span·class="p">.</span><span·class="w">239 </span><span·class="nf">char</span><span·class="p"·data-group-id="3561412813-4">(</span><span·class="p"·data-group-id="3561412813-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:·a43e4cda7874267ccb41140d3a1509c69b43d7bfba644adfd2ee079557d13463·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
240 </span><span·class="nf">update</span><span·class="p"·data-group-id="4695067141-3">(</span><span·class="n">Value</span><span·class="p"·data-group-id="4695067141-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">240 </span><span·class="nf">update</span><span·class="p"·data-group-id="4739808306-3">(</span><span·class="n">Value</span><span·class="p"·data-group-id="4739808306-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
241 ····</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="4695067141-4">{</span><span·class="p"·data-group-id="4695067141-4">}</span><span·class="p">,</span><span·class="w">241 ····</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="4739808306-4">{</span><span·class="p"·data-group-id="4739808306-4">}</span><span·class="p">,</span><span·class="w">
242 ····</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="4695067141-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="n">Value</span><span·class="p"·data-group-id="4695067141-5">}</span><span·class="p">,</span><span·class="w">242 ····</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="4739808306-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="n">Value</span><span·class="p"·data-group-id="4739808306-5">}</span><span·class="p">,</span><span·class="w">
243 ····</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="4695067141-6">{</span><span·class="ss">b</span><span·class="o">=</span><span·class="mi">2</span><span·class="p"·data-group-id="4695067141-6">}</span><span·class="p">,</span><span·class="w">243 ····</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="4739808306-6">{</span><span·class="ss">b</span><span·class="o">=</span><span·class="mi">2</span><span·class="p"·data-group-id="4739808306-6">}</span><span·class="p">,</span><span·class="w">
244 ····</span><span·class="n">R2</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="4695067141-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="mi">3</span><span·class="p"·data-group-id="4695067141-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.3/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/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.3/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.3/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.244 ····</span><span·class="n">R2</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="4739808306-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="mi">3</span><span·class="p"·data-group-id="4739808306-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.3/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/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.3/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.3/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.
245 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·when245 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
246 <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·when246 <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
247 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="8409355030-1">(</span><span·class="p"·data-group-id="8409355030-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p"·data-group-id="8409355030-2">]</span><span·class="p"·data-group-id="8409355030-1">)</span><span·class="p">.</span></code><[·...·truncated·by·diffoscope;·len:·1215,·SHA:·252650abb4966933bfc8d32ee1a76c823495ba571c6f852742cf58ab28c471bb·...·]-1">)</span><span·class="p">.</span><span·class="w">247 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="1494503042-1">(</span><span·class="p"·data-group-id="1494503042-2">[</span><span·class="ss">nowarn_missing_spec</span><span·class="p"·data-group-id="1494503042-2">]</span><span·class="p"·data-group-id="1494503042-1">)</span><span·class="p">.</span></code><[·...·truncated·by·diffoscope;·len:·1215,·SHA:·d88d23f2bc20dd02a1a527256e63509bdacfb19156f63412838f79738fb5d6eb·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
248 </span><span·class="nf">update</span><span·class="p"·data-group-id="9152685124-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9152685124-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:·0becbb032f1b92d6bddbf8c8e6cb190e777f06799f40b2865f245fa8dde42a95·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">248 </span><span·class="nf">update</span><span·class="p"·data-group-id="3703346298-3">(</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="3703346298-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:·dd39f84feb6994fec48ecc677fb2440be700b8387da41cf563523139d15ac747·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
249 ····</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="9152685124-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="9152685124-5">}</span><span·class="p">,</span><span·class="w">249 ····</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="3703346298-5">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="ss">up_to_date</span><span·class="p"·data-group-id="3703346298-5">}</span><span·class="p">,</span><span·class="w">
250 ····</span><span·class="k">if</span><span·class="w">250 ····</span><span·class="k">if</span><span·class="w">
251 ········</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">251 ········</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">
252 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9152685124-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="9152685124-6">}</span><span·class="p">;</span><span·class="w">252 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="3703346298-6">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">negative</span><span·class="p"·data-group-id="3703346298-6">}</span><span·class="p">;</span><span·class="w">
253 ········</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">253 ········</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">
254 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9152685124-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="9152685124-7">}</span><span·class="p">;</span><span·class="w">254 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="3703346298-7">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">zero</span><span·class="p"·data-group-id="3703346298-7">}</span><span·class="p">;</span><span·class="w">
255 ········</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">255 ········</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">
256 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9152685124-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="9152685124-8">}</span><span·class="w">256 ············</span><span·class="n">R</span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="3703346298-8">{</span><span·class="ss">c</span><span·class="o">=</span><span·class="ss">positive</span><span·class="p"·data-group-id="3703346298-8">}</span><span·class="w">
257 ····</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.3/doc/html/erlang.html#bit_size/1"><code·class="inline">bit_size/1</code></a>·and·<a·href="../../../../erts-15.2.3/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.1/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.1/doc/html/gen_server.html#c:format_status/2"><code·class="inline">gen_server</code></a>,·<a·href="../../../../lib/stdlib-6.2.1/doc/html/gen_event.html#c:format_status/2"><code·class="inline">gen_event</code></a>·and·<a·href="../../../../lib/stdlib-6.2.1/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">257 ····</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.3/doc/html/erlang.html#bit_size/1"><code·class="inline">bit_size/1</code></a>·and·<a·href="../../../../erts-15.2.3/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.1/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.1/doc/html/gen_server.html#c:format_status/2"><code·class="inline">gen_server</code></a>,·<a·href="../../../../lib/stdlib-6.2.1/doc/html/gen_event.html#c:format_status/2"><code·class="inline">gen_event</code></a>·and·<a·href="../../../../lib/stdlib-6.2.1/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">
258 ··<a·href="#compiler-8-4-3-2"·class="hover-link">258 ··<a·href="#compiler-8-4-3-2"·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">Compiler·8.4.3.2</span>261 ··<span·class="text">Compiler·8.4.3.2</span>
262 </h2>262 </h2>
263 <h3·id="fixed-bugs-and-malfunctions-6"·class="section-heading">263 <h3·id="fixed-bugs-and-malfunctions-6"·class="section-heading">
630 B
./usr/share/doc/erlang-doc/html/lib/compiler-8.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-43A9611A.js"></script>124 <script·src="dist/search_data-62F7C547.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.6/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="0826355919-1">(</span><span·class="p"·data-group-id="0826355919-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="0467167417-1">(</span><span·class="p"·data-group-id="0467167417-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="0826355919-2">#{</span><span·class="p"·data-group-id="0826355919-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="0467167417-2">#{</span><span·class="p"·data-group-id="0467167417-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="6394905793-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="6394905793-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="4630709635-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="4630709635-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="5915392426-1">(</span><span·class="o">&lt;</span><span·class="ss">formals</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5915392426-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="2943907564-1">(</span><span·class="o">&lt;</span><span·class="ss">formals</span><span·class="o">&gt;</span><span·class="p"·data-group-id="2943907564-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="4318277990-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="4318277990-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="2014895720-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="2014895720-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="4177326267-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:·29ed1955fa36403af817bedee76114ae27459088cd881890da8fe1a6f2ce5e12·...·]-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="5366179322-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:·14714801a221f03febd5da5c784cdd45e5cdba776731a1caf1bfe4573f145fab·...·]-1">)</span><span·class="w">
  
163 </span><span·class="nf">switch</span><span·class="p"·data-group-id="4177326267-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:·7b43c4fb0fafeefb0040be7f4f3adf2a59451c856feb4e1010353fa5f97a587b·...·]-2">)</span><span·class="w">163 </span><span·class="nf">switch</span><span·class="p"·data-group-id="5366179322-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:·c4b87ab8e4e04126c721dd7938d304b995f1e5a09bf9dfbf8be53abc2373921c·...·]-2">)</span><span·class="w">
  
164 </span><span·class="nf">ret</span><span·class="p"·data-group-id="4177326267-5">(</span><span·class="o">&lt;</span><span·class="ss">value</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4177326267-5">)</span><span·class="w">164 </span><span·class="nf">ret</span><span·class="p"·data-group-id="5366179322-5">(</span><span·class="o">&lt;</span><span·class="ss">value</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5366179322-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="3332320496-1">(</span><span·class="p"·data-group-id="3332320496-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="3687938027-1">(</span><span·class="p"·data-group-id="3687938027-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="3332320496-2">(</span><span·class="p"·data-group-id="3332320496-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="3687938027-2">(</span><span·class="p"·data-group-id="3687938027-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="3332320496-3">(</span><span·class="p"·data-group-id="3332320496-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="3687938027-3">(</span><span·class="p"·data-group-id="3687938027-3">)</span><span·class="p">,</span><span·class="w">
177 ····</span><span·class="p"·data-group-id="3332320496-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="3332320496-4">}</span><span·class="p">.</span></code></pre><h2·id="semantics"·class="section-heading">177 ····</span><span·class="p"·data-group-id="3687938027-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="3687938027-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
246 KB
./usr/share/doc/erlang-doc/html/lib/crypto-5.5.3/doc/html/crypto.epub
2.98 KB
zipinfo {}
    
Offset 1, 20 lines modifiedOffset 1, 20 lines modified
1 Zip·file·size:·127045·bytes,·number·of·entries:·181 Zip·file·size:·127047·bytes,·number·of·entries:·18
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:56·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:50·mimetype
3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Mar-18·07:56·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Mar-18·08:50·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx···142075·bx·defN·25-Mar-18·07:56·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx···142075·bx·defN·25-Mar-18·08:50·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx····48579·bx·defN·25-Mar-18·07:56·OEBPS/new_api.xhtml5 ?rw-r--r--··6.1·unx····48579·bx·defN·25-Mar-18·08:50·OEBPS/new_api.xhtml
6 ?rw-r--r--··6.1·unx·····1443·bx·defN·25-Mar-18·07:56·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1443·bx·defN·25-Mar-18·08:50·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx·····7065·bx·defN·25-Mar-18·07:56·OEBPS/licenses.xhtml7 ?rw-r--r--··6.1·unx·····7065·bx·defN·25-Mar-18·08:50·OEBPS/licenses.xhtml
8 ?rw-r--r--··6.1·unx·····9663·bx·defN·25-Mar-18·07:56·OEBPS/fips.xhtml8 ?rw-r--r--··6.1·unx·····9663·bx·defN·25-Mar-18·08:50·OEBPS/fips.xhtml
9 ?rw-r--r--··6.1·unx····14857·bx·defN·25-Mar-18·07:56·OEBPS/engine_load.xhtml9 ?rw-r--r--··6.1·unx····14857·bx·defN·25-Mar-18·08:50·OEBPS/engine_load.xhtml
10 ?rw-r--r--··6.1·unx····13755·bx·defN·25-Mar-18·07:56·OEBPS/engine_keys.xhtml10 ?rw-r--r--··6.1·unx····13755·bx·defN·25-Mar-18·08:50·OEBPS/engine_keys.xhtml
11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-erlang-ESPT6BQV.css11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-erlang-ESPT6BQV.css
12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-LSJCIYTM.js12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-LSJCIYTM.js
13 ?rw-r--r--··6.1·unx·····3970·bx·defN·25-Mar-18·07:56·OEBPS/crypto_app.xhtml13 ?rw-r--r--··6.1·unx·····3970·bx·defN·25-Mar-18·08:50·OEBPS/crypto_app.xhtml
14 ?rw-r--r--··6.1·unx···285776·bx·defN·25-Mar-18·07:56·OEBPS/crypto.xhtml14 ?rw-r--r--··6.1·unx···285776·bx·defN·25-Mar-18·08:50·OEBPS/crypto.xhtml
15 ?rw-r--r--··6.1·unx·····2365·bx·defN·25-Mar-18·07:56·OEBPS/content.opf15 ?rw-r--r--··6.1·unx·····2365·bx·defN·25-Mar-18·08:50·OEBPS/content.opf
16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:56·OEBPS/assets/logo.png16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:50·OEBPS/assets/logo.png
17 ?rw-r--r--··6.1·unx····29121·bx·defN·25-Mar-18·07:56·OEBPS/algorithm_details.xhtml17 ?rw-r--r--··6.1·unx····29121·bx·defN·25-Mar-18·08:50·OEBPS/algorithm_details.xhtml
18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:56·META-INF/container.xml18 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:50·META-INF/container.xml
19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:56·META-INF/com.apple.ibooks.display-options.xml19 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:50·META-INF/com.apple.ibooks.display-options.xml
20 18·files,·580717·bytes·uncompressed,·123931·bytes·compressed:··78.7%20 18·files,·580717·bytes·uncompressed,·123933·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,·Mar·18·2025·07:56: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,·Mar·18·2025·08:50:20,·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.3/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="1526738405-1">(</span><span·class="p"·data-group-id="1526738405-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1526738405-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·863,·SHA:·796745e4e3fa60fa6bf5efba87581674c8148766200e1f68391b4de79e5f29e0·...·]-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="5809920801-1">(</span><span·class="p"·data-group-id="5809920801-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5809920801-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·863,·SHA:·3221dcc277cffb6c42410a8220a34ba716b70afe81616f1da2a1d80a478ed2d1·...·]-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.3/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.3/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="1526738405-1">(</span><span·class="p"·data-group-id="1526738405-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1526738405-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·863,·SHA:·796745e4e3fa60fa6bf5efba87581674c8148766200e1f68391b4de79e5f29e0·...·]-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="5809920801-1">(</span><span·class="p"·data-group-id="5809920801-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5809920801-2">[</span><span·class="n">E</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·863,·SHA:·3221dcc277cffb6c42410a8220a34ba716b70afe81616f1da2a1d80a478ed2d1·...·]-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.1/doc/html/rand.html">random·number·generation</a>,·in·order·to5317 <p>Create·a·state·object·for·<a·href="../../../../lib/stdlib-6.2.1/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.1/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.1/doc/html/rand.html"><code·class="inline">rand</code></a>·functions·using·it5320 well.·See·also·<a·href="../../../../lib/stdlib-6.2.1/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.1/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="4466509989-1">(</span><span·class="p"·data-group-id="4466509989-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="0814048345-1">(</span><span·class="p"·data-group-id="0814048345-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="4466509989-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="4466509989-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="0814048345-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="0814048345-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="4466509989-3">(</span><span·class="p"·data-group-id="4466509989-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="0814048345-3">(</span><span·class="p"·data-group-id="0814048345-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.1/doc/html/rand.html">random·number·generation</a>,·in·order·to5381 <p>Create·a·state·object·for·<a·href="../../../../lib/stdlib-6.2.1/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.1/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.1/doc/html/rand.html"><code·class="inline">rand</code></a>·functions·using·it5383 <a·href="../../../../lib/stdlib-6.2.1/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.1/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="2221991847-1">(</span><span·class="ss">crypto_cache</span><span·class="p"·data-group-id="2221991847-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="8724023855-1">(</span><span·class="ss">crypto_cache</span><span·class="p"·data-group-id="8724023855-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="2221991847-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="2221991847-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="8724023855-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="8724023855-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="2221991847-3">(</span><span·class="p"·data-group-id="2221991847-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="8724023855-3">(</span><span·class="p"·data-group-id="8724023855-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.3/doc/html/erlang.html#t:atom/0">atom</a>(),·Seed·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>())·->·{<a·href="../../../../lib/stdlib-6.2.1/doc/html/rand.html#t:alg_handler/0">rand:alg_handler</a>(),·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:atom/0">atom</a>(),·Seed·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>())·->·{<a·href="../../../../lib/stdlib-6.2.1/doc/html/rand.html#t:alg_handler/0">rand:alg_handler</a>(),·<a·href="../../../../erts-15.2.3/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.1/doc/html/rand.html">random·number·generation</a>,·in·order·to5414 <p>Creates·a·state·object·for·<a·href="../../../../lib/stdlib-6.2.1/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="6120241164-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="6120241164-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="5772002889-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="5772002889-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="6120241164-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="6120241164-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="5772002889-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="5772002889-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="6120241164-3">(</span><span·class="p"·data-group-id="6120241164-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="5772002889-3">(</span><span·class="p"·data-group-id="5772002889-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="6120241164-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="6120241164-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="5772002889-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="5772002889-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="6120241164-5">(</span><span·class="mi">42</span><span·class="p"·data-group-id="6120241164-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="5772002889-5">(</span><span·class="mi">42</span><span·class="p"·data-group-id="5772002889-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="6120241164-6">(</span><span·class="p"·data-group-id="6120241164-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="5772002889-6">(</span><span·class="p"·data-group-id="5772002889-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.3/doc/html/erlang.html#t:string/0">string</a>()·|·undefined,5886 ················cryptolib_version_compiled·=>·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>()·|·undefined,
5887 ················cryptolib_version_linked·:=·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>(),5887 ················cryptolib_version_linked·:=·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:string/0">string</a>()}.</pre>5889 ················otp_crypto_version·:=·<a·href="../../../../erts-15.2.3/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="9808276408-1">(</span><span·class="p"·data-group-id="9808276408-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="2184400495-1">(</span><span·class="p"·data-group-id="2184400495-1">)</span><span·class="p">.</span><span·class="w">
5892 </span><span·class="p"·data-group-id="9808276408-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="2184400495-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="9808276408-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="2184400495-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.3/doc/html/erlang.html#t:binary/0">binary</a>(),·VerNum·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:integer/0">integer</a>(),·VerStr·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:binary/0">binary</a>().</pre>5955 ··················when·Name·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:binary/0">binary</a>(),·VerNum·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:integer/0">integer</a>(),·VerStr·::·<a·href="../../../../erts-15.2.3/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="2495020801-1">(</span><span·class="p"·data-group-id="2495020801-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="8987758321-1">(</span><span·class="p"·data-group-id="8987758321-1">)</span><span·class="p">.</span><span·class="w">
5960 </span><span·class="p"·data-group-id="2495020801-2">[</span><span·class="p"·data-group-id="2495020801-3">{</span><span·class="p"·data-group-id="2495020801-4">&lt;&lt;</span><span·class="s">&quot;OpenSSL&quot;</span><span·class="p"·data-group-id="2495020801-4">&gt;&gt;</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·366,·SHA:·d1570f18b40d343e42beb802378f018ff8016351538a7326b2e9d5e06474446c·...·]1-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="8987758321-2">[</span><span·class="p"·data-group-id="8987758321-3">{</span><span·class="p"·data-group-id="8987758321-4">&lt;&lt;</span><span·class="s">&quot;OpenSSL&quot;</span><span·class="p"·data-group-id="8987758321-4">&gt;&gt;</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·366,·SHA:·8e6f91769ccb80b7b3781f772abd1dcd2a8ed13eb76eb3dd9c131021b1e8f8b4·...·]1-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.3/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="6712785964-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="6712785964-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·7979937a51cfcacb642b43aa5f55cfec324cabb3110117d36d5006f58c80fb5f·...·]-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="8908255613-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="8908255613-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·276,·SHA:·2e5dea04131a59f127e1f0fc93af0674034fe60d495cd83fa41b23fafa3d39b1·...·]-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="6712785964-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:·902f7159de522cec9cca5a7f0582f48ecba9c73850f4bc5a62b226a8457933d9·...·]-3">}</span><span·class="gp·unselectable">166 </span><span·class="p"·data-group-id="8908255613-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:·530fb916313f8aa543ccf2cd93cbeb28b5e8036b5c5b813e292ee5a93e174b43·...·]-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="6712785964-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="8908255613-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="6712785964-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="8908255613-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="6712785964-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="6712785964-6">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·201,·SHA:·7f07f79c9a0bc0b1efe31c0f2820c1b7e704d035e8067715885c376008a70b3a·...·]-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="8908255613-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="8908255613-6">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·201,·SHA:·4fc5d23bf7d83804a29e0e04ebe196877c91393724cc4cfc537eb195a5c696ac·...·]-5">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="6712785964-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="8908255613-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="6712785964-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="8908255613-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="7344018150-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="9202241411-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="7344018150-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="9202241411-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="7344018150-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="7344018150-3">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·283,·SHA:·0b7992be5c620e52ad8b19bf92874f6397b03561de605c755f5137a21f91ed5d·...·]-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="9202241411-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="9202241411-3">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·283,·SHA:·42ed65f96520b1174937d5dbf97bab1427118300d41053c658c7d895393d1631·...·]-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="9808137073-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="6060681748-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="9808137073-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="6060681748-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="9808137073-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="9808137073-3">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·204,·SHA:·f0bedaf9637bb7db35f54c684693efce8c8ccdca12131dc3f571623d837a3055·...·]-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="6060681748-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="6060681748-3">&lt;&lt;</span><span·class="s">&quot;Th[·...·truncated·by·diffoscope;·len:·204,·SHA:·8819af8d338447502acdcd5fdede56f5e3c8ada28062a6ba86d8230fda261fd1·...·]-2">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p"·data-group-id="9808137073-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="6060681748-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="9808137073-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="6060681748-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.3/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="7260929343-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="7260929343-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="7260929343-2">(</span><span·class="p"·data-group-id="7260929343-3">&lt;&lt;</span><span·class="s">&quot;otp_test_engine&quot;</span><span·class="p"·data-group-id="7260929343-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7260929343-4">[</span><span·class="p"·data-group-id="7260929343-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7260929343-5">[</span><span·class="p"·data-group-id="7260929343-5">]</span><span·class="p"·data-group-id="7260929343-2">)</span><span·class="p">.</span><span·class="w"> 
156 ·</span><span·class="p"·data-group-id="7260929343-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="7260929343-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="4529582222-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:·9ef41841956d890ade34bffa897affa3686409e619915d36cd23762d995fce5e·...·]">
 156 ·</span><span·class="p"·data-group-id="4529582222-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="4529582222-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="7030285671-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="7030285671-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·279,·SHA:·7ac5f80bef439d7255735409ce9ec0a77d7b978b26ed1e61b0ce0a3c1bfbc7fa·...·]-3">&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="5638868677-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="5638868677-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·279,·SHA:·c99bee41bcf9fdbb6be0db8d08d0ea59cee19b95ecdde43be9edbd86c7fd8053·...·]-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">
164 ······································</span><span·class="p"·data-group-id="7030285671-4">[</span><span·class="p"·data-group-id="7030285671-5">{</span><span·class="p"·data-group-id="7030285671-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><span·class="p"·data-group-id="7030285671-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">164 ······································</span><span·class="p"·data-group-id="5638868677-4">[</span><span·class="p"·data-group-id="5638868677-5">{</span><span·class="p"·data-group-id="5638868677-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><span·class="p"·data-group-id="5638868677-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">
165 ········································</span><span·class="p"·data-group-id="7030285671-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="7030285671-7">&gt;&gt;</span><span·class="p"·data-group-id="7030285671-5">}</span><span·class="p">,</span><span·class="w">165 ········································</span><span·class="p"·data-group-id="5638868677-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="5638868677-7">&gt;&gt;</span><span·class="p"·data-group-id="5638868677-5">}</span><span·class="p">,</span><span·class="w">
166 ·······································</span><span·class="p"·data-group-id="7030285671-8">{</span><span·class="p"·data-group-id="7030285671-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="7030285671-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·172,·SHA:·d0d8eaf957dad162bfffeab1256db1a140a86450d4c9543fd327b3180407d17c·...·]-8">}</span><span·class="p">,</span><span·class="w">166 ·······································</span><span·class="p"·data-group-id="5638868677-8">{</span><span·class="p"·data-group-id="5638868677-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="5638868677-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·172,·SHA:·d3585d5133aca0eacae314bdc101107ac5b6def921b0497338398250057916fa·...·]-8">}</span><span·class="p">,</span><span·class="w">
167 ·······································</span><span·class="p"·data-group-id="7030285671-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="7030285671-11">&gt;&gt;</span><span·class="p"·data-group-id="7030285671-4">]</span><span·class="p">,</span><span·class="w">167 ·······································</span><span·class="p"·data-group-id="5638868677-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="5638868677-11">&gt;&gt;</span><span·class="p"·data-group-id="5638868677-4">]</span><span·class="p">,</span><span·class="w">
168 ······································</span><span·class="p"·data-group-id="7030285671-12">[</span><span·class="p"·data-group-id="7030285671-12">]</span><span·class="p"·data-group-id="7030285671-2">)</span><span·class="p">.</span><span·class="w">168 ······································</span><span·class="p"·data-group-id="5638868677-12">[</span><span·class="p"·data-group-id="5638868677-12">]</span><span·class="p"·data-group-id="5638868677-2">)</span><span·class="p">.</span><span·class="w">
169 ·</span><span·class="p"·data-group-id="7030285671-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="7030285671-13">}</span></code></pre><h3·id="load-an-engine-and-replace-some-methods"·class="section-heading">169 ·</span><span·class="p"·data-group-id="5638868677-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="5638868677-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="9830411992-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="9830411992-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="9830411992-2">(</span><span·class="p"·data-group-id="9830411992-3">&lt;&lt;</span><span·class="s">&quot;dynamic&quot;</span><span·class="p"·data-group-id="9830411992-3">&gt;&gt;</span><span·class="p">,</span><span·class="w"> 
177 ······································</span><span·class="p"·data-group-id="9830411992-4">[</span><span·class="p"·data-group-id="9830411992-5">{</span><span·class="p"·data-group-id="9830411992-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><sp[·...·truncated·by·diffoscope;·len:·40,·SHA:·f6865533065b4e5f0760ea9b39e74acb9a9daf490fd532c0ab4c5fabb7608db6·...·]">&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="6581786091-1">{</span><span·class="ss">ok</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·472,·SHA:·e727a501ed0a01114b29883c6cbf2e95ebab8f6d955b0538a43f0b4859389d4d·...·]">&gt;&gt;</span><span·class="p">,</span><span·class="w">
 177 ······································</span><span·class="p"·data-group-id="6581786091-4">[</span><span·class="p"·data-group-id="6581786091-5">{</span><span·class="p"·data-group-id="6581786091-6">&lt;&lt;</span><span·class="s">&quot;SO_PATH&quot;</span><span·class="p"·data-group-id="6581786091-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">
178 ········································</span><span·class="p"·data-group-id="9830411992-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="9830411992-7">&gt;&gt;</span><span·class="p"·data-group-id="9830411992-5">}</span><span·class="p">,</span><span·class="w">178 ········································</span><span·class="p"·data-group-id="6581786091-7">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="6581786091-7">&gt;&gt;</span><span·class="p"·data-group-id="6581786091-5">}</span><span·class="p">,</span><span·class="w">
179 ·······································</span><span·class="p"·data-group-id="9830411992-8">{</span><span·class="p"·data-group-id="9830411992-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="9830411992-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·172,·SHA:·8f8d335eb325d457830b37cf689a5dcfa33e1b0a27ee0c63a7600eb264b5ab6c·...·]-8">}</span><span·class="p">,</span><span·class="w">179 ·······································</span><span·class="p"·data-group-id="6581786091-8">{</span><span·class="p"·data-group-id="6581786091-9">&lt;&lt;</span><span·class="s">&quot;ID&quot;</span><span·class="p"·data-group-id="6581786091-9">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·172,·SHA:·b39b86b50b4af195a02c78d8c2f7011007e1bde9646b2baa08610a32e0bab9b8·...·]-8">}</span><span·class="p">,</span><span·class="w">
180 ·······································</span><span·class="p"·data-group-id="9830411992-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="9830411992-11">&gt;&gt;</span><span·class="p"·data-group-id="9830411992-4">]</span><span·class="p">,</span><span·class="w">180 ·······································</span><span·class="p"·data-group-id="6581786091-11">&lt;&lt;</span><span·class="s">&quot;LOAD&quot;</span><span·class="p"·data-group-id="6581786091-11">&gt;&gt;</span><span·class="p"·data-group-id="6581786091-4">]</span><span·class="p">,</span><span·class="w">
181 ······································</span><span·class="p"·data-group-id="9830411992-12">[</span><span·class="p"·data-group-id="9830411992-12">]</span><span·class="p"·data-group-id="9830411992-2">)</span><span·class="p">.</span><span·class="w">181 ······································</span><span·class="p"·data-group-id="6581786091-12">[</span><span·class="p"·data-group-id="6581786091-12">]</span><span·class="p"·data-group-id="6581786091-2">)</span><span·class="p">.</span><span·class="w">
182 </span><span·class="p"·data-group-id="9830411992-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="9830411992-13">}</span><span·class="gp·unselectable">182 </span><span·class="p"·data-group-id="6581786091-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="6581786091-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="9830411992-14">(</span><span·class="n">Engine</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9830411992-15">[</span><span·class="ss">engine_method_digests</span><span·class="p"·data-group-id="9830411992-15">]</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·a0cf87f4bc1413dfc770dbda66a05e2e4bab44e59c0f24b7d7f83bea9abd88a5·...·]-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="6581786091-14">(</span><span·class="n">Engine</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6581786091-15">[</span><span·class="ss">engine_method_digests</span><span·class="p"·data-group-id="6581786091-15">]</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·3b27b5da03712d0deffd2e88620b0dac17cbe1bcc730ad4fc2d611d50d6a1355·...·]-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="8157263943-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="8157263943-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·989f2831c749e36ec3ec1bb318103ad582d24576306475045e2b8aa01932e443·...·]-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="6641063290-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="6641063290-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·284,·SHA:·51b0ee0870ef8f0a8f79aed862d4acc8f18990f958371a26291cda2690320269·...·]-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">
193 ···············································</span><span·class="p"·data-group-id="8157263943-4">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="8157263943-4">&gt;&gt;</span><span·class="p"·data-group-id="8157263943-2">)</span><span·class="p">.</span><span·class="w">193 ···············································</span><span·class="p"·data-group-id="6641063290-4">&lt;&lt;</span><span·class="s">&quot;/some/path/otp_test_engine.so&quot;</span><span·class="p"·data-group-id="6641063290-4">&gt;&gt;</span><span·class="p"·data-group-id="6641063290-2">)</span><span·class="p">.</span><span·class="w">
194 ·</span><span·class="p"·data-group-id="8157263943-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="8157263943-5">}</span></code></pre><p>To·remove·the·tag·from·the·OpenSSL·engine[·...·truncated·by·diffoscope;·len:·469,·SHA:·ce7bf28c73b25fbc6ac2ce7c533d3b1584b7e0fb994c4e0a19f5fae1cc59dab3·...·]-1">)</span><span·class="p">.</span><span·class="w">194 ·</span><span·class="p"·data-group-id="6641063290-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="6641063290-5">}</span></code></pre><p>To·remove·the·tag·from·the·OpenSSL·engine[·...·truncated·by·diffoscope;·len:·469,·SHA:·27239d5508c4ccfbcc9fb6b60bf3e09ba15e62c8a05b87fb92b5e1b00522c903·...·]-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="2613465414-1">(</span><span·class="n">Engine</span><span·class="p"·data-group-id="2613465414-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="2045583554-1">(</span><span·class="n">Engine</span><span·class="p"·data-group-id="2045583554-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="9936749677-1">(</span><span·class="p"·data-group-id="9936749677-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="6146287919-1">(</span><span·class="p"·data-group-id="6146287919-1">)</span><span·class="p">.</span><span·class="w">
204 </span><span·class="p"·data-group-id="9936749677-2">[</span><span·class="p"·data-group-id="9936749677-3">&lt;&lt;</span><span·class="s">&quot;dynamic&quot;</span><span·class="p"·data-group-id="9936749677-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·175,·SHA:·239cf9ad185af43defd639b4993bd33c29c5cabeca8966fba5b858922c4321e5·...·]-2">]</span></code></pre>204 </span><span·class="p"·data-group-id="6146287919-2">[</span><span·class="p"·data-group-id="6146287919-3">&lt;&lt;</span><span·class="s">&quot;dynamic&quot;</span><span·class="p"·data-group-id="6146287919-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·175,·SHA:·3b91ddbce4acc13699e59664e8402628396627a49784973164e608368e5bc03d·...·]-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.3/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="9184605181-1">(</span><span·class="p"·data-group-id="9184605181-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="0282813553-1">(</span><span·class="p"·data-group-id="0282813553-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="9184605181-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="9184605181-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="0282813553-2">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="0282813553-2">&gt;&gt;</span><span·class="p">.</span><span·class="w">
198 »       </span><span·class="p"·data-group-id="9184605181-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:·5aa7e2859c5e7da546d00d8088b15b671d9590acf35a34d8120e0044130e5d7c·...·]-3">&gt;&gt;</span><span·class="w">198 »       </span><span·class="p"·data-group-id="0282813553-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:·cb1b6878a9a12115969da00263de030b5deb596a818e555ef7a80b6979d268f9·...·]-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="9184605181-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="9184605181-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="0282813553-4">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="0282813553-4">&gt;&gt;</span><span·class="p">.</span><span·class="w">
200 »       </span><span·class="p"·data-group-id="9184605181-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:·266adcb91b4bf4cc2b76700a1b9fc1a27827204e87de346f2d9e8ed0ea9f7d81·...·]-5">&gt;&gt;</span><span·class="w">200 »       </span><span·class="p"·data-group-id="0282813553-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:·de94b51070825d81af72c52676f1b8b6b746a6c0b1c285d0f19e171f0ccd1aad·...·]-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="9184605181-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:·c7b532fdb9dd61cf1dd55d28f62e855b95b81337866c7c6f29c716b71588b442·...·]-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="0282813553-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:·0432a2660224d68e5de87697d93859e180cfe459b1a210796ae9c4ba941b6229·...·]-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="9184605181-7">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9184605181-8">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="9184605181-8">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·8aeee246654c5dac8a2ae21a1ff233f84363a9ce8e9b50702359333f668ea81a·...·]-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="0282813553-7">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0282813553-8">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="0282813553-8">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·2afc9e48121b2698ba597bafbc1f9dcd496d68cbd7e0c62a19e063747c5afc22·...·]-7">)</span><span·class="p">.</span><span·class="w">
204 »       </span><span·class="p"·data-group-id="9184605181-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:·fbf45c41ca597334e4dfe1b06f78e593b44c55cde1030799c3ffeef1b3fd6432·...·]-9">&gt;&gt;</span><span·class="w">204 »       </span><span·class="p"·data-group-id="0282813553-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:·1c1bca45eb930a99f91fc9d2f84f61c1719057f9554c6ee6141f90552a3b41a8·...·]-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="9184605181-10">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9184605181-11">&lt;&lt;</span><span·class="s">&quot;Second·bytes&quot;</span><span·class="p"·data-group-id="9184605181-11">[·...·truncated·by·diffoscope;·len:·56,·SHA:·e516d4b3ef2ef941591e0ce3398d67751eac76de66c809a5fd6de276a6bbd34f·...·]-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="0282813553-10">(</span><span·class="n">StateEnc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0282813553-11">&lt;&lt;</span><span·class="s">&quot;Second·bytes&quot;</span><span·class="p"·data-group-id="0282813553-11">[·...·truncated·by·diffoscope;·len:·56,·SHA:·efb5510824f0a9b122254f2b17befb89e49c6a881cc626fddac3129f96ce807d·...·]-10">)</span><span·class="p">.</span><span·class="w">
206 »       </span><span·class="p"·data-group-id="9184605181-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:·35e91d0dcbe4db87ae363b69fe9d6e6e60b0bfa53e639b4ca9b45df7a0798154·...·]-12">&gt;&gt;</span><span·class="w">206 »       </span><span·class="p"·data-group-id="0282813553-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:·bcf4412e69f8cdb51bb148413d6ffd664931c49c5fb4d84e03619a760edafd57·...·]-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="9184605181-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:·03f3704e85faed37e3bafde260e293eec0625bec2347e0b30b512003778bb010·...·]-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="0282813553-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:·b5b3d1f2cb14f440d98237d48206bf7b0a44003b9c10f1bd243af57691375b76·...·]-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="9184605181-14">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9184605181-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:·23dd5dec24807c7842436f280f6d7f65ce6fe868cd820efff4365261d3b04a9d·...·]-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="0282813553-14">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0282813553-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:·464f438a7f2d9e68292f3cbed9af44b9eb95261743980e9f82e17c085c8d9345·...·]-14">)</span><span·class="p">.</span><span·class="w">
211 »       </span><span·class="p"·data-group-id="9184605181-16">&lt;&lt;</span><span·class="s">&quot;First·b&quot;</span><span·class="p"·data-group-id="9184605181-16">&gt;&gt;</span><span·class="w">211 »       </span><span·class="p"·data-group-id="0282813553-16">&lt;&lt;</span><span·class="s">&quot;First·b&quot;</span><span·class="p"·data-group-id="0282813553-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="9184605181-17">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9184605181-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="0282813553-17">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0282813553-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="9184605181-18">&gt;&gt;</span><span·class="p"·data-group-id="9184605181-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="0282813553-18">&gt;&gt;</span><span·class="p"·data-group-id="0282813553-17">)</span><span·class="p">.</span><span·class="w">
214 »       </span><span·class="p"·data-group-id="9184605181-19">&lt;&lt;</span><span·class="s">&quot;ytesSecond·byte&quot;</span><span·class="p"·data-group-id="9184605181-19">&gt;&gt;</span><span·class="w">214 »       </span><span·class="p"·data-group-id="0282813553-19">&lt;&lt;</span><span·class="s">&quot;ytesSecond·byte&quot;</span><span·class="p"·data-group-id="0282813553-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="9184605181-20">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9184605181-21">&lt;&lt;</span><span·class="mi">41</span><span·class="p"·data-group-id="9184605181-21">&gt;&gt;</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·34674cd20bd60e354ef82ec911dad66c12522855017b786093c6427dcc369125·...·]-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="0282813553-20">(</span><span·class="n">StateDec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0282813553-21">&lt;&lt;</span><span·class="mi">41</span><span·class="p"·data-group-id="0282813553-21">&gt;&gt;</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·4990a9d27892c2687d47b5b70faaeb8acde90d5f9f73c56533abbd82b327fbf0·...·]-20">)</span><span·class="p">.</span><span·class="w">
216 »       </span><span·class="p"·data-group-id="9184605181-22">&lt;&lt;</span><span·class="s">&quot;s&quot;</span><span·class="p"·data-group-id="9184605181-22">&gt;&gt;</span><span·class="w">216 »       </span><span·class="p"·data-group-id="0282813553-22">&lt;&lt;</span><span·class="s">&quot;s&quot;</span><span·class="p"·data-group-id="0282813553-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="4475437109-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="4475437109-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="8598854557-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="8598854557-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="4475437109-2">(</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_init</span><span·class="p"·data-group-id="4475437109-3">(</span><span·class="n">Crypto</span><span·class="p">,</span><span·class="w">·</span><span·class="n"[·...·truncated·by·diffoscope;·len:·254,·SHA:·2463341493db56b600e4dd78e0a9fefcb3b2227a416064f443167c296420464d·...·]-2">)</span><span·class="p">.</span><span·class="w">223 »       </span><span·class="nf">crypto_loop</span><span·class="p"·data-group-id="8598854557-2">(</span><span·class="nc">crypto</span><span·class="p">:</span><span·class="nf">crypto_init</span><span·class="p"·data-group-id="8598854557-3">(</span><span·class="n">Crypto</span><span·class="p">,</span><span·class="w">·</span><span·class="n"[·...·truncated·by·diffoscope;·len:·254,·SHA:·b322432f19d348332fedf206a1588ff2e9696a1556795406c294843b18f9dbe8·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
224 »       </span><span·class="nf">crypto_loop</span><span·class="p"·data-group-id="4475437109-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="4475437109-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="8598854557-4">(</span><span·class="n">State</span><span·class="p"·data-group-id="8598854557-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="4475437109-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="4475437109-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">226 ········</span><span·class="p"·data-group-id="8598854557-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="8598854557-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="4475437109-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="4475437109-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="8598854557-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="8598854557-6">)</span><span·class="p">,</span><span·class="w">
228 »       </span><span·class="nf">loop</span><span·class="p"·data-group-id="4475437109-7">(</span><span·class="n">State</span><span·class="p"·data-group-id="4475437109-7">)</span><span·class="w">228 »       </span><span·class="nf">loop</span><span·class="p"·data-group-id="8598854557-7">(</span><span·class="n">State</span><span·class="p"·data-group-id="8598854557-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="6967190334-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="6967190334-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="6673014847-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="6673014847-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
238 »       </span><span·class="p"·data-group-id="6967190334-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:·5c405639014897ce69e9a6f1d848fd7a2b786d9212fa5261acd9f5719346e209·...·]-2">&gt;&gt;</span><span·class="w">238 »       </span><span·class="p"·data-group-id="6673014847-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:·0785596b959352eef0bc42da7e3242617eafd42fe73800d9814c6287ed770889·...·]-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="6967190334-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="6967190334-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="6673014847-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="6673014847-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
240 »       </span><span·class="p"·data-group-id="6967190334-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·c[·...·truncated·by·diffoscope;·len:·573,·SHA:·09d5087d184c1769dd31cb255da65cfc1e5e6734f2aa38de8ed4884fcef00ca3·...·]-4">&gt;&gt;</span><span·class="w">240 »       </span><span·class="p"·data-group-id="6673014847-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·c[·...·truncated·by·diffoscope;·len:·573,·SHA:·e920db61df7ec89d24bbd54cae056d5d264787b05032bb27fb1781097be141f6·...·]-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="6967190334-5">[</span><span·class="p"·data-group-id="6967190334-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="6967190334-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="6967190334-7">[·...·truncated·by·diffoscope;·len:·163,·SHA:·70876ad122782bbec5999d2d5a6c55c513c5731055d079c771db7c22c5530e08·...·]-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="6673014847-5">[</span><span·class="p"·data-group-id="6673014847-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="6673014847-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="6673014847-7">[·...·truncated·by·diffoscope;·len:·163,·SHA:·462e3eec0ed60b2b0ad5fd7b773c8fffa08b03bdb1838820e72656bbe66a9838·...·]-5">]</span><span·class="p">.</span><span·class="w">
242 »       </span><span·class="p"·data-group-id="6967190334-8">[</span><span·class="p"·data-group-id="6967190334-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="6967190334-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="6967190334-10"[·...·truncated·by·diffoscope;·len:·165,·SHA:·cecc22dfa9a1c2b19ee6fbcc4e8dd994dcc7e51f30e3d1816512c6f1fca4c038·...·]-8">]</span><span·class="w">242 »       </span><span·class="p"·data-group-id="6673014847-8">[</span><span·class="p"·data-group-id="6673014847-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="6673014847-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="6673014847-10"[·...·truncated·by·diffoscope;·len:·165,·SHA:·a19af68bffeb1fb76585070aff8a4da3acfb2cccadbd44143133f0641f497643·...·]-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="6967190334-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><spa[·...·truncated·by·diffoscope;·len:·139,·SHA:·f115a05a911f71f58404fa72d1e14431dcfb034b48ccfe8cf495dee6f12e5085·...·]-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="6673014847-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><spa[·...·truncated·by·diffoscope;·len:·139,·SHA:·64540edaf97317544ac3806712d9b47e1b9dabccaec451ff2f2b802a54a99a95·...·]-11">)</span><span·class="p">.</span><span·class="w">
244 »       </span><span·class="p"·data-group-id="6967190334-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="6673014847-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="6967190334-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="6673014847-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="4936860257-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="4936860257-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="4370678461-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="4370678461-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
256 »       </span><span·class="p"·data-group-id="4936860257-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:·0b4b430fa502833eb883b866d3114bc049e51f759272f7fcb705a00fd02a4df3·...·]-2">&gt;&gt;</span><span·class="w">256 »       </span><span·class="p"·data-group-id="4370678461-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:·27b5a3f33972d696bc56cc20315fd506ccc377734bbee67676bc1fb8c7a769a5·...·]-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="4936860257-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="4936860257-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="4370678461-3">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="4370678461-3">&gt;&gt;</span><span·class="p">.</span><span·class="w">
258 »       </span><span·class="p"·data-group-id="4936860257-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·c[·...·truncated·by·diffoscope;·len:·573,·SHA:·0e4ca403f84b2b965e7b8db23da93b62f332c618faa6957c6410c5bac6405e47·...·]-4">&gt;&gt;</span><span·class="w">258 »       </span><span·class="p"·data-group-id="4370678461-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·c[·...·truncated·by·diffoscope;·len:·573,·SHA:·a76f79ea192d525c85285b32e7febf0c112311d607f712f9d2e3703b6e99cdba·...·]-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="4936860257-5">[</span><span·class="p"·data-group-id="4936860257-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="4936860257-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="4936860257-7">[·...·truncated·by·diffoscope;·len:·163,·SHA:·ed15b817e75e4a3adb354eb4ffa76cf521ace0d3a224047d1706b87367446a5b·...·]-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="4370678461-5">[</span><span·class="p"·data-group-id="4370678461-6">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="4370678461-6">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="4370678461-7">[·...·truncated·by·diffoscope;·len:·163,·SHA:·5575e2c7b4c3411d1d97ac30f6d70320f34a45274e3c8c139ddb2b472bb65638·...·]-5">]</span><span·class="p">.</span><span·class="w">
260 »       </span><span·class="p"·data-group-id="4936860257-8">[</span><span·class="p"·data-group-id="4936860257-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="4936860257-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="4936860257-10"[·...·truncated·by·diffoscope;·len:·165,·SHA:·e0f3e3705138d438bc06055116ae1dd9ad5ab16ed437c2caacf16b39e959eac0·...·]-8">]</span><span·class="w">260 »       </span><span·class="p"·data-group-id="4370678461-8">[</span><span·class="p"·data-group-id="4370678461-9">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="4370678461-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="4370678461-10"[·...·truncated·by·diffoscope;·len:·165,·SHA:·e7f3c49494a319b29db2555d0c394403eedfdbedaaa1a61080b113143d9316da·...·]-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="4936860257-11">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="4936860257-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="4370678461-11">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="4370678461-11">&gt;&gt;</span><span·class="p">.</span><span·class="w">
262 »       </span><span·class="p"·data-group-id="4936860257-12">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="4936860257-12">&gt;&gt;</span><span·class="w">262 »       </span><span·class="p"·data-group-id="4370678461-12">&lt;&lt;</span><span·class="s">&quot;Some·additional·auth·data&quot;</span><span·class="p"·data-group-id="4370678461-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="4936860257-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><spa[·...·truncated·by·diffoscope;·len:·213,·SHA:·e064b37152f00dddf13632da034af0a9493343e8bda4908084e21554e0ff7351·...·]-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="4370678461-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><spa[·...·truncated·by·diffoscope;·len:·213,·SHA:·ff43e0736acfc53ba3ea675d843f3afa357791d114aa62739131bfe0e8d3eb6a·...·]-13">)</span><span·class="p">.</span><span·class="w">
264 »       </span><span·class="p"·data-group-id="4936860257-14">{</span><span·class="p"·data-group-id="4936860257-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="4370678461-14">{</span><span·class="p"·data-group-id="4370678461-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="4936860257-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="4370678461-15">&gt;&gt;</span><span·class="p">,</span><span·class="w">
266 »       </span><span·class="p"·data-group-id="4936860257-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</span[·...·truncated·by·diffoscope;·len:·656,·SHA:·a432d4709f55f2ceba19540c7467306e74b1fe6d5075635a545ce9737b2f2669·...·]-14">}</span><span·class="w">266 »       </span><span·class="p"·data-group-id="4370678461-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</span[·...·truncated·by·diffoscope;·len:·656,·SHA:·20a298dc73e09480b006858af527d84167abfcc1c1f27183f8f4dd352e7667ad·...·]-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="9853233010-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="9853233010-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="3053535166-1">&lt;&lt;</span><span·class="mi">1</span><span·class="p">:</span><span·class="mi">128</span><span·class="p"·data-group-id="3053535166-1">&gt;&gt;</span><span·class="p">.</span><span·class="w">
275 »       </span><span·class="p"·data-group-id="9853233010-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:·2810d9c2585b7b9d46ae104726d4c4e3e114beff071d07f7fcd45e3dfba6507b·...·]-2">&gt;&gt;</span><span·class="w">275 »       </span><span·class="p"·data-group-id="3053535166-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:·78550913e09e75d02214be7dc68f8fc7c647347e004608b1c640ee3c23e51191·...·]-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="9853233010-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="9853233010-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="3053535166-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="3053535166-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="9853233010-4">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9853233010-5">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="9853233010-5">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·0ffeed98263d98c802872086e570c7c8c0329724c857ec42abe66d17157902e7·...·]-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="3053535166-4">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3053535166-5">&lt;&lt;</span><span·class="s">&quot;First·bytes&quot;</span><span·class="p"·data-group-id="3053535166-5">&gt;[·...·truncated·by·diffoscope;·len:·52,·SHA:·f1fe52b7cd6862e8e3ce6660c597fa400d6fd0d02cb374672e99f9413ecb7646·...·]-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="9853233010-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="9853233010-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="3053535166-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="3053535166-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="9853233010-7">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9853233010-8">&lt;&lt;</span><span·class="s">&quot;last·bytes&quot;</span><span·class="p"·data-group-id="9853233010-8">&gt;&[·...·truncated·by·diffoscope;·len:·51,·SHA:·647550dc6529dc90bb4a55b0f9d6c72168b1973193cba1bef7b578c49b5ec577·...·]-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="3053535166-7">(</span><span·class="n">StateMac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3053535166-8">&lt;&lt;</span><span·class="s">&quot;last·bytes&quot;</span><span·class="p"·data-group-id="3053535166-8">&gt;&[·...·truncated·by·diffoscope;·len:·51,·SHA:·9b464d027e4af7dbc66dcff173fa44561ae96074a3b82a924815e572f2db6d86·...·]-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="9853233010-9">(</span><span·class="n">StateMac</span><span·class="p"·data-group-id="9853233010-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="3053535166-9">(</span><span·class="n">StateMac</span><span·class="p"·data-group-id="3053535166-9">)</span><span·class="p">.</span><span·class="w">
285 »       </span><span·class="p"·data-group-id="9853233010-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="3053535166-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="9853233010-10">&gt;&gt;</span><span·class="w">286 »       </span><span·class="mi">249</span><span·class="p"·data-group-id="3053535166-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="2332932207-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:·97,·SHA:·1e2dd5c928ea83411f96e8b31b961d29d611c59d7a1b27b68d10bc7d72f66d33·...·]-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="4662921461-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:·97,·SHA:·b82365894019d0450bd790ea3b819680b0ecd88e4a5dcc95bff5d7ed1ecd8c3e·...·]-1">)</span><span·class="p">.</span><span·class="w">
288 »       </span><span·class="p"·data-group-id="2332932207-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="4662921461-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="2332932207-2">&gt;&gt;</span><span·class="w">289 »       </span><span·class="mi">249</span><span·class="p"·data-group-id="4662921461-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="2332932207-3">(</span><span·class="mi">7</span><span·class="p"·data-group-id="2332932207-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="2332932207-4">(</span><span[·...·truncated·by·diffoscope;·len:·61,·SHA:·de33676853660803bccc665fba97c54d2574fb0bb8b788728ed1b7ab4e8a3304·...·]-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="4662921461-3">(</span><span·class="mi">7</span><span·class="p"·data-group-id="4662921461-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="4662921461-4">(</span><span[·...·truncated·by·diffoscope;·len:·61,·SHA:·8b206c4f144ee484d9430b4e791f87ef641ae565b9114c1ec6e0cdb3054fdf15·...·]-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>
615 B
./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/.build
    
Offset 24, 15 lines modifiedOffset 24, 15 lines modified
24 dist/lato-latin-300-normal-YUMVEFOL.woff224 dist/lato-latin-300-normal-YUMVEFOL.woff2
25 dist/lato-latin-400-normal-W7754I4D.woff225 dist/lato-latin-400-normal-W7754I4D.woff2
26 dist/lato-latin-700-normal-2XVSBPG4.woff226 dist/lato-latin-700-normal-2XVSBPG4.woff2
27 dist/lato-latin-ext-300-normal-VPGGJKJL.woff227 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
28 dist/lato-latin-ext-400-normal-N27NCBWW.woff228 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
29 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff229 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
30 dist/remixicon-NKANDIL5.woff230 dist/remixicon-NKANDIL5.woff2
31 dist/search_data-B265D67F.js31 dist/search_data-B8379476.js
32 dist/sidebar_items-2E1AB7CA.js32 dist/sidebar_items-2E1AB7CA.js
33 i.html33 i.html
34 index.html34 index.html
35 int.html35 int.html
36 introduction.html36 introduction.html
37 notes.html37 notes.html
38 search.html38 search.html
171 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:·219257·bytes,·number·of·entries:·22
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:56·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:49·mimetype
3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Mar-18·07:56·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Mar-18·08:49·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····49258·bx·defN·25-Mar-18·07:56·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····49258·bx·defN·25-Mar-18·08:49·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1227·bx·defN·25-Mar-18·07:56·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1227·bx·defN·25-Mar-18·08:49·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····1576·bx·defN·25-Mar-18·07:56·OEBPS/introduction.xhtml6 ?rw-r--r--··6.1·unx·····1576·bx·defN·25-Mar-18·08:49·OEBPS/introduction.xhtml
7 ?rw-r--r--··6.1·unx····55715·bx·defN·25-Mar-18·07:56·OEBPS/int.xhtml7 ?rw-r--r--··6.1·unx····55715·bx·defN·25-Mar-18·08:49·OEBPS/int.xhtml
8 ?rw-r--r--··6.1·unx····42294·bx·defN·25-Mar-18·07:56·OEBPS/i.xhtml8 ?rw-r--r--··6.1·unx····42294·bx·defN·25-Mar-18·08:49·OEBPS/i.xhtml
9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-erlang-ESPT6BQV.css9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:49·OEBPS/dist/epub-erlang-ESPT6BQV.css
10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-LSJCIYTM.js10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:49·OEBPS/dist/epub-LSJCIYTM.js
11 ?rw-r--r--··6.1·unx····46232·bx·defN·25-Mar-18·07:56·OEBPS/debugger_chapter.xhtml11 ?rw-r--r--··6.1·unx····46232·bx·defN·25-Mar-18·08:49·OEBPS/debugger_chapter.xhtml
12 ?rw-r--r--··6.1·unx·····7328·bx·defN·25-Mar-18·07:56·OEBPS/debugger.xhtml12 ?rw-r--r--··6.1·unx·····7328·bx·defN·25-Mar-18·08:49·OEBPS/debugger.xhtml
13 ?rw-r--r--··6.1·unx·····2548·bx·defN·25-Mar-18·07:56·OEBPS/content.opf13 ?rw-r--r--··6.1·unx·····2548·bx·defN·25-Mar-18·08:49·OEBPS/content.opf
14 ?rw-r--r--··6.1·unx····34504·bx·defN·25-Mar-18·07:56·OEBPS/assets/view.jpg14 ?rw-r--r--··6.1·unx····34504·bx·defN·25-Mar-18·08:49·OEBPS/assets/view.jpg
15 ?rw-r--r--··6.1·unx····40742·bx·defN·25-Mar-18·07:56·OEBPS/assets/monitor.jpg15 ?rw-r--r--··6.1·unx····40742·bx·defN·25-Mar-18·08:49·OEBPS/assets/monitor.jpg
16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:56·OEBPS/assets/logo.png16 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:49·OEBPS/assets/logo.png
17 ?rw-r--r--··6.1·unx····14414·bx·defN·25-Mar-18·07:56·OEBPS/assets/line_break_dialog.jpg17 ?rw-r--r--··6.1·unx····14414·bx·defN·25-Mar-18·08:49·OEBPS/assets/line_break_dialog.jpg
18 ?rw-r--r--··6.1·unx····28924·bx·defN·25-Mar-18·07:56·OEBPS/assets/interpret.jpg18 ?rw-r--r--··6.1·unx····28924·bx·defN·25-Mar-18·08:49·OEBPS/assets/interpret.jpg
19 ?rw-r--r--··6.1·unx····13532·bx·defN·25-Mar-18·07:56·OEBPS/assets/function_break_dialog.jpg19 ?rw-r--r--··6.1·unx····13532·bx·defN·25-Mar-18·08:49·OEBPS/assets/function_break_dialog.jpg
20 ?rw-r--r--··6.1·unx····21770·bx·defN·25-Mar-18·07:56·OEBPS/assets/cond_break_dialog.jpg20 ?rw-r--r--··6.1·unx····21770·bx·defN·25-Mar-18·08:49·OEBPS/assets/cond_break_dialog.jpg
21 ?rw-r--r--··6.1·unx····56341·bx·defN·25-Mar-18·07:56·OEBPS/assets/attach.jpg21 ?rw-r--r--··6.1·unx····56341·bx·defN·25-Mar-18·08:49·OEBPS/assets/attach.jpg
22 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:56·META-INF/container.xml22 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:49·META-INF/container.xml
23 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:56·META-INF/com.apple.ibooks.display-options.xml23 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:49·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,·215371·bytes·compressed:··50.9%
129 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,·Mar·18·2025·07:56: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,·Mar·18·2025·08:49:56,·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="8593322164-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="8593322164-1">)</span><span·class="p">.</span><span·class="w">37 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="0856118055-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="0856118055-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="8593322164-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="8593322164-2">)</span><span·class="p">.</span><span·class="w">41 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="0856118055-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="0856118055-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="8593322164-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="8593322164-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="0856118055-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="0856118055-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="8593322164-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="8593322164-4">)</span><span·class="p">.</span><span·class="w">45 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="0856118055-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="0856118055-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="9735061904-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="9735061904-2">[</samp><samp·class="n">Pid</samp><sa[·...·truncated·by·diffoscope;·len:·190,·SHA:·0b0c3bb9d8e9bd18e019991d8c3ad856515afa1787b57b74fd47217a4cdce4f0·...·]-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="2630313966-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="2630313966-2">[</samp><samp·class="n">Pid</samp><sa[·...·truncated·by·diffoscope;·len:·190,·SHA:·f8ca4139415abf85bae025921405e1c6e2ae46a7fecc424148daefdd1d372e04·...·]-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="6900112768-1">(</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="6900112768-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="2477139624-1">(</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="2477139624-1">)</samp><samp·class="p">.</samp><samp·class="w">
33 </samp><samp·class="p"·data-group-id="6900112768-2">{</samp><samp·class="ss">module</samp><samp·class="p">,</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="6900112768-2">}</samp><samp·class="gp·unselectable">33 </samp><samp·class="p"·data-group-id="2477139624-2">{</samp><samp·class="ss">module</samp><samp·class="p">,</samp><samp·class="ss">t</samp><samp·class="p"·data-group-id="2477139624-2">}</samp><samp·class="gp·unselectable">
34 2&gt;·</samp><samp·class="nf">iaa</samp><samp·class="p"·data-group-id="6900112768-3">(</samp><samp·class="p"·data-group-id="6900112768-4">[</samp><samp·class="ss">init</samp><samp·class="p"·data-group-id="6900112768-4">]</samp><samp·class="p"·data-group-id="6900112768-3">)</samp><samp·class="p">.</samp><samp·class="w">34 2&gt;·</samp><samp·class="nf">iaa</samp><samp·class="p"·data-group-id="2477139624-3">(</samp><samp·class="p"·data-group-id="2477139624-4">[</samp><samp·class="ss">init</samp><samp·class="p"·data-group-id="2477139624-4">]</samp><samp·class="p"·data-group-id="2477139624-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
3.0 KB
OEBPS/content.opf
2.97 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="7771442499-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="7771442499-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="3124472875-1">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="3124472875-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="7771442499-2">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="7771442499-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="3124472875-2">(</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">Compiled</span><span·class="p"·data-group-id="3124472875-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="7771442499-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="7771442499-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="3124472875-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="3124472875-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="7771442499-4">(</span><span·class="n">Module</span><span·class="p"·data-group-id="7771442499-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="3124472875-4">(</span><span·class="n">Module</span><span·class="p"·data-group-id="3124472875-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="7771442499-5">{</span><span·class="ss">loaded</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="7771442499-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="3124472875-5">{</span><span·class="ss">loaded</span><span·class="p">,</span><span·class="n">File</span><span·class="p"·data-group-id="3124472875-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="2279519536-1">(</span><span·class="mi">0</span><span·class="p"·data-group-id="2279519536-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="0477530198-1">(</span><span·class="mi">0</span><span·class="p"·data-group-id="0477530198-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="2279519536-2">(</span><span·class="n">N</span><span·class="p"·data-group-id="2279519536-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·class="w">·</span><span·class="mi">0</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">is_integer</span><span·class="p"·data-group-id="2279519536-3">(</span><span·class="n">N</span><span·class="p"·data-group-id="2279519536-3">)</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·class="w">·</span><span·class="nf">fac</span><span·class="p"·data-group-id="2279519536-4">(</span><span·class="n">N</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="2279519536-4">)</span><span·class="p">.</span></code></pre><p>Definition·of·<code·class="inline">c_test:c_break/1</code>:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p">-</span><span·class="na">module</span><span·class="p"·data-group-id="5510709610-1">(</span><span·class="ss">c_test</span><span·class="p"·data-group-id="5510709610-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="5510709610-2">(</span><span·class="p"·data-group-id="5510709610-3">[</span><span·class="ss">c_break</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·67,·SHA:·0667dc2d55efc4b2b50b2fefa25628c5ba013d238317e09ac7e56d66b2e7276c·...·]">)</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="0477530198-2">(</span><span·class="n">N</span><span·class="p"·data-group-id="0477530198-2">)</span><span·class="w">·</span><span·class="k"[·...·truncated·by·diffoscope;·len:·1081,·SHA:·fa01d25660037c89e3c12570d100a1f3456bade483cc01a84dd41358403e0ed8·...·]">)</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="4971323582-2">(</span><span·class="p"·data-group-id="4971323582-3">[</span><span·class="ss">c_break</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4971323582-3">]</span><span·class="p"·data-group-id="4971323582-2">)</span><span·class="p">.</span><span·class="w">
  
214 </span><span·class="nf">c_break</span><span·class="p"·data-group-id="5510709610-4">(</span><span·class="n">Bindings</span><span·class="p"·data-group-id="5510709610-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="4971323582-4">(</span><span·class="n">Bindings</span><span·class="p"·data-group-id="4971323582-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="5510709610-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="5510709610-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="4971323582-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="4971323582-5">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
216 ········</span><span·class="p"·data-group-id="5510709610-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="5510709610-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">216 ········</span><span·class="p"·data-group-id="4971323582-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="4971323582-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="6818418627-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6818418627-2">{</span><span·class="ss">badarith</span><span·class="p">,</span><span·class="p"·data-group-id="6818418627-3">[</span><span·clas[·...·truncated·by·diffoscope;·len:·507,·SHA:·3c08e90fa78479637d0b8d4a22ae38a7c94e88c5d2470dc59c3ee495c4f08b3d·...·]-4">}</span><span·class="p">,</span><span·class="w">238 </span><span·class="p"·data-group-id="5225628568-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5225628568-2">{</span><span·class="ss">badarith</span><span·class="p">,</span><span·class="p"·data-group-id="5225628568-3">[</span><span·clas[·...·truncated·by·diffoscope;·len:·507,·SHA:·8f452f1a34f2a6036aad2ce35a3af8bbc041b2c629f2d05317fc4059ee4b01fc·...·]-4">}</span><span·class="p">,</span><span·class="w">
239 ···················</span><span·class="p"·data-group-id="6818418627-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="6818418627-8">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·490,·SHA:·5e460c8356e93987d8cdb14e3676bf81ddb2275f8c7d29758388dbc25df93084·...·]-7">}</span><span·class="p">,</span><span·class="w">239 ···················</span><span·class="p"·data-group-id="5225628568-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="5225628568-8">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·490,·SHA:·b6d912b2533778ba1342b77b4b862248d29298d9cf5d9024c1872df55b9e5806·...·]-7">}</span><span·class="p">,</span><span·class="w">
240 ···················</span><span·class="p"·data-group-id="6818418627-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="6818418627-12">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·491,·SHA:·6af077fe4c4f182771b42edaf5c3ec2feee0b36c8f9939d10490fa706092cf12·...·]-11">}</span><span·class="p">,</span><span·class="w">240 ···················</span><span·class="p"·data-group-id="5225628568-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="5225628568-12">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·491,·SHA:·dd70d1677f47169b1424948a06b26124dcfcf065a13849d6d65daae9a9083499·...·]-11">}</span><span·class="p">,</span><span·class="w">
241 ···················</span><span·class="p"·data-group-id="6818418627-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="6818418627-16">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·486,·SHA:·3f4d0b5e0272ce614ec17c33e01b4cc6908a0031318393267cd85f84c3483f8a·...·]-15">}</span><span·class="p">,</span><span·class="w">241 ···················</span><span·class="p"·data-group-id="5225628568-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="5225628568-16">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·486,·SHA:·62970e7d32245f6f9fc29c3bbd23bff5b05641a94e8ab8b9ad9087461e144b9e·...·]-15">}</span><span·class="p">,</span><span·class="w">
242 ···················</span><span·class="p"·data-group-id="6818418627-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="6818418627-20">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·491,·SHA:·f03d70e3ca75ce8776c2347307673402428dfd7e228486bae685222a17b25448·...·]-19">}</span><span·class="p">,</span><span·class="w">242 ···················</span><span·class="p"·data-group-id="5225628568-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="5225628568-20">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·491,·SHA:·1fdd27d39453578afece2d13bd12d365781f0bfcb44b31d77268d0b958f05299·...·]-19">}</span><span·class="p">,</span><span·class="w">
243 ···················</span><span·class="p"·data-group-id="6818418627-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="6818418627-24">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·650,·SHA:·ba3ad3e47f8de5c42d46345716b74f3d800c84bdb9dfac04d7b33397e8be5a43·...·]-1">}</span></code></pre><p>For·details·about·the·stack·trace,·see·section243 ···················</span><span·class="p"·data-group-id="5225628568-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="5225628568-24">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·650,·SHA:·c87087b080f159f3e85fce3fb0f0b8d0b92f13704a16a483231e49ae25864b3e·...·]-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="0718320371-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="0718320371-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="7306679688-1">(</span><span·class="ss">t</span><span·class="p"·data-group-id="7306679688-1">)</span><span·class="p">.</span><span·class="w">
138 </span><span·class="p"·data-group-id="0718320371-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">t</span><span·class="p"·data-group-id="0718320371-2">}</span><span·class="gp·unselectable">138 </span><span·class="p"·data-group-id="7306679688-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">t</span><span·class="p"·data-group-id="7306679688-2">}</span><span·class="gp·unselectable">
139 2&gt;·</span><span·class="nf">iaa</span><span·class="p"·data-group-id="0718320371-3">(</span><span·class="p"·data-group-id="0718320371-4">[</span><span·class="ss">init</span><span·class="p"·data-group-id="0718320371-4">]</span><span·class="p"·data-group-id="0718320371-3">)</span><span·class="p">.</span><span·class="w">139 2&gt;·</span><span·class="nf">iaa</span><span·class="p"·data-group-id="7306679688-3">(</span><span·class="p"·data-group-id="7306679688-4">[</span><span·class="ss">init</span><span·class="p"·data-group-id="7306679688-4">]</span><span·class="p"·data-group-id="7306679688-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.3/doc/html/erlang.html#t:term/0">term</a>()].</pre>670 ·························Args·::·[<a·href="../../../../erts-15.2.3/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="1100163074-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="1100163074-2">[</span><span·class="n">Pid</span><sp[·...·truncated·by·diffoscope;·len:·190,·SHA:·eaacd69a70eec53ed3c9a2c943a3bd89ab589857e1ebb68dee710c3f409de6c4·...·]-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="9604695750-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="9604695750-2">[</span><span·class="n">Pid</span><sp[·...·truncated·by·diffoscope;·len:·190,·SHA:·a56603f894e3c92d921bd529b0f8daef05529758e74e47ddd5f48b12e49329d6·...·]-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="0864725024-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="0864725024-1">)</span><span·class="p">.</span><span·class="w">142 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="9318242105-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="9318242105-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="0864725024-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="0864725024-2">)</span><span·class="p">.</span><span·class="w">146 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="9318242105-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="9318242105-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="0864725024-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="0864725024-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="9318242105-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="9318242105-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="0864725024-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="0864725024-4">)</span><span·class="p">.</span><span·class="w">150 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="9318242105-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="9318242105-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">
630 B
./usr/share/doc/erlang-doc/html/lib/debugger-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-B265D67F.js"></script>124 <script·src="dist/search_data-B8379476.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>
598 B
./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/.build
    
Offset 16, 13 lines modifiedOffset 16, 13 lines modified
16 dist/lato-latin-300-normal-YUMVEFOL.woff216 dist/lato-latin-300-normal-YUMVEFOL.woff2
17 dist/lato-latin-400-normal-W7754I4D.woff217 dist/lato-latin-400-normal-W7754I4D.woff2
18 dist/lato-latin-700-normal-2XVSBPG4.woff218 dist/lato-latin-700-normal-2XVSBPG4.woff2
19 dist/lato-latin-ext-300-normal-VPGGJKJL.woff219 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
20 dist/lato-latin-ext-400-normal-N27NCBWW.woff220 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
21 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff221 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
22 dist/remixicon-NKANDIL5.woff222 dist/remixicon-NKANDIL5.woff2
23 dist/search_data-0488DFD4.js23 dist/search_data-6D666814.js
24 dist/sidebar_items-F976ACE0.js24 dist/sidebar_items-F976ACE0.js
25 index.html25 index.html
26 notes.html26 notes.html
27 search.html27 search.html
28 typer_cmd.html28 typer_cmd.html
107 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:·66387·bytes,·number·of·entries:·131 Zip·file·size:·66386·bytes,·number·of·entries:·13
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:57·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:51·mimetype
3 ?rw-r--r--··6.1·unx·····5041·bx·defN·25-Mar-18·07:57·OEBPS/typer_cmd.xhtml3 ?rw-r--r--··6.1·unx·····5041·bx·defN·25-Mar-18·08:51·OEBPS/typer_cmd.xhtml
4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Mar-18·07:57·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Mar-18·08:51·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx···125923·bx·defN·25-Mar-18·07:57·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx···125923·bx·defN·25-Mar-18·08:51·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx·····1214·bx·defN·25-Mar-18·07:57·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1214·bx·defN·25-Mar-18·08:51·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-erlang-ESPT6BQV.css7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-erlang-ESPT6BQV.css
8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-LSJCIYTM.js8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-LSJCIYTM.js
9 ?rw-r--r--··6.1·unx····19847·bx·defN·25-Mar-18·07:57·OEBPS/dialyzer_chapter.xhtml9 ?rw-r--r--··6.1·unx····19847·bx·defN·25-Mar-18·08:51·OEBPS/dialyzer_chapter.xhtml
10 ?rw-r--r--··6.1·unx····47575·bx·defN·25-Mar-18·07:57·OEBPS/dialyzer.xhtml10 ?rw-r--r--··6.1·unx····47575·bx·defN·25-Mar-18·08:51·OEBPS/dialyzer.xhtml
11 ?rw-r--r--··6.1·unx·····1653·bx·defN·25-Mar-18·07:57·OEBPS/content.opf11 ?rw-r--r--··6.1·unx·····1653·bx·defN·25-Mar-18·08:51·OEBPS/content.opf
12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:57·OEBPS/assets/logo.png12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:51·OEBPS/assets/logo.png
13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:57·META-INF/container.xml13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:51·META-INF/container.xml
14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:57·META-INF/com.apple.ibooks.display-options.xml14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:51·META-INF/com.apple.ibooks.display-options.xml
15 13·files,·223305·bytes·uncompressed,·64115·bytes·compressed:··71.3%15 13·files,·223305·bytes·uncompressed,·64114·bytes·compressed:··71.3%
69.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,·Mar·18·2025·07:57: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,·Mar·18·2025·08:51:56,·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.6/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.6/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.1/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="2784220782-1">{</span><span·class="ss">incremental</span><span·class="p">,</span><span·class="w">273 <a·href="../../../../lib/stdlib-6.2.1/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="1717683194-1">{</span><span·class="ss">incremental</span><span·class="p">,</span><span·class="w">
274 ········</span><span·class="p"·data-group-id="2784220782-2">{</span><span·class="ss">default_apps</span><span·class="p">,</span><span·class="p"·data-group-id="2784220782-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:·bc6badf8b8a30f2d874777fb118b338911b7d957174abe6e0a39641bea88ffa1·...·]-2">}</span><span·class="p">,</span><span·class="w">274 ········</span><span·class="p"·data-group-id="1717683194-2">{</span><span·class="ss">default_apps</span><span·class="p">,</span><span·class="p"·data-group-id="1717683194-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:·8dad5a9f9ac64a63ac1cd8d511bd278fe4aec303128cdac158fb6bdc9a04c1fd·...·]-2">}</span><span·class="p">,</span><span·class="w">
275 ········</span><span·class="p"·data-group-id="2784220782-4">{</span><span·class="ss">default_warning_apps</span><span·class="p">,</span><span·class="p"·data-group-id="2784220782-5">[</span><span·class="ss">stdlib</span><span·class="p"·data-group-id="2784220782-5">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·ca06d70a691f72a3514b6b580192c2b6b8653ee54b8f1bcc3f100f7a3216c5bf·...·]-4">}</span><span·class="w">275 ········</span><span·class="p"·data-group-id="1717683194-4">{</span><span·class="ss">default_warning_apps</span><span·class="p">,</span><span·class="p"·data-group-id="1717683194-5">[</span><span·class="ss">stdlib</span><span·class="p"·data-group-id="1717683194-5">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·26ff45841126071f7d653e319da7f2d8c66275d215aa2eeb6711a0f2857a1d3b·...·]-4">}</span><span·class="w">
276 ······</span><span·class="p"·data-group-id="2784220782-1">}</span><span·class="p">.</span><span·class="w">276 ······</span><span·class="p"·data-group-id="1717683194-1">}</span><span·class="p">.</span><span·class="w">
277 ······</span><span·class="p"·data-group-id="2784220782-6">{</span><span·class="ss">warnings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2784220782-7">[</span><span·class="ss">no_improper_lists</span><span·class="p"·data-group-id="2784220782-7">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·3cfd9b71fa70113df1ad1996330df250102ce3d7e452edb9f49157cc63ee33f9·...·]-6">}</span><span·class="p">.</span><span·class="w">277 ······</span><span·class="p"·data-group-id="1717683194-6">{</span><span·class="ss">warnings</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1717683194-7">[</span><span·class="ss">no_improper_lists</span><span·class="p"·data-group-id="1717683194-7">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·b26057803b640fa36e06bfabf05c39cf6a380d4f212bb78bbc3b06e98992a393·...·]-6">}</span><span·class="p">.</span><span·class="w">
278 ······</span><span·class="p"·data-group-id="2784220782-8">{</span><span·class="ss">add_pathsa</span><span·class="p">,</span><span·class="p"·data-group-id="2784220782-9">[</span><span·class="s">&quot;/users/samwise/potatoes/ebin&quot;</span><span·class="p"·data-group-id="2784220782-9">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·3cfd9b71fa70113df1ad1996330df250102ce3d7e452edb9f49157cc63ee33f9·...·]-8">}</span><span·class="p">.</span><span·class="w">278 ······</span><span·class="p"·data-group-id="1717683194-8">{</span><span·class="ss">add_pathsa</span><span·class="p">,</span><span·class="p"·data-group-id="1717683194-9">[</span><span·class="s">&quot;/users/samwise/potatoes/ebin&quot;</span><span·class="p"·data-group-id="1717683194-9">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·b26057803b640fa36e06bfabf05c39cf6a380d4f212bb78bbc3b06e98992a393·...·]-8">}</span><span·class="p">.</span><span·class="w">
279 ······</span><span·class="p"·data-group-id="2784220782-10">{</span><span·class="ss">add_pathsz</span><span·class="p">,</span><span·class="p"·data-group-id="2784220782-11">[</span><span·class="s">&quot;/users/smeagol/fish/ebin&quot;</span><span·class="p"·data-group-id="2784220782-11">]</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·621e914bc2b7d05b479ba47500aef32bdd4a6b808e1352458e1e4c272f76d405·...·]-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">279 ······</span><span·class="p"·data-group-id="1717683194-10">{</span><span·class="ss">add_pathsz</span><span·class="p">,</span><span·class="p"·data-group-id="1717683194-11">[</span><span·class="s">&quot;/users/smeagol/fish/ebin&quot;</span><span·class="p"·data-group-id="1717683194-11">]</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·51c084fe32059b4401259d46c12c3d7bc66740139999c45e73904983e15cf61b·...·]-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="8265639728-1">(</span><span·class="p"·data-group-id="8265639728-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:·8451a8c948ae9bd8b9e4bae324eea3d66550bc6b53dc7e35926e0f3c38abf237·...·]-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="2546844569-1">(</span><span·class="p"·data-group-id="2546844569-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:·9c693c178191f7cb7b9f9801b4e5ba17cf710cd08e52d1b72421b9cf58fd0576·...·]-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="0063714330-1">(</span><span·class="p"·data-group-id="0063714330-2">[</span><span·class="p"·data-group-id="0063714330-3">{</span><span·class="ss">nowarn_function</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0063714330[·...·truncated·by·diffoscope;·len:·1866,·SHA:·f89797d11ccdff68b9fdd49d997ca2845230f3b02f161e3cf3704372b3cf85da·...·]6-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="6353053804-1">(</span><span·class="p"·data-group-id="6353053804-2">[</span><span·class="p"·data-group-id="6353053804-3">{</span><span·class="ss">nowarn_function</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6353053804[·...·truncated·by·diffoscope;·len:·1866,·SHA:·2b18057b6f51dd417865a872102bdc8bf38ebb367db2a2aa75d0113c7a5581ca·...·]6-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="0760824885-1">(</span><span·class="p"·data-group-id="0760824885-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:·71,·SHA:·e89d17ee99ce975067f787f35645ff5878f63d6e0b9cc27a0a2b68ef6968eeec·...·]5-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="5793141305-1">(</span><span·class="p"·data-group-id="5793141305-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:·71,·SHA:·2ae15cd688179b686e366ce1cc95aa3ee7f9f33ec930e472ffa965ab050a07df·...·]5-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="6902962681-1">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="6902962681-2">(</span><span·class="p"·data-group-id="6902962681-2">)</span><span·class="p"·data-group-id="6902962681-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·aab81e37901062e3c14c8dec8bb8c5dc671ddad4162b604303f00a431ffde01e·...·]-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="2497931812-1">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="2497931812-2">(</span><span·class="p"·data-group-id="2497931812-2">)</span><span·class="p"·data-group-id="2497931812-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·d1f05afc6bee4fd2541ea54c848be1035fbe6444bd843a98fe041ee691ca44ac·...·]-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="6902962681-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="6902962681-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="2497931812-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="2497931812-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="6902962681-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="6902962681-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="2497931812-5">(</span><span·class="n">N</span><span·class="p"·data-group-id="2497931812-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="5106131415-1">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="5106131415-2">(</span><span·class="p"·data-group-id="5106131415-2">)</span><span·class="p"·data-group-id="5106131415-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·453bdb8ca630968684f9852f9df36e49a7a54ff23ff018f376b848a886b8bd59·...·]-3">)</span><span·class="w">218 ··········</span><span·class="p"·data-group-id="0435433720-1">(</span><span·class="nf">integer</span><span·class="p"·data-group-id="0435433720-2">(</span><span·class="p"·data-group-id="0435433720-2">)</span><span·class="p"·data-group-id="0435433720-1">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·5618eabab44df649498ae8ae34d367313de662fe869004a9969d6295f68f4b66·...·]-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="5106131415-4">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="5106131415-5">(</span><span·class="p"·data-group-id="5106131415-5">)</span><span·class="p"·data-group-id="5106131415-4">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·3eb2aba6bdbf7d87e4f0647443f7ccdef150409ba3985c2602db68a2847c9fad·...·]-6">)</span><span·class="w">220 ··········</span><span·class="p"·data-group-id="0435433720-4">(</span><span·class="nf">boolean</span><span·class="p"·data-group-id="0435433720-5">(</span><span·class="p"·data-group-id="0435433720-5">)</span><span·class="p"·data-group-id="0435433720-4">)</span><span·class="w">·</span><span·class="p">-&gt[·...·truncated·by·diffoscope;·len:·156,·SHA:·b3502cde960c691357e1585ad4a022ec1228ace821cf785ee40b37734efefcd5·...·]-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="6616539627-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="6616539627-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·139,·SHA:·7843178306cd4aa4448a91310555e14e5621cc4703dfca9587011e1a5cc32632·...·]-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="7379133773-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="7379133773-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·139,·SHA:·ba6493a8eac48774df252d4192acc5166e12ef02a4be00f6de716ac5c9ae396d·...·]-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="6616539627-3">(</span><span·class="ss">a</span><span·class="p"·data-group-id="6616539627-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6616539627-4">&lt;&lt;</span><span·class="s">&quot;a&quot;</span><span·class="p"·data-group-id="6616539627-4">&gt;&gt;</span><span·class="p">;</span><span·class="w"> 
224 </span><span·class="nf">bar</span><span·class="p"·data-group-id="6616539627-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="6616539627-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6616539627-6">&lt;&lt;</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·196,·SHA:·15827acf3af6a3de00918d504d818029198c6df054d104e751655f75a9fa8229·...·]223 </span><span·class="nf">bar</span><span·class="p"·data-group-id="7379133773-3">(</span><span·class="ss">a</span><span·class="p"·data-group-id="7379133773-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7379133773-4">&lt;&lt;</span><span·class="s">&quo[·...·truncated·by·diffoscope;·len:·116,·SHA:·f2026305c1547f73e903bc45e07163598069a9a0d3f2846938b321fb6e599277·...·]
 224 </span><span·class="nf">bar</span><span·class="p"·data-group-id="7379133773-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="7379133773-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="7379133773-6">&lt;&lt;</span><span·class="s">&quot;b&quot;</span><span·class="p"·data-group-id="7379133773-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="3169751694-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="3169751694-1">)</span><span·class="w">·</span><span·class="p">[·...·truncated·by·diffoscope;·len:·210,·SHA:·79b7ee4532d52376f30526433b5744ef34b64126d7a75c09ff86f02847dbce17·...·]-2">&gt;&gt;</span><span·class="w">227 ··········</span><span·class="p"·data-group-id="3816417230-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="3816417230-1">)</span><span·class="w">·</span><span·class="p">[·...·truncated·by·diffoscope;·len:·210,·SHA:·ccbeb86fe977b8811dc85db8c08b23d2e53ce5c334bb5d83534b7cd5ad735cee·...·]-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="3169751694-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="3169751694-3">)</span><span·class="w">·</span><span·class="p">[·...·truncated·by·diffoscope;·len:·158,·SHA:·9ef3103c4392a8558bbc28d0b240f1001b564a042c1af78ed239d769675548d4·...·]-4">)</span><span·class="w">229 ··········</span><span·class="p"·data-group-id="3816417230-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="3816417230-3">)</span><span·class="w">·</span><span·class="p">[·...·truncated·by·diffoscope;·len:·158,·SHA:·774c327587b88d85c811675ae91686dc8992272ac62d2beba264a4b380778299·...·]-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="5822957856-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="5822957856-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·150,·SHA:·2ad46187cfe7a26ff4661318ea7fde47e8e5b4601103ec825e9e9c7251598570·...·]-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="1909732167-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="1909732167-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·c[·...·truncated·by·diffoscope;·len:·150,·SHA:·d22c8603cfbd0c2a5fd0ebcd726f23f597bf393d546e23e5707046572bf65762·...·]-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="5822957856-3">(</span><span·class="ss">b</span><span·class="p"·data-group-id="5822957856-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="1909732167-3">(</span><span·class="ss">b</span><span·class="p"·data-group-id="1909732167-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="5822957856-4">(</span><span·class="ss">c</span><span·class="p"·data-group-id="5822957856-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="1909732167-4">(</span><span·class="ss">c</span><span·class="p"·data-group-id="1909732167-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="5822957856-5">(</span><span·class="ss">d</span><span·class="p"·data-group-id="5822957856-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="1909732167-5">(</span><span·class="ss">d</span><span·class="p"·data-group-id="1909732167-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
634 B
./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.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-0488DFD4.js"></script>124 <script·src="dist/search_data-6D666814.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>
655 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:·143790·bytes,·number·of·entries:·241 Zip·file·size:·143782·bytes,·number·of·entries:·24
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:56·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:51·mimetype
3 ?rw-r--r--··6.1·unx······720·bx·defN·25-Mar-18·07:56·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······720·bx·defN·25-Mar-18·08:51·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····93844·bx·defN·25-Mar-18·07:56·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····93844·bx·defN·25-Mar-18·08:51·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····2002·bx·defN·25-Mar-18·07:56·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····2002·bx·defN·25-Mar-18·08:51·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-erlang-ESPT6BQV.css6 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-erlang-ESPT6BQV.css
7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-LSJCIYTM.js7 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-LSJCIYTM.js
8 ?rw-r--r--··6.1·unx·····3956·bx·defN·25-Mar-18·07:56·OEBPS/diameterc_cmd.xhtml8 ?rw-r--r--··6.1·unx·····3956·bx·defN·25-Mar-18·08:51·OEBPS/diameterc_cmd.xhtml
9 ?rw-r--r--··6.1·unx······620·bx·defN·25-Mar-18·07:56·OEBPS/diameter_using.xhtml9 ?rw-r--r--··6.1·unx······620·bx·defN·25-Mar-18·08:51·OEBPS/diameter_using.xhtml
10 ?rw-r--r--··6.1·unx····13050·bx·defN·25-Mar-18·07:56·OEBPS/diameter_transport.xhtml10 ?rw-r--r--··6.1·unx····13050·bx·defN·25-Mar-18·08:51·OEBPS/diameter_transport.xhtml
11 ?rw-r--r--··6.1·unx····17167·bx·defN·25-Mar-18·07:56·OEBPS/diameter_tcp.xhtml11 ?rw-r--r--··6.1·unx····17167·bx·defN·25-Mar-18·08:51·OEBPS/diameter_tcp.xhtml
12 ?rw-r--r--··6.1·unx····43142·bx·defN·25-Mar-18·07:56·OEBPS/diameter_soc.xhtml12 ?rw-r--r--··6.1·unx····43142·bx·defN·25-Mar-18·08:51·OEBPS/diameter_soc.xhtml
13 ?rw-r--r--··6.1·unx·····2082·bx·defN·25-Mar-18·07:56·OEBPS/diameter_service.xhtml13 ?rw-r--r--··6.1·unx·····2082·bx·defN·25-Mar-18·08:51·OEBPS/diameter_service.xhtml
14 ?rw-r--r--··6.1·unx····14287·bx·defN·25-Mar-18·07:56·OEBPS/diameter_sctp.xhtml14 ?rw-r--r--··6.1·unx····14287·bx·defN·25-Mar-18·08:51·OEBPS/diameter_sctp.xhtml
15 ?rw-r--r--··6.1·unx····16021·bx·defN·25-Mar-18·07:56·OEBPS/diameter_make.xhtml15 ?rw-r--r--··6.1·unx····16021·bx·defN·25-Mar-18·08:51·OEBPS/diameter_make.xhtml
16 ?rw-r--r--··6.1·unx·····3472·bx·defN·25-Mar-18·07:56·OEBPS/diameter_intro.xhtml16 ?rw-r--r--··6.1·unx·····3472·bx·defN·25-Mar-18·08:51·OEBPS/diameter_intro.xhtml
17 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·07:56·OEBPS/diameter_examples.xhtml17 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·08:51·OEBPS/diameter_examples.xhtml
18 ?rw-r--r--··6.1·unx····26449·bx·defN·25-Mar-18·07:56·OEBPS/diameter_dict.xhtml18 ?rw-r--r--··6.1·unx····26449·bx·defN·25-Mar-18·08:51·OEBPS/diameter_dict.xhtml
19 ?rw-r--r--··6.1·unx····23141·bx·defN·25-Mar-18·07:56·OEBPS/diameter_codec.xhtml19 ?rw-r--r--··6.1·unx····23141·bx·defN·25-Mar-18·08:51·OEBPS/diameter_codec.xhtml
20 ?rw-r--r--··6.1·unx····51180·bx·defN·25-Mar-18·07:56·OEBPS/diameter_app.xhtml20 ?rw-r--r--··6.1·unx····51180·bx·defN·25-Mar-18·08:51·OEBPS/diameter_app.xhtml
21 ?rw-r--r--··6.1·unx···247889·bx·defN·25-Mar-18·07:56·OEBPS/diameter.xhtml21 ?rw-r--r--··6.1·unx···247889·bx·defN·25-Mar-18·08:51·OEBPS/diameter.xhtml
22 ?rw-r--r--··6.1·unx·····3430·bx·defN·25-Mar-18·07:56·OEBPS/content.opf22 ?rw-r--r--··6.1·unx·····3430·bx·defN·25-Mar-18·08:51·OEBPS/content.opf
23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:56·OEBPS/assets/logo.png23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:51·OEBPS/assets/logo.png
24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:56·META-INF/container.xml24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:51·META-INF/container.xml
25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:56·META-INF/com.apple.ibooks.display-options.xml25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:51·META-INF/com.apple.ibooks.display-options.xml
26 24·files,·584502·bytes·uncompressed,·139534·bytes·compressed:··76.1%26 24·files,·584502·bytes·uncompressed,·139526·bytes·compressed:··76.1%
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,·Mar·18·2025·07:56:54,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Mar·18·2025·08:51:14,·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="5916856081-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5916856081-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="4360770628-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="4360770628-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="3140326660-1">(</samp><samp·class="s">&quot;diameter/include/diameter.hrl&quot;</samp><samp·class="p"·data-group-id="3140326660-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="4255102203-1">(</samp><samp·class="s">&quot;diameter/include/diameter.hrl&quot;</samp><samp·class="p"·data-group-id="4255102203-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
    
Offset 576, 20 lines modifiedOffset 576, 20 lines modified
576 ······</div>576 ······</div>
  
577 <p>Invoked·when·a·request·message·is·received·from·a·peer.·The·application·in·which577 <p>Invoked·when·a·request·message·is·received·from·a·peer.·The·application·in·which
578 the·callback·takes·place·(that·is,·the·callback·module·as·configured·with578 the·callback·takes·place·(that·is,·the·callback·module·as·configured·with
579 <a·href="diameter.xhtml#start_service/2"><code·class="inline">diameter:start_service/2</code></a>)·is·determined·by·the·Application·Identifier·in·the579 <a·href="diameter.xhtml#start_service/2"><code·class="inline">diameter:start_service/2</code></a>)·is·determined·by·the·Application·Identifier·in·the
580 header·of·the·incoming·request·message,·the·selected·module·being·the·one·whose580 header·of·the·incoming·request·message,·the·selected·module·being·the·one·whose
581 corresponding·dictionary·declares·itself·as·defining·either·the·application·in581 corresponding·dictionary·declares·itself·as·defining·either·the·application·in
582 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"><samp·class="o">#</samp><samp·class="ss">diameter_packet</samp><samp·class="p"·data-group-id="2274272511-1">{</samp><samp·class="ss">header</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">#</samp><samp·class="ss">diameter_header</samp><samp·class="p"·data-group-id="2274272511-2">{</samp><samp·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·b7057791bfe6323b703f5f7bb5ac2199dfba478bce13286d9fa5e5ed82a41032·...·]-2">}</samp><samp·class="p">,</samp><samp·class="w">582 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"><samp·class="o">#</samp><samp·class="ss">diameter_packet</samp><samp·class="p"·data-group-id="6532850977-1">{</samp><samp·class="ss">header</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">#</samp><samp·class="ss">diameter_header</samp><samp·class="p"·data-group-id="6532850977-2">{</samp><samp·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·cda0b7ec8c38e282768d277a69bdf1d2dfff938d94d1ded3c24596f9f8a9fe3b·...·]-2">}</samp><samp·class="p">,</samp><samp·class="w">
583 ·················</samp><samp·class="ss">avps</samp><samp·class="w">···</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2274272511-3">[</samp><samp·class="o">#</samp><samp·class="ss">diameter_avp</samp><samp·class="p"·data-group-id="2274272511-4">{</samp><samp·class="p"·data-group-id="2274272511-4">}</samp><samp·class="p"·data-group-id="2274272511-3">]</samp><samp·class="p">,</samp><samp·class="w">583 ·················</samp><samp·class="ss">avps</samp><samp·class="w">···</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="6532850977-3">[</samp><samp·class="o">#</samp><samp·class="ss">diameter_avp</samp><samp·class="p"·data-group-id="6532850977-4">{</samp><samp·class="p"·data-group-id="6532850977-4">}</samp><samp·class="p"·data-group-id="6532850977-3">]</samp><samp·class="p">,</samp><samp·class="w">
584 ·················</samp><samp·class="ss">msg</samp><samp·class="w">····</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nf">record</samp><samp·class="p"·data-group-id="2274272511-5">(</samp><samp·class="p"·data-group-id="2274272511-5">)</samp><samp·class="w">·</samp><samp·class="p">|</samp><samp·class="w">·</samp><samp·class="ss">undefined</samp><samp·class="p">,</samp><samp·class="w">584 ·················</samp><samp·class="ss">msg</samp><samp·class="w">····</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nf">record</samp><samp·class="p"·data-group-id="6532850977-5">(</samp><samp·class="p"·data-group-id="6532850977-5">)</samp><samp·class="w">·</samp><samp·class="p">|</samp><samp·class="w">·</samp><samp·class="ss">undefined</samp><samp·class="p">,</samp><samp·class="w">
585 ·················</samp><samp·class="ss">errors</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2274272511-6">[</samp><samp·class="n">Unsigned32</samp><samp·class="p"·data-group-id="2274272511-7">(</samp><samp·class="p"·data-group-id="2274272511-7">)</samp><samp·class="w">·</samp><samp·class="p">|</samp><samp·class="w">·</samp><samp·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·479,·SHA:·85352e68fa37a4259793d51848b0e345477f5f526a70183170c6213222fa6df3·...·]-6">]</samp><samp·class="p">,</samp><samp·class="w">585 ·················</samp><samp·class="ss">errors</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="6532850977-6">[</samp><samp·class="n">Unsigned32</samp><samp·class="p"·data-group-id="6532850977-7">(</samp><samp·class="p"·data-group-id="6532850977-7">)</samp><samp·class="w">·</samp><samp·class="p">|</samp><samp·class="w">·</samp><samp·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·479,·SHA:·f0d2bfb3c3eda260fdcc6866ec79a006c0c523392c00648c88ae0405a3369eb3·...·]-6">]</samp><samp·class="p">,</samp><samp·class="w">
586 ·················</samp><samp·class="ss">bin</samp><samp·class="w">····</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nf">binary</samp><samp·class="p"·data-group-id="2274272511-11">(</samp><samp·class="p"·data-group-id="2274272511-11">)</samp><samp·class="p">,</samp><samp·class="w">586 ·················</samp><samp·class="ss">bin</samp><samp·class="w">····</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nf">binary</samp><samp·class="p"·data-group-id="6532850977-11">(</samp><samp·class="p"·data-group-id="6532850977-11">)</samp><samp·class="p">,</samp><samp·class="w">
587 ·················</samp><samp·class="ss">transport_data</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nf">term</samp><samp·class="p"·data-group-id="2274272511-12">(</samp><samp·class="p"·data-group-id="2274272511-12">)</samp><samp·class="p"·data-group-id="2274272511-1">}</samp></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·the587 ·················</samp><samp·class="ss">transport_data</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nf">term</samp><samp·class="p"·data-group-id="6532850977-12">(</samp><samp·class="p"·data-group-id="6532850977-12">)</samp><samp·class="p"·data-group-id="6532850977-1">}</samp></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
588 relay·application.·Otherwise·it·contains·the·record·representing·the·request·as588 relay·application.·Otherwise·it·contains·the·record·representing·the·request·as
589 outlined·in·<a·href="diameter_dict.xhtml#MESSAGE_RECORDS">diameter_dict(4)</a>.</p><p>The·<code·class="inline">errors</code>·field·specifies·any·results·codes·identifying·errors·found·while589 outlined·in·<a·href="diameter_dict.xhtml#MESSAGE_RECORDS">diameter_dict(4)</a>.</p><p>The·<code·class="inline">errors</code>·field·specifies·any·results·codes·identifying·errors·found·while
590 decoding·the·request.·This·is·used·to·set·Result-Code·and/or·Failed-AVP·in·a590 decoding·the·request.·This·is·used·to·set·Result-Code·and/or·Failed-AVP·in·a
591 returned·answer·unless·the·callback·returns·a·<code·class="inline">#diameter_packet{}</code>·whose591 returned·answer·unless·the·callback·returns·a·<code·class="inline">#diameter_packet{}</code>·whose
592 <code·class="inline">errors</code>·field·is·set·to·either·a·non-empty·list·of·its·own,·in·which·case·this592 <code·class="inline">errors</code>·field·is·set·to·either·a·non-empty·list·of·its·own,·in·which·case·this
593 list·is·used·instead,·or·the·atom·<code·class="inline">false</code>·to·disable·any·setting·of·Result-Code593 list·is·used·instead,·or·the·atom·<code·class="inline">false</code>·to·disable·any·setting·of·Result-Code
594 and·Failed-AVP.·Note·that·the·errors·detected·by·diameter·are·of·the·3xxx·and594 and·Failed-AVP.·Note·that·the·errors·detected·by·diameter·are·of·the·3xxx·and
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="4638756278-1">(</span><span·class="p"·data-group-id="4638756278-2">[</span><span·class="p"·data-group-id="4638756278-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:·235,·SHA:·cd03d4c55bb624f9731008a8e3986d002d86522c15572d2be155da4795139f60·...·]-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="9228198283-1">(</span><span·class="p"·data-group-id="9228198283-2">[</span><span·class="p"·data-group-id="9228198283-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:·235,·SHA:·ee40595f4c692278c8cb191492a67a9887d49675919bbee4097c8269f5655e4b·...·]-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="4638756278-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:·72,·SHA:·fcb628b14ada61c6b17fad6dc4cbfede8fdebaf9850eaf74fe72688c533d7a81·...·]-4">)</span><span·class="p">;</span><span·class="w">233 ····</span><span·class="nf">apply</span><span·class="p"·data-group-id="9228198283-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:·72,·SHA:·c4bd92cf8b058cd0914a5e4d8a81901efbe3ca43ca873718923a8b1d9df2aeb7·...·]-4">)</span><span·class="p">;</span><span·class="w">
234 </span><span·class="nf">eval</span><span·class="p"·data-group-id="4638756278-5">(</span><span·class="p"·data-group-id="4638756278-6">[</span><span·class="p"·data-group-id="4638756278-7">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="4638756278-7">]</span><sp[·...·truncated·by·diffoscope;·len:·187,·SHA:·108a04fae1a52c9b261f2a2a41267564a5aba94eda514440b62da92edde84dba·...·]-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="9228198283-5">(</span><span·class="p"·data-group-id="9228198283-6">[</span><span·class="p"·data-group-id="9228198283-7">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="9228198283-7">]</span><sp[·...·truncated·by·diffoscope;·len:·187,·SHA:·911ae50726db018c1090f5c966395dcdc6f547998b53d2f1f44e25123f5919b8·...·]-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="4638756278-8">(</span><span·class="p"·data-group-id="4638756278-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:·130,·SHA:·0f5c0bcc82de71aaa2b35de7cf03474dfb229e7dccdabe0397ae1ba9e9d86c7a·...·]-8">)</span><span·class="p">;</span><span·class="w">235 ····</span><span·class="nf">eval</span><span·class="p"·data-group-id="9228198283-8">(</span><span·class="p"·data-group-id="9228198283-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:·130,·SHA:·f2ef348f36eae62202c3e7dbb3df126524e3ee7f35125b0292d6ae2c62802d63·...·]-8">)</span><span·class="p">;</span><span·class="w">
236 </span><span·class="nf">eval</span><span·class="p"·data-group-id="4638756278-10">(</span><span·class="p"·data-group-id="4638756278-11">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="4638756278-11">]</span><span·class="p"·data-group-id="4638756278-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="9228198283-10">(</span><span·class="p"·data-group-id="9228198283-11">[</span><span·class="n">F</span><span·class="p">|</span><span·class="n">A</span><span·class="p"·data-group-id="9228198283-11">]</span><span·class="p"·data-group-id="9228198283-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="4638756278-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="4638756278-12">)</span><span·class="p">;</span><span·class="w">237 ····</span><span·class="nf">apply</span><span·class="p"·data-group-id="9228198283-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="9228198283-12">)</span><span·class="p">;</span><span·class="w">
238 </span><span·class="nf">eval</span><span·class="p"·data-group-id="4638756278-13">(</span><span·class="n">F</span><span·class="p"·data-group-id="4638756278-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="9228198283-13">(</span><span·class="n">F</span><span·class="p"·data-group-id="9228198283-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="4638756278-14">(</span><span·class="p"·data-group-id="4638756278-15">[</span><span·class="n">F</span><span·class="p"·data-group-id="4638756278-15">]</span><span·class="p"·data-group-id="4638756278-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="9228198283-14">(</span><span·class="p"·data-group-id="9228198283-15">[</span><span·class="n">F</span><span·class="p"·data-group-id="9228198283-15">]</span><span·class="p"·data-group-id="9228198283-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="5106285256-1">(</span><span·class="p"·data-group-id="5106285256-1">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5106285256-2">{</span><span·class="ss">capabilities_cb</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·233,·SHA:·19084c76fb1b59e1a72e0071e9df07e0b5be6d69c1dcb07eeb2cf9d7c9c85f27·...·]-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="9717515277-1">(</span><span·class="p"·data-group-id="9717515277-1">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="9717515277-2">{</span><span·class="ss">capabilities_cb</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·233,·SHA:·d55d91980f13f0ad1fb23553e84c3121246282cdd52ce46b7fb4f6cd9666d3ae·...·]-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="5106285256-3">{</span><span·class="p"·data-group-id="5106285256-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="9717515277-3">{</span><span·class="p"·data-group-id="9717515277-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="5106285256-4">{</span><span·class="p"·data-group-id="5106285256-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="9717515277-4">{</span><span·class="p"·data-group-id="9717515277-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="5106285256-5">(</span><span·class="p"·data-group-id="5106285256-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="9717515277-5">(</span><span·class="p"·data-group-id="9717515277-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="8746817399-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="8746817399-1">}</span><span·class="w">572 the·same)·over·TCP.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5782110248-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="5782110248-1">}</span><span·class="w">
573 </span><span·class="p"·data-group-id="8746817399-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="87468173[·...·truncated·by·diffoscope;·len:·2,·SHA:·8c1f1046219ddd216a023f792356ddf127fce372a72ec9b4cdac989ee5b0b455·...·]-2">}</span><span·class="w">573 </span><span·class="p"·data-group-id="5782110248-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="57821102[·...·truncated·by·diffoscope;·len:·2,·SHA:·98010bd9270f9b100b6214a21754fd33bdc8d41b2bc9f9dd16ff54d3c34ffd71·...·]-2">}</span><span·class="w">
574 </span><span·class="p"·data-group-id="8746817399-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="8746817399-3">}</span><span·class="w">574 </span><span·class="p"·data-group-id="5782110248-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="5782110248-3">}</span><span·class="w">
575 </span><span·class="p"·data-group-id="8746817399-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="8746817399-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="5782110248-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="5782110248-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.3/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.3/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="2841470422-1">(</span><span·class="nf">transport_ref</span><span·class="p"·data-group-id="2841470422-2">(</span><span·class="p"·data-group-id="2841470422-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"[·...·truncated·by·diffoscope;·len:·797,·SHA:·5e2928f85bb2924f1fb6a7f061d046f3aa1442c6d99022a189603d9c88bf4765·...·]-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="0884750619-1">(</span><span·class="nf">transport_ref</span><span·class="p"·data-group-id="0884750619-2">(</span><span·class="p"·data-group-id="0884750619-2">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">list</span><span·class="p"[·...·truncated·by·diffoscope;·len:·797,·SHA:·a138c761b94e3aa4847884b474d391d18bb75199b5c098f8500d7834921bc42a·...·]-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="2841470422-6">(</span><span·class="nf">list</span><span·class="p"·data-group-id="2841470422-7">(</span><span·class="p"·data-group-id="2841470422-7">)</span><span·class="p"·data-group-id="2841470422-6">)</span><span·class="p">:</span><span·class="w">·······[·...·truncated·by·diffoscope;·len:·547,·SHA:·bc3916d7ad0913d492265217abd09ffc6c7f1a8ff49c906a3c1356150acaaa59·...·]-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="0884750619-6">(</span><span·class="nf">list</span><span·class="p"·data-group-id="0884750619-7">(</span><span·class="p"·data-group-id="0884750619-7">)</span><span·class="p"·data-group-id="0884750619-6">)</span><span·class="p">:</span><span·class="w">·······[·...·truncated·by·diffoscope;·len:·547,·SHA:·53c27f9678a16e7c2d6b0c33765b1ba3dc8c9d2d7839812c6b9c0d815822a65e·...·]-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="2841470422-10">(</span><span·class="p"·data-group-id="2841470422-10">)</span><span·class="p">:</span><span·class="w">···············</span><span·class="nf">fun</span><span·class="p"·data-group-id="2841470422-11">(</span><span·class="n">Ref</span><span·clas[·...·truncated·by·diffoscope;·len:·175,·SHA:·837bea3223d90104ff8c5dc9fbca31aab1bf4b1f5d4ea05e98b6277c79190531·...·]-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="0884750619-10">(</span><span·class="p"·data-group-id="0884750619-10">)</span><span·class="p">:</span><span·class="w">···············</span><span·class="nf">fun</span><span·class="p"·data-group-id="0884750619-11">(</span><span·class="n">Ref</span><span·clas[·...·truncated·by·diffoscope;·len:·175,·SHA:·b689baab2094999e51f8f75e4d564ef0a1eaee61f0ee8cddd86b1cea727ba908·...·]-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="2841470422-12">(</span><span·class="p"·data-group-id="2841470422-12">)</span><span·class="p">:</span><span·class="w">························</span><span·class="nf">fun</span><span·class="p"·data-group-id="2841470422-13">(</span><span·class="p">_</span><sp[·...·truncated·by·diffoscope;·len:·369,·SHA:·7ef8468dd24d6b8e5711d91b760985e2ac0a3d8e010e14d62fc186278e4b0de8·...·]-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="0884750619-12">(</span><span·class="p"·data-group-id="0884750619-12">)</span><span·class="p">:</span><span·class="w">························</span><span·class="nf">fun</span><span·class="p"·data-group-id="0884750619-13">(</span><span·class="p">_</span><sp[·...·truncated·by·diffoscope;·len:·369,·SHA:·829da9fd7a658712c6b6017ab24dc91c4c26bbfe4304074fbb750a8cd912047d·...·]-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="2841470422-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="2841470422-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="0884750619-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="0884750619-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="2841470422-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="2841470422-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="0884750619-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="0884750619-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="2841470422-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="2841470422-17">}</span><span·class="p">:</span><span·class="w">··</span><span·clas[·...·truncated·by·diffoscope;·len:·1025,·SHA:·c31bf01b1f208ea6ba45d5d0171bc101891ca9ea4aca3788e3a8389f9d063a44·...·]-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="0884750619-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="0884750619-17">}</span><span·class="p">:</span><span·class="w">··</span><span·clas[·...·truncated·by·diffoscope;·len:·1025,·SHA:·acbabfed83b18c25c3741a2f32656162ec191337c2021775db3e4efc04472408·...·]-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="6241196306-1">[</span><span·class="p"·data-group-id="6241196306-2">[</span><span·class="p"·data-group-id="6241196306-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:·146,·SHA:·639ab968698b99f6e097a5a3ccd95bab354030c5049d6db3d7365df12e8b201e·...·]-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="6735408844-1">[</span><span·class="p"·data-group-id="6735408844-2">[</span><span·class="p"·data-group-id="6735408844-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:·146,·SHA:·e85f3df415b09f91623468f7d765142b75c284fa6c5a6c1cfc83ea1b417034d2·...·]-3">}</span><span·class="p">,</span><span·class="w">
2527 ··</span><span·class="p"·data-group-id="6241196306-4">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="ss">connect</span><span·class="p"·data-group-id="6241196306-4">}</span><span·class="p">,</span><span·class="w">2527 ··</span><span·class="p"·data-group-id="6735408844-4">{</span><span·class="ss">type</span><span·class="p">,</span><span·class="ss">connect</span><span·class="p"·data-group-id="6735408844-4">}</span><span·class="p">,</span><span·class="w">
2528 ··</span><span·class="p"·data-group-id="6241196306-5">{</span><span·class="ss">options</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-6">[</span><span·class="p"·data-group-id="6241196306-7">{</span><span·class="ss">transport_module</span><span·class="p">,</span><span·class="ss">diameter_tcp</span><span·class="p"·data-group-id="6241196306-7">}</span><span·class="p">,</span><span·class="w"> 
2529 ············</span><span·class="p"·data-group-id="6241196306-8">{</span><span·class="ss">transport_config</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-9">[</span><span·class="p"·data-group-id="6241196306-10">{</span><span·class="ss[·...·truncated·by·diffoscope;·len:·361,·SHA:·9adc9da4ae7f644614f4d447b335052bcb550db06bf9c780861095bf7489f8dd·...·]">}</span><span·class="p">,</span><span·class="w">2528 ··</span><span·class="p"·data-group-id="6735408844-5">{</span><span·class="ss">options</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-6">[</span><span·class="p"·data-group-id="6735408844-7">{</span><span·class="ss">transport_module</[·...·truncated·by·diffoscope;·len:·108,·SHA:·558549081e167167f32ebe65e5b1b87abdd3631ed713dcb26d0bfe5b9df055b1·...·]">}</span><span·class="p">,</span><span·class="w">
 2529 ············</span><span·class="p"·data-group-id="6735408844-8">{</span><span·class="ss">transport_config</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-9">[</span><span·class="p"·data-group-id="6735408844-10">{</span><span·class="ss">ip</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-11">{</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="6735408844-11">}</span><span·class="p"·data-group-id="6735408844-10">}</span><span·class="p">,</span><span·class="w">
2530 ·······························</span><span·class="p"·data-group-id="6241196306-12">{</span><span·class="ss">raddr</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-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><s[·...·truncated·by·diffoscope;·len:·142,·SHA:·d803d9c4568c392b00c2fafa7c5ec914b19f01b52c87d78e99f5df73d2b236bb·...·]-12">}</span><span·class="p">,</span><span·class="w">2530 ·······························</span><span·class="p"·data-group-id="6735408844-12">{</span><span·class="ss">raddr</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-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><s[·...·truncated·by·diffoscope;·len:·142,·SHA:·37099a61db00b4933ea518658f89220b38e01a8f5f15ed4a14f013480b72d0e8·...·]-12">}</span><span·class="p">,</span><span·class="w">
2531 ·······························</span><span·class="p"·data-group-id="6241196306-14">{</span><span·class="ss">rport</span><span·class="p">,</span><span·class="mi">3868</span><span·class="p"·data-group-id="6241196306-14">}</span><span·class="p">,</span><span·class="w">2531 ·······························</span><span·class="p"·data-group-id="6735408844-14">{</span><span·class="ss">rport</span><span·class="p">,</span><span·class="mi">3868</span><span·class="p"·data-group-id="6735408844-14">}</span><span·class="p">,</span><span·class="w">
2532 ·······························</span><span·class="p"·data-group-id="6241196306-15">{</span><span·class="ss">reuseaddr</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="6241196306-15">}</span><span·class="p"·data-group-id="6241196306-9">]</span><span·class="p"·data-group-id="6241196306-[·...·truncated·by·diffoscope;·len:·105,·SHA:·3fb091f04ea8cec4a74e3f41027d7c150f686b8317120665c22512cc6668a13c·...·]-5">}</span><span·class="p">,</span><span·class="w">2532 ·······························</span><span·class="p"·data-group-id="6735408844-15">{</span><span·class="ss">reuseaddr</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="6735408844-15">}</span><span·class="p"·data-group-id="6735408844-9">]</span><span·class="p"·data-group-id="6735408844-[·...·truncated·by·diffoscope;·len:·105,·SHA:·250b6e82699d48f3c57c131c43e0b1d6ece5c74cff8e4449fb95307d5b9567f8·...·]-5">}</span><span·class="p">,</span><span·class="w">
2533 ··</span><span·class="p"·data-group-id="6241196306-16">{</span><span·class="ss">watchdog</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-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:·244,·SHA:·c08340af2622ee21e9f34adea1521dcf010796f7674950affa6aff69870601d7·...·]-16">}</span><span·class="p">,</span><span·class="w">2533 ··</span><span·class="p"·data-group-id="6735408844-16">{</span><span·class="ss">watchdog</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-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:·244,·SHA:·d700516e6b15925608457dbe464c791d52da71c737d3ea1d6545b94cb05d268d·...·]-16">}</span><span·class="p">,</span><span·class="w">
2534 ··</span><span·class="p"·data-group-id="6241196306-18">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-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;</sp[·...·truncated·by·diffoscope;·len:·188,·SHA:·817bc4af56eb7aa14dbd33b48ea959a7bf79e1334bbae248e92161fca5f640e4·...·]-18">}</span><span·class="p">,</span><span·class="w">2534 ··</span><span·class="p"·data-group-id="6735408844-18">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-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;</sp[·...·truncated·by·diffoscope;·len:·188,·SHA:·a570d70c469f19695d7686d7751c59533e1d9888526fc7db2fd5a3686277ef6d·...·]-18">}</span><span·class="p">,</span><span·class="w">
2535 ··</span><span·class="p"·data-group-id="6241196306-20">{</span><span·class="ss">apps</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-21">[</span><span·class="p"·data-group-id="6241196306-22">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">common</[·...·truncated·by·diffoscope;·len:·154,·SHA:·96eeb60bb5340d2e3f8dbf34dcc5f08564c95a9868fbf40c40834627a9f8407c·...·]-20">}</span><span·class="p">,</span><span·class="w">2535 ··</span><span·class="p"·data-group-id="6735408844-20">{</span><span·class="ss">apps</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-21">[</span><span·class="p"·data-group-id="6735408844-22">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">common</[·...·truncated·by·diffoscope;·len:·154,·SHA:·3d2b05fe8a76d6f3ec479dbe61a89ba6da16b8f4bc0bf65b0e4879f5c521c0e0·...·]-20">}</span><span·class="p">,</span><span·class="w">
2536 ··</span><span·class="p"·data-group-id="6241196306-23">{</span><span·class="ss">caps</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-24">[</span><span·class="p"·data-group-id="6241196306-25">{</span><span·class="ss">origin_host</span><span·class="p">,</span><span·class="p"[·...·truncated·by·diffoscope;·len:·264,·SHA:·611c9a4549e15ac6bdcb2c7c885493fba630bace4fe66373fde5a1d5673c9c2e·...·]-25">}</span><span·class="p">,</span><span·class="w">2536 ··</span><span·class="p"·data-group-id="6735408844-23">{</span><span·class="ss">caps</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-24">[</span><span·class="p"·data-group-id="6735408844-25">{</span><span·class="ss">origin_host</span><span·class="p">,</span><span·class="p"[·...·truncated·by·diffoscope;·len:·264,·SHA:·ba2e790a8169773d11e268689c972eb784be556cfb3f84786029bb15d7c78f0b·...·]-25">}</span><span·class="p">,</span><span·class="w">
2537 ·········</span><span·class="p"·data-group-id="6241196306-27">{</span><span·class="ss">origin_realm</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-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="6241196306-28">}</span><span·class="p"·data-group-id="6241196306-27">}</span><span·class="p">,</span><span·class="w"> 
2538 ·········</span><span·class="p"·data-group-id="6241196306-29">{</span><span·class="ss">host_ip_address</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-30">{</span><span·class="p"·data-group-id="6241196306-31">[</span><span·class="p"·data-group-id="6241196306-32">{</span><span·cla[·...·truncated·by·diffoscope;·len:·785,·SHA:·3a6d0747177fd4cde1930656722bb6176ce8dfcff47822fa67d3673a2d11c3d1·...·]">}</span><span·class="p">,</span><span·class="w">2537 ·········</span><span·class="p"·data-group-id="6735408844-27">{</span><span·class="ss">origin_realm</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-28">{</span><span·class="s">&quot;example.com&quot;</span><span·class="p">,</span><span·class="s">&quot;example.com&quot;</span><spa[·...·truncated·by·diffoscope;·len:·94,·SHA:·951a0b0f8942c23b87016e69fe3008fcb79302ffb8d24580a8f37e00a3f02cf9·...·]">}</span><span·class="p">,</span><span·class="w">
 2538 ·········</span><span·class="p"·data-group-id="6735408844-29">{</span><span·class="ss">host_ip_address</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-30">{</span><span·class="p"·data-group-id="6735408844-31">[</span><span·class="p"·data-group-id="6735408844-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="6735408844-32">}</span><span·class="p"·data-group-id="6735408844-31">]</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-33">[</span><span·class="p"·data-group-id="6735408844-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="6735408844-34">}</span><span·class="p"·data-group-id="6735408844-33">]</span><span·class="p"·data-group-id="6735408844-30">}</span><span·class="p"·data-group-id="6735408844-29">}</span><span·class="p">,</span><span·class="w">
2539 ·········</span><span·class="p"·data-group-id="6241196306-35">{</span><span·class="ss">vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-36">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">193</span><span·class="p"·data-group-id="6241196306-36">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·b4c35035c3416c6e778e7eb3e2803c6b6a68a4aeb0b998f6dba2fc1b649f7e09·...·]-35">}</span><span·class="p">,</span><span·class="w">2539 ·········</span><span·class="p"·data-group-id="6735408844-35">{</span><span·class="ss">vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-36">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">193</span><span·class="p"·data-group-id="6735408844-36">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·dc482bf08e3f5be916247344d64d3f6535a404c527b15a0f009eb7ed58504ace·...·]-35">}</span><span·class="p">,</span><span·class="w">
2540 ·········</span><span·class="p"·data-group-id="6241196306-37">{</span><span·class="ss">product_name</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-38">{</span><span·class="s">&quot;Client&quot;</span><span·class="p">,</span><span·class="s">&quot;Server&quot;</span><span·class="p[·...·truncated·by·diffoscope;·len:·81,·SHA:·2e10d0c73c3ad4693ee0a8de9bab221680f8810c0528c5f6b8db2210aa496c72·...·]-37">}</span><span·class="p">,</span><span·class="w">2540 ·········</span><span·class="p"·data-group-id="6735408844-37">{</span><span·class="ss">product_name</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-38">{</span><span·class="s">&quot;Client&quot;</span><span·class="p">,</span><span·class="s">&quot;Server&quot;</span><span·class="p[·...·truncated·by·diffoscope;·len:·81,·SHA:·4fc94ea7b3fb0ee2a12fd243f3c0a534044e87243a5cb475306520ff330b0f4c·...·]-37">}</span><span·class="p">,</span><span·class="w">
2541 ·········</span><span·class="p"·data-group-id="6241196306-39">{</span><span·class="ss">origin_state_id</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-40">{</span><span·class="p"·data-group-id="6241196306-41">[</span><span·class="p"·data-group-id="6241196306-41">]</span><span·cla[·...·truncated·by·diffoscope;·len:·218,·SHA:·dbaf08293e91ea7891687bdc475e424dd3854c6c8f268c1f48deaa86ef72d580·...·]-39">}</span><span·class="p">,</span><span·class="w">2541 ·········</span><span·class="p"·data-group-id="6735408844-39">{</span><span·class="ss">origin_state_id</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-40">{</span><span·class="p"·data-group-id="6735408844-41">[</span><span·class="p"·data-group-id="6735408844-41">]</span><span·cla[·...·truncated·by·diffoscope;·len:·218,·SHA:·28822623340a27ca6f0b71af5fecc907a6853e3c4a7b0722088c1684f4759a2d·...·]-39">}</span><span·class="p">,</span><span·class="w">
2542 ·········</span><span·class="p"·data-group-id="6241196306-43">{</span><span·class="ss">supported_vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-44">{</span><span·class="p"·data-group-id="6241196306-45">[</span><span·class="p"·data-group-id="6241196306-45">]</span><span[·...·truncated·by·diffoscope;·len:·222,·SHA:·7d3eaaf1d9cdfab188f3450d7621741341a04fccf1c1e7d011536e4ea1ac51ec·...·]-43">}</span><span·class="p">,</span><span·class="w">2542 ·········</span><span·class="p"·data-group-id="6735408844-43">{</span><span·class="ss">supported_vendor_id</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-44">{</span><span·class="p"·data-group-id="6735408844-45">[</span><span·class="p"·data-group-id="6735408844-45">]</span><span[·...·truncated·by·diffoscope;·len:·222,·SHA:·eabd74118d38f0b589bc7c6b0461dd7a38c88aeed2344a4c0092bf896dbbaa57·...·]-43">}</span><span·class="p">,</span><span·class="w">
2543 ·········</span><span·class="p"·data-group-id="6241196306-47">{</span><span·class="ss">auth_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-48">{</span><span·class="p"·data-group-id="6241196306-49">[</span><span·class="mi">0</span><span·class="p"·data-group-id="6241196306-49">]</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-50">[</span><span·class="mi">0</span><span·class="p"·data-group-id="6241196306-50">]</span><span·class="p"·data-group-id="6241196306-48">}</span><span·class="p"·data-group-id="6241196306-47">}</span><span·class="p">,</span><span·class="w"> 
2544 ·········</span><span·class="p"·data-group-id="6241196306-51">{</span><span·class="ss">inband_security_id</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-52">{</span><span·class="p"·data-group-id="6241196306-53">[</span><span·class="p"·data-group-id="6241196306-53">]</span><span·[·...·truncated·by·diffoscope;·len:·249,·SHA:·fea7de4381b94f6f0da1d2720719d60eecebe3944b5a7d3c8d7748b9700ccbf1·...·]">}</span><span·class="p">,</span><span·class="w">2543 ·········</span><span·class="p"·data-group-id="6735408844-47">{</span><span·class="ss">auth_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-48">{</span><span·class="p"·data-group-id="6735408844-49">[</span><span·class="mi">0</span><span·class="p"·data-group-id="673[·...·truncated·by·diffoscope;·len:·275,·SHA:·39e27d470c5d2f5a1d007d643ef7cbb1013edc60b5c929985cdd155eabb33ec6·...·]">}</span><span·class="p">,</span><span·class="w">
 2544 ·········</span><span·class="p"·data-group-id="6735408844-51">{</span><span·class="ss">inband_security_id</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-52">{</span><span·class="p"·data-group-id="6735408844-53">[</span><span·class="p"·data-group-id="6735408844-53">]</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-54">[</span><span·class="mi">0</span><span·class="p"·data-group-id="6735408844-54">]</span><span·class="p"·data-group-id="6735408844-52">}</span><span·class="p"·data-group-id="6735408844-51">}</span><span·class="p">,</span><span·class="w">
2545 ·········</span><span·class="p"·data-group-id="6241196306-55">{</span><span·class="ss">acct_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-56">{</span><span·class="p"·data-group-id="6241196306-57">[</span><span·class="p"·data-group-id="6241196306-57">]</span><span[·...·truncated·by·diffoscope;·len:·222,·SHA:·7074ed7da9b6a353da32900858e89efb7c0b04f65beb99aa1aacf513504765c3·...·]-55">}</span><span·class="p">,</span><span·class="w">2545 ·········</span><span·class="p"·data-group-id="6735408844-55">{</span><span·class="ss">acct_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-56">{</span><span·class="p"·data-group-id="6735408844-57">[</span><span·class="p"·data-group-id="6735408844-57">]</span><span[·...·truncated·by·diffoscope;·len:·222,·SHA:·3948462634cf023c63132951aa6895753f928dae720cdba21c3a4c419ac074f5·...·]-55">}</span><span·class="p">,</span><span·class="w">
2546 ·········</span><span·class="p"·data-group-id="6241196306-59">{</span><span·class="ss">vendor_specific_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-60">{</span><span·class="p"·data-group-id="6241196306-61">[</span><span·class="p"·data-group-id="6241196306-61">]<[·...·truncated·by·diffoscope;·len:·233,·SHA:·6f8cdd33d7374f89cfafabd6f4d3d9bcc556b3e7d37033c67c80aac46127727d·...·]-59">}</span><span·class="p">,</span><span·class="w">2546 ·········</span><span·class="p"·data-group-id="6735408844-59">{</span><span·class="ss">vendor_specific_application_id</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-60">{</span><span·class="p"·data-group-id="6735408844-61">[</span><span·class="p"·data-group-id="6735408844-61">]<[·...·truncated·by·diffoscope;·len:·233,·SHA:·4914d01dc6d5cabf03d418d2f176d9ff33bd673cea36989812c9865bcdd78e75·...·]-59">}</span><span·class="p">,</span><span·class="w">
2547 ·········</span><span·class="p"·data-group-id="6241196306-63">{</span><span·class="ss">firmware_revision</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-64">{</span><span·class="p"·data-group-id="6241196306-65">[</span><span·class="p"·data-group-id="6241196306-65">]</span><span·c[·...·truncated·by·diffoscope;·len:·220,·SHA:·5e46ee3c41fa208c5c13d834cb74e552fee13a80d48f9a1b8f6420024e2dc2d8·...·]-63">}</span><span·class="p">,</span><span·class="w">2547 ·········</span><span·class="p"·data-group-id="6735408844-63">{</span><span·class="ss">firmware_revision</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-64">{</span><span·class="p"·data-group-id="6735408844-65">[</span><span·class="p"·data-group-id="6735408844-65">]</span><span·c[·...·truncated·by·diffoscope;·len:·220,·SHA:·9a888f873cfdfadbed23024166d8ec7aeac847997bb5ade36d54b58ac66c5706·...·]-63">}</span><span·class="p">,</span><span·class="w">
2548 ·········</span><span·class="p"·data-group-id="6241196306-67">{</span><span·class="ss">avp</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-68">{</span><span·class="p"·data-group-id="6241196306-69">[</span><span·class="p"·data-group-id="6241196306-69">]</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·314,·SHA:·ac7b76a8c6501a200224d1262e86248a108a049988f68c0b24a064e2280feef0·...·]-23">}</span><span·class="p">,</span><span·class="w">2548 ·········</span><span·class="p"·data-group-id="6735408844-67">{</span><span·class="ss">avp</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-68">{</span><span·class="p"·data-group-id="6735408844-69">[</span><span·class="p"·data-group-id="6735408844-69">]</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·314,·SHA:·4bd4cfda191a8d3db22856d403d0d92ae59eed7178763c83f729cbb448c9ad6f·...·]-23">}</span><span·class="p">,</span><span·class="w">
2549 ··</span><span·class="p"·data-group-id="6241196306-71">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-72">[</span><span·class="p"·data-group-id="6241196306-73">{</span><span·class="ss">owner</span><span·class="p">,</span><span·class="o">&lt;<[·...·truncated·by·diffoscope;·len:·151,·SHA:·9c787e6918491ba02679327a4c9195e2ac36578d1dad639a8c86d47d9daf05aa·...·]-73">}</span><span·class="p">,</span><span·class="w">2549 ··</span><span·class="p"·data-group-id="6735408844-71">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-72">[</span><span·class="p"·data-group-id="6735408844-73">{</span><span·class="ss">owner</span><span·class="p">,</span><span·class="o">&lt;<[·...·truncated·by·diffoscope;·len:·151,·SHA:·5696ae2950c66cd91a550ab9ba00252fb74e33b8ac83b5a3befa029cca33131b·...·]-73">}</span><span·class="p">,</span><span·class="w">
2550 ·········</span><span·class="p"·data-group-id="6241196306-74">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">diameter_tcp</span><span·class="p"·data-group-id="6241196306-74">}</span><span·class="p">,</span><span·class="w">2550 ·········</span><span·class="p"·data-group-id="6735408844-74">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">diameter_tcp</span><span·class="p"·data-group-id="6735408844-74">}</span><span·class="p">,</span><span·class="w">
2551 ·········</span><span·class="p"·data-group-id="6241196306-75">{</span><span·class="ss">socket</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-76">{</span><span·class="p"·data-group-id="6241196306-77">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</s[·...·truncated·by·diffoscope;·len:·304,·SHA:·56c6fa1c2a04f02bb52645617dcae8d71d5f1d7bb512cfdd76ca7855c07cb8c3·...·]-75">}</span><span·class="p">,</span><span·class="w">2551 ·········</span><span·class="p"·data-group-id="6735408844-75">{</span><span·class="ss">socket</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-76">{</span><span·class="p"·data-group-id="6735408844-77">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</s[·...·truncated·by·diffoscope;·len:·304,·SHA:·1a9fc20b9258ab00ed06174a56d260e5afddbbe012dd7bd275a13d4b103df83f·...·]-75">}</span><span·class="p">,</span><span·class="w">
2552 ·········</span><span·class="p"·data-group-id="6241196306-78">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-79">{</span><span·class="p"·data-group-id="6241196306-80">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</spa[·...·truncated·by·diffoscope;·len:·301,·SHA:·bddc83a372c106e61739d5b9f2e3e893dadb63e9a71b752ae2572b2a113381e8·...·]-78">}</span><span·class="p">,</span><span·class="w">2552 ·········</span><span·class="p"·data-group-id="6735408844-78">{</span><span·class="ss">peer</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-79">{</span><span·class="p"·data-group-id="6735408844-80">{</span><span·class="mi">127</span><span·class="p">,</span><span·class="mi">0</spa[·...·truncated·by·diffoscope;·len:·301,·SHA:·c3d549b6225ea85a2a0a156fba679b9a06d2fa3e98ba144cb641fdac0fdcdb24·...·]-78">}</span><span·class="p">,</span><span·class="w">
2553 ·········</span><span·class="p"·data-group-id="6241196306-81">{</span><span·class="nb">statistics</span><span·class="p">,</span><span·class="p"·data-group-id="6241196306-82">[</span><span·class="p"·data-group-id="6241196306-83">{</span><span·class="ss">recv_oct</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·56,·SHA:·056cdd4f8c525d8eb01404f74b65d8b6aed5362b9c1d73434777cb4108dac4b2·...·]-83">}</span><span·class="p">,</span><span·class="w">2553 ·········</span><span·class="p"·data-group-id="6735408844-81">{</span><span·class="nb">statistics</span><span·class="p">,</span><span·class="p"·data-group-id="6735408844-82">[</span><span·class="p"·data-group-id="6735408844-83">{</span><span·class="ss">recv_oct</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·56,·SHA:·5f02380a145c56909ea182a7f782f1d8935a445ea96c0efcd6609b8cde5cbbaf·...·]-83">}</span><span·class="p">,</span><span·class="w">
2554 ······················</span><span·class="p"·data-group-id="6241196306-84">{</span><span·class="ss">recv_cnt</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="6241196306-84">}</span><span·class="p">,</span><span·class="w">2554 ······················</span><span·class="p"·data-group-id="6735408844-84">{</span><span·class="ss">recv_cnt</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="6735408844-84">}</span><span·class="p">,</span><span·class="w">
2555 ······················</span><span·class="p"·data-group-id="6241196306-85">{</span><span·class="ss">recv_max</span><span·class="p">,</span><span·class="mi">148</span><span·class="p"·data-group-id="6241196306-85">}</span><span·class="p">,</span><span·class="w">2555 ······················</span><span·class="p"·data-group-id="6735408844-85">{</span><span·class="ss">recv_max</span><span·class="p">,</span><span·class="mi">148</span><span·class="p"·data-group-id="6735408844-85">}</span><span·class="p">,</span><span·class="w">
2556 ······················</span><span·class="p"·data-group-id="6241196306-86">{</span><span·class="ss">recv_avg</span><span·class="p">,</span><span·class="mi">109</span><span·class="p"·data-group-id="6241196306-86">}</span><span·class="p">,</span><span·class="w">2556 ······················</span><span·class="p"·data-group-id="6735408844-86">{</span><span·class="ss">recv_avg</span><span·class="p">,</span><span·class="mi">109</span><span·class="p"·data-group-id="6735408844-86">}</span><span·class="p">,</span><span·class="w">
2557 ······················</span><span·class="p"·data-group-id="6241196306-87">{</span><span·class="ss">recv_dvi</span><span·class="p">,</span><span·class="mi">19</span><span·class="p"·data-group-id="6241196306-87">}</span><span·class="p">,</span><span·class="w">2557 ······················</span><span·class="p"·data-group-id="6735408844-87">{</span><span·class="ss">recv_dvi</span><span·class="p">,</span><span·class="mi">19</span><span·class="p"·data-group-id="6735408844-87">}</span><span·class="p">,</span><span·class="w">
2558 ······················</span><span·class="p"·data-group-id="6241196306-88">{</span><span·class="ss">send_oct</span><span·class="p">,</span><span·class="mi">836</span><span·class="p"·data-group-id="6241196306-88">}</span><span·class="p">,</span><span·class="w">2558 ······················</span><span·class="p"·data-group-id="6735408844-88">{</span><span·class="ss">send_oct</span><span·class="p">,</span><span·class="mi">836</span><span·class="p"·data-group-id="6735408844-88">}</span><span·class="p">,</span><span·class="w">
2559 ······················</span><span·class="p"·data-group-id="6241196306-89">{</span><span·class="ss">send_cnt</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="6241196306-89">}</span><span·class="p">,</span><span·class="w">2559 ······················</span><span·class="p"·data-group-id="6735408844-89">{</span><span·class="ss">send_cnt</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="6735408844-89">}</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="7922710820-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="7922710820-2">{</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·e12485743a36aa7fb7e80622dcd23247308cff94e6d027e828c2578d3574ff83·...·]-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="2622888394-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="2622888394-2">{</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·afda41c89b8ea802b8bf98f0124fa0ddafb2f775b4567c66191bd32b23a259ea·...·]-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="7922710820-3">[</span><span·class="o">#</span><span·class="ss">diameter_avp</span><span·class="p"·data-group-id="7922710820-4">{</span><span·class="p"·data-group-id="7922710820-4">}</span><span·class="p"·data-group-id="7922710820-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="2622888394-3">[</span><span·class="o">#</span><span·class="ss">diameter_avp</span><span·class="p"·data-group-id="2622888394-4">{</span><span·class="p"·data-group-id="2622888394-4">}</span><span·class="p"·data-group-id="2622888394-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="7922710820-5">(</span><span·class="p"·data-group-id="7922710820-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="2622888394-5">(</span><span·class="p"·data-group-id="2622888394-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="7922710820-6">[</span><span·class="n">Unsigned32</span><span·class="p"·data-group-id="7922710820-7">(</span><span·class="p"·data-group-id="7922710820-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:·628eb4833905933c2f9982aff4fe1eadac92c098be203ce1a32bc9522bf49e6c·...·]-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="2622888394-6">[</span><span·class="n">Unsigned32</span><span·class="p"·data-group-id="2622888394-7">(</span><span·class="p"·data-group-id="2622888394-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:·bd9f16147e5730b59a8d7e4b9ab5783c9fe49dfe8b567d17b22772b987060a01·...·]-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="7922710820-11">(</span><span·class="p"·data-group-id="7922710820-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="2622888394-11">(</span><span·class="p"·data-group-id="2622888394-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="7922710820-12">(</span><span·class="p"·data-group-id="7922710820-12">)</span><span·class="p"·data-group-id="7922710820-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="2622888394-12">(</span><span·class="p"·data-group-id="2622888394-12">)</span><span·class="p"·data-group-id="2622888394-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="8737896893-1">(</span><span·class="s">&quot;diameter/include/diameter.hrl&quot;</span><span·class="p"·data-group-id="8737896893-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="7322514896-1">(</span><span·class="s">&quot;diameter/include/diameter.hrl&quot;</span><span·class="p"·data-group-id="7322514896-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="7454114671-1">(</span><span·class="p"·data-group-id="7454114671-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="7454114671-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·223,·SHA:·f07602501b61ba8857c57c46ed57332d84cdbdb0a603a7d1037cd632fc0867d6·...·]-3">)</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="1346087105-1">(</span><span·class="p"·data-group-id="1346087105-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="1346087105-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·223,·SHA:·9c2044362da84bfe6ef0557d714132ba1c2533d0e755bccac9d396409b788c00·...·]-3">)</span><span·class="w">
313 </span><span·class="n">Integer32</span><span·class="p"·data-group-id="7454114671-4">(</span><span·class="p"·data-group-id="7454114671-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">313 </span><span·class="n">Integer32</span><span·class="p"·data-group-id="1346087105-4">(</span><span·class="p"·data-group-id="1346087105-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="7454114671-5">(</span><span·class="p"·data-group-id="7454114671-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="1346087105-5">(</span><span·class="p"·data-group-id="1346087105-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="7454114671-6">(</span><span·class="p"·data-group-id="7454114671-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="1346087105-6">(</span><span·class="p"·data-group-id="1346087105-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="7454114671-7">(</span><span·class="p"·data-group-id="7454114671-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="1346087105-7">(</span><span·class="p"·data-group-id="1346087105-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="7454114671-8">(</span><span·class="p"·data-group-id="7454114671-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:·b6af7e722436fd4ac532f781ff14a0564282c5668895ce944daf3a7fc4712fc3·...·]-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="1346087105-8">(</span><span·class="p"·data-group-id="1346087105-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:·31832fbafcaa8fc22386cbd8eb48c277e11f351b6f66597d3d5c9ab489ae6e10·...·]-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="7454114671-10">(</span><span·class="p"·data-group-id="7454114671-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:·49b031e09ea567f0189013309859a131b1508ad22c82120790e90e07785ce429·...·]-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="1346087105-10">(</span><span·class="p"·data-group-id="1346087105-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:·fe1670a9f047a0832131096ec3b74f5d11625df6f35eaf6f40086967f2208bd5·...·]-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="7454114671-12">(</span><span·class="p"·data-group-id="7454114671-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="7454114671-13">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·86af631c59bd1e42a129abf9e47c2a81360ffd2b088f7698978eaee246ed6d46·...·]-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="1346087105-12">(</span><span·class="p"·data-group-id="1346087105-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="1346087105-13">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·1713b220010db0c11be6551b33180edac36b43ff096cea3f96312f802ca0ff55·...·]-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="6643915932-1">(</span><span·class="p"·data-group-id="6643915932-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6643915932-2">{</span><span·class="nf">date</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·301,·SHA:·4578c48dc11d1ca8f128765faeba73c693aadf491178cafc12bf750a9c213ee5·...·]-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="2206122420-1">(</span><span·class="p"·data-group-id="2206122420-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2206122420-2">{</span><span·class="nf">date</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·301,·SHA:·e0a0c9c696b0e322353c4e02fb4ac2649f5d1907ce990ecdda2d5704ce645dae·...·]-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="6643915932-5">(</span><span·class="p"·data-group-id="6643915932-5">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6643915932-6">{</span><span·class="n">Year</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·f11981ea13c793d2e25c673c7f7cafe0e013e9807271faf7721043ce312fa11a·...·]-6">}</span><span·class="w">329 ··</span><span·class="nf">date</span><span·class="p"·data-group-id="2206122420-5">(</span><span·class="p"·data-group-id="2206122420-5">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2206122420-6">{</span><span·class="n">Year</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·37a204d70bbe52d5c30fd94101b919da859964dd8ccc2789ceb7b21fe258d7b5·...·]-6">}</span><span·class="w">
330 ··</span><span·class="nf">time</span><span·class="p"·data-group-id="6643915932-7">(</span><span·class="p"·data-group-id="6643915932-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6643915932-8">{</span><span·class="n">Hour</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·166,·SHA:·16f3c22d6fbacbce8071c9ee067bc2ab80035bd5acc3d69c82d2b885ffb0025a·...·]-8">}</span><span·class="w">330 ··</span><span·class="nf">time</span><span·class="p"·data-group-id="2206122420-7">(</span><span·class="p"·data-group-id="2206122420-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2206122420-8">{</span><span·class="n">Hour</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·166,·SHA:·bba190a764b55cb333a906d31b9aa093721b00b8af3356da2252e934fd26eb6f·...·]-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="6643915932-9">(</span><span·class="p"·data-group-id="6643915932-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="2206122420-9">(</span><span·class="p"·data-group-id="2206122420-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="6973288491-1">(</span><span·class="p"·data-group-id="6973288491-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="6973288491-2">(</span><span·class="p"·data-group-id="6973288491-2">)</span><span·class="w"> 
363 </span><span·class="n">QoSFilterRule</span><span·class="p"·data-group-id="6973288491-3">(</span><span·class="p"·data-group-id="6973288491-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:·561d264895241ccd766ec6714fca13dfd4a4b0c3d298c018cad0e412794b7f7e·...·]">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="0900337812-1">(</span><span·class="p"·data-group-id="0[·...·truncated·by·diffoscope;·len:·248,·SHA:·709e5ebcdebf592f36587d88c82e9f6016aae3a425d2493ca9df4d5c8bbbb328·...·]">
 363 </span><span·class="n">QoSFilterRule</span><span·class="p"·data-group-id="0900337812-3">(</span><span·class="p"·data-group-id="0900337812-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="0900337812-4">(</span><span·class="p"·data-group-id="0900337812-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="5389304087-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5389304087-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="7042349201-1">[</span><span·class="o">&lt;</span><span·class="ss">options</span><span·class="o">&gt;</span><span·class="p"·data-group-id="7042349201-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="0115371721-1">(</span><span·class="ss">example</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0115371721-2">[</span><span·class="p"·data-group-id="0115371721-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="0115371721-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0115371721-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="0115371721-4">}</span><span·class="p">,</span><span·class="w"> 
129 ·······</span><span·class="p"·data-group-id="0115371721-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="0115371721-5">}</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·603,·SHA:·c69964fa9a66668bcdb1bea0b819b8fbeae51a973ede0aeda1ada632b7886deb·...·]>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:·288612086c828395347472abb904b70b76cf70913ad2d2ad743db861632889a4·...·]>
 129 ·······</span><span·class="p"·data-group-id="3260786765-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="3260786765-5">}</span><span·class="p"·data-group-id="3260786765-2">]</span><span·class="p"·data-group-id="3260786765-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">
65.9 KB
./usr/share/doc/erlang-doc/html/lib/eldap-1.2.14/doc/html/eldap.epub
1.81 KB
zipinfo {}
    
Offset 1, 13 lines modifiedOffset 1, 13 lines modified
1 Zip·file·size:·33098·bytes,·number·of·entries:·111 Zip·file·size:·33098·bytes,·number·of·entries:·11
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:57·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:51·mimetype
3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Mar-18·07:57·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······716·bx·defN·25-Mar-18·08:51·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····19167·bx·defN·25-Mar-18·07:57·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····19167·bx·defN·25-Mar-18·08:51·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx······936·bx·defN·25-Mar-18·07:57·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx······936·bx·defN·25-Mar-18·08:51·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····88626·bx·defN·25-Mar-18·07:57·OEBPS/eldap.xhtml6 ?rw-r--r--··6.1·unx····88626·bx·defN·25-Mar-18·08:51·OEBPS/eldap.xhtml
7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-erlang-ESPT6BQV.css7 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-erlang-ESPT6BQV.css
8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-LSJCIYTM.js8 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-LSJCIYTM.js
9 ?rw-r--r--··6.1·unx·····1323·bx·defN·25-Mar-18·07:57·OEBPS/content.opf9 ?rw-r--r--··6.1·unx·····1323·bx·defN·25-Mar-18·08:51·OEBPS/content.opf
10 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:57·OEBPS/assets/logo.png10 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:51·OEBPS/assets/logo.png
11 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:57·META-INF/container.xml11 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:51·META-INF/container.xml
12 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:57·META-INF/com.apple.ibooks.display-options.xml12 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:51·META-INF/com.apple.ibooks.display-options.xml
13 11·files,·132100·bytes·uncompressed,·31186·bytes·compressed:··76.4%13 11·files,·132100·bytes·uncompressed,·31186·bytes·compressed:··76.4%
33.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,·Mar·18·2025·07:57: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,·Mar·18·2025·08:51:50,·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
    
Offset 1, 14 lines modifiedOffset 1, 14 lines modified
1 <?xml·version="1.0"·encoding="utf-8"?>1 <?xml·version="1.0"·encoding="utf-8"?>
2 <package·xmlns="http://www.idpf.org/2007/opf"·unique-identifier="project-eldap"·version="3.0">2 <package·xmlns="http://www.idpf.org/2007/opf"·unique-identifier="project-eldap"·version="3.0">
3 ··<metadata·xmlns:dc="http://purl.org/dc/elements/1.1/">3 ··<metadata·xmlns:dc="http://purl.org/dc/elements/1.1/">
4 ····<dc:title>eldap·-·1.2.14</dc:title>4 ····<dc:title>eldap·-·1.2.14</dc:title>
5 ····<dc:identifier·id="project-eldap">urn:uuid:21386416-668d-add3-124b-8ce47fa0edbe</dc:identifier>5 ····<dc:identifier·id="project-eldap">urn:uuid:3846bb89-05ce-e8a4-8add-18f58959c06c</dc:identifier>
6 ····<dc:language>en</dc:language>6 ····<dc:language>en</dc:language>
7 ····<meta·property="dcterms:modified">2025-03-18T07:57:15Z</meta>7 ····<meta·property="dcterms:modified">2025-03-18T08:51:50Z</meta>
8 ··</metadata>8 ··</metadata>
9 ··<manifest>9 ··<manifest>
10 ····<item·id="nav"·href="nav.xhtml"·media-type="application/xhtml+xml"·properties="nav·scripted"/>10 ····<item·id="nav"·href="nav.xhtml"·media-type="application/xhtml+xml"·properties="nav·scripted"/>
11 ····<item·id="cover"·href="title.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>11 ····<item·id="cover"·href="title.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>
12 ····<item·id="notes"·href="notes.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>12 ····<item·id="notes"·href="notes.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>
13 ····<item·id="eldap"·href="eldap.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>13 ····<item·id="eldap"·href="eldap.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>
14 ····<item·id="epub-lsjciytm-js"·href="dist/epub-LSJCIYTM.js"·media-type="text/javascript"/>14 ····<item·id="epub-lsjciytm-js"·href="dist/epub-LSJCIYTM.js"·media-type="text/javascript"/>
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.3/doc/html/erlang.html#t:string/0">string</a>(),951 ·················Dn·::·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0">term</a>().</pre>954 ·················Reason·::·<a·href="../../../../erts-15.2.3/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="8158928884-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="8785861284-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="8158928884-2">[</span><span·class="p"·data-group-id="8158928884-3">{</span><span·class="s">&quot;objectclass&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8158928884-4">[</span><span·class="s">&quot;person&quot;<[·...·truncated·by·diffoscope;·len:·98,·SHA:·a936b83d8607aae620af9d20b16984e38af44c3f8316fde875bd0e66823c4ee0·...·]84-3">}</span><span·class="p">,</span><span·class="w">958 ·······</span><span·class="p"·data-group-id="8785861284-2">[</span><span·class="p"·data-group-id="8785861284-3">{</span><span·class="s">&quot;objectclass&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8785861284-4">[</span><span·class="s">&quot;person&quot;<[·...·truncated·by·diffoscope;·len:·98,·SHA:·257abf751001ab2c4aa4e0695586f15aff2033a93d12c16dadcbc3616227233e·...·]84-3">}</span><span·class="p">,</span><span·class="w">
959 ········</span><span·class="p"·data-group-id="8158928884-5">{</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8158928884-6">[</span><span·class="s">&quot;Bill·Valentine&quot;</span><span·class="p"·data-group-id="8158928884-6">]</[·...·truncated·by·diffoscope;·len:·44,·SHA:·1d69ca4bb45683c0752b544d513df44d9d8887cb27c57cc2580d05a939f8c673·...·]84-5">}</span><span·class="p">,</span><span·class="w">959 ········</span><span·class="p"·data-group-id="8785861284-5">{</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8785861284-6">[</span><span·class="s">&quot;Bill·Valentine&quot;</span><span·class="p"·data-group-id="8785861284-6">]</[·...·truncated·by·diffoscope;·len:·44,·SHA:·f88aacfcddf51918e133ac7c131ba1be8aa97b84e9cad775505e2b9c69603406·...·]84-5">}</span><span·class="p">,</span><span·class="w">
960 ········</span><span·class="p"·data-group-id="8158928884-7">{</span><span·class="s">&quot;sn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8158928884-8">[</span><span·class="s">&quot;Valentine&quot;</span><span·class="p"·data-group-id="8158928884-8">]</span>[·...·truncated·by·diffoscope;·len:·39,·SHA:·b8126460b5072edf7791031225342f9b4adb231a3261c9c0e30b9145053326c0·...·]84-7">}</span><span·class="p">,</span><span·class="w">960 ········</span><span·class="p"·data-group-id="8785861284-7">{</span><span·class="s">&quot;sn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8785861284-8">[</span><span·class="s">&quot;Valentine&quot;</span><span·class="p"·data-group-id="8785861284-8">]</span>[·...·truncated·by·diffoscope;·len:·39,·SHA:·9e6f5479ca9c211ccf63179bdf28856f228d272372536f844263a63e3463f350·...·]84-7">}</span><span·class="p">,</span><span·class="w">
961 ········</span><span·class="p"·data-group-id="8158928884-9">{</span><span·class="s">&quot;telephoneNumber&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8158928884-10">[</span><span·class="s">&quot;545·555·00&quot;</span><span·class="p"·data-group-id="8158928[·...·truncated·by·diffoscope;·len:·108,·SHA:·ec01a47d8e9d7b52b469b97feaa7033fdc56aabce371a70aaba6ad40b6d1a0d7·...·]84-2">]</span><span·class="w">961 ········</span><span·class="p"·data-group-id="8785861284-9">{</span><span·class="s">&quot;telephoneNumber&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8785861284-10">[</span><span·class="s">&quot;545·555·00&quot;</span><span·class="p"·data-group-id="8785861[·...·truncated·by·diffoscope;·len:·108,·SHA:·9763deac32b7e38b46d50502f229211e852e8ec8ead4e9a9be57c690da4b4759·...·]84-2">]</span><span·class="w">
962 ·····</span><span·class="p"·data-group-id="8158928884-1">)</span></code></pre>962 ·····</span><span·class="p"·data-group-id="8785861284-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.3/doc/html/erlang.html#t:string/0">string</a>()}·|1250 ·································[{matchingRule,·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>()}·|
1251 ··································{type,·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>()}·|1251 ··································{type,·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>()}·|
1252 ··································{dnAttributes,·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:boolean/0">boolean</a>()}].</pre>1252 ··································{dnAttributes,·<a·href="../../../../erts-15.2.3/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="2664875132-1">(</span><span·class="s">&quot;Bar&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2664875132-2">[</span><span·class="p"·data-group-id="2664875132-3">{</span><span·class="ss">type</span><span·class="p[·...·truncated·by·diffoscope;·len:·457,·SHA:·0bb09783602245401a871dcde34d4595a9d83463f5b5c1f09f39f34bf1947a15·...·]-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="6203743717-1">(</span><span·class="s">&quot;Bar&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6203743717-2">[</span><span·class="p"·data-group-id="6203743717-3">{</span><span·class="ss">type</span><span·class="p[·...·truncated·by·diffoscope;·len:·457,·SHA:·b130075337bad5cf44e261a6412c1d596cc3530783a63c3c259af377d7a86439·...·]-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.3/doc/html/erlang.html#t:string/0">string</a>(),1453 ····················Dn·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>(),
1454 ····················ModifyOps·::·[<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>()],1454 ····················ModifyOps·::·[<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0">term</a>().</pre>1456 ····················Reason·::·<a·href="../../../../erts-15.2.3/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="3127449043-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="6353089327-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="3127449043-2">[</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">mod_replace</span><span·class="p"·data-group-id="3127449043-3">(</span><span·class="s">&quot;telephoneNumber&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3127449043-4">[</span><span·class="s">&quot;555·555·00&quot;</span><span·class="p"·data-group-id="3127449043-4">]</span><span·class="p"·data-group-id="3127449043-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="3127449043-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:·9133369e3383b1f1b49ea23217cbf65b2f5cc146b2f5c102030e8e0da7306fce·...·]>1459 ·········</span><span·class="p"·data-group-id="6353089327-2">[</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">mod_replace</span><span·class="p"·data-group-id="6353089327-3">(</span><span·class="s">&quot;telephoneNumber&quot;</s[·...·truncated·by·diffoscope;·len:·295,·SHA:·07473d3cf830e30005e8315b2eee5a94c0633d2073f1e38e5831645a6a6b14ec·...·]>
 1460 »       ··</span><span·class="nc">eldap</span><span·class="p">:</span><span·class="nf">mod_add</span><span·class="p"·data-group-id="6353089327-5">(</span><span·class="s">&quot;description&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6353089327-6">[</span><span·class="s">&quot;LDAP·Hacker&quot;</span><span·class="p"·data-group-id="6353089327-6">]</span><span·class="p"·data-group-id="6353089327-5">)</span><span·class="w">·</span><span·class="p"·data-group-id="6353089327-2">]</span><span·class="p"·data-group-id="6353089327-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.3/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.3/doc/html/erlang.html#t:binary/0">binary</a>()}
1758 ······························when·PageSize·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:integer/0">integer</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>().</pre>1758 ······························when·PageSize·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:integer/0">integer</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.3/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="2968161760-1">(</span><span·class="mi">50</span><span·class="p"·data-group-id="2968161760-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="8896554568-1">(</span><span·class="mi">50</span><span·class="p"·data-group-id="8896554568-1">)</span><span·class="p">,</span><span·class="w">
1762 </span><span·class="p"·data-group-id="2968161760-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="2968161760-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·727,·SHA:·9975c0d62dc3c75779f744cd78698497fcea79677eba131e5f48a517c4f6e16b·...·]-3">)</span><span·class="p">,</span></code></pre>1762 </span><span·class="p"·data-group-id="8896554568-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="8896554568-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·727,·SHA:·b819817014d5a70ae69f51de7a09fd279a914793d2a431ac0a57b524d94c97c8·...·]-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.3/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.3/doc/html/erlang.html#t:binary/0">binary</a>()}
1790 ······························when·PageSize·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:integer/0">integer</a>(),·Cookie·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>().</pre>1790 ······························when·PageSize·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:integer/0">integer</a>(),·Cookie·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>(),·ControlOID·::·<a·href="../../../../erts-15.2.3/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="6640959720-1">(</span><span·class="n">PageSize</span><span·class="p"·data-group-id="6640959720-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="2009492717-1">(</span><span·class="n">PageSize</span><span·class="p"·data-group-id="2009492717-1">)</span><span·class="p">,</span><span·class="w">
1795 </span><span·class="p"·data-group-id="6640959720-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="6640959720-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·729,·SHA:·d1ba9508a9965b1537875dcf6466ac6201e9089534c0c6700097d461f37e910f·...·]-3">)</span><span·class="p">,</span><span·class="w">1795 </span><span·class="p"·data-group-id="2009492717-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="2009492717-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·729,·SHA:·a418048f630eaba4c0a1a36d1cd5d651b14956a2492f74ab348ec62c807af964·...·]-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="6640959720-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="6640959720-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·222,·SHA:·7070b7f4b00f6681f86a263275dd61f3fd36f91e9c856c23d5a0afadf7786928·...·]-8">)</span><span·class="p">,</span><span·class="w">1797 </span><span·class="p"·data-group-id="2009492717-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="2009492717-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·222,·SHA:·474a5221733ddee2b5969a8e20e5f0d0e5a7bdee4cb5e08e120d8a251a15b9b3·...·]-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="6640959720-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="6640959720-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="2009492717-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="2009492717-9">)</span><span·class="p">,</span><span·class="w">
1799 </span><span·class="p"·data-group-id="6640959720-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="6640959720-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·790,·SHA:·9e43556cfe7a5e63e405a5041e4dc93f59637fa770acd6f842eeaf7e5fee930b·...·]-11">)</span><span·class="p">,</span><span·class="w">1799 </span><span·class="p"·data-group-id="2009492717-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="2009492717-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·790,·SHA:·de81cda5b9b06c95208391e7a461d7c6f20651bda56d2e44ab5960eeb6936bdd·...·]-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.3/doc/html/erlang.html#t:term/0">term</a>().</pre>1909 ····················Reason·::·<a·href="../../../../erts-15.2.3/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="7284054466-1">(</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7284054466-2">[</span><span·class="p"·data-group-id="7284054466-3">{</span><span·class="ss">any</span><span·class="p">[·...·truncated·by·diffoscope;·len:·191,·SHA:·325e6fb2fa710a8c6bb11837741ad3657e5a1f078652a818129845465f2430cd·...·]-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="0001313804-1">(</span><span·class="s">&quot;cn&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0001313804-2">[</span><span·class="p"·data-group-id="0001313804-3">{</span><span·class="ss">any</span><span·class="p">[·...·truncated·by·diffoscope;·len:·191,·SHA:·58cf38391dc37098ba5a56b32a31dbde222c12f95a965d5d19540749efd6f682·...·]-1">)</span><span·class="p">,</span><span·class="w">
1914 ··</span><span·class="nf">search</span><span·class="p"·data-group-id="7284054466-4">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7284054466-5">[</span><span·class="p"·data-group-id="7284054466-6">{</span><span·class="ss">base</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·865,·SHA:·b72c88a72aaedb2ca634bfbd631b12e8e4ac9e0a21654c2bd81f47595c95ca39·...·]-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="0001313804-4">(</span><span·class="n">Handle</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0001313804-5">[</span><span·class="p"·data-group-id="0001313804-6">{</span><span·class="ss">base</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·865,·SHA:·df6763d8756d79e16785fd432a4a8a5fb7e4ae99519d09ccd8a4e076bbb0f142·...·]-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="9702858361-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="9702858361-2">[</span><s[·...·truncated·by·diffoscope;·len:·321,·SHA:·d0985d7dda4e34a338501af604ef491c3faea61c94aea7fa18872ec9e98075a8·...·]-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="9508372796-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="9508372796-2">[</span><s[·...·truncated·by·diffoscope;·len:·321,·SHA:·b1c3ba1ac503ade65bd2968b01b94d4bb3ee7859f70621747a1a54d5f4444cf5·...·]-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="9702858361-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="9702858361-5">[</span[·...·truncated·by·diffoscope;·len:·342,·SHA:·9032e84174eaf33b282aafc85062fed722369acc795531d792b6f580077884cd·...·]-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="9508372796-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="9508372796-5">[</span[·...·truncated·by·diffoscope;·len:·342,·SHA:·e8196495fc7dd7299704c1449104725bfee293b47ecd72c92dbbd20211db25b6·...·]-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">
64.7 KB
./usr/share/doc/erlang-doc/html/lib/erl_interface-5.5.2/doc/html/erl_interface.epub
2.41 KB
zipinfo {}
    
Offset 1, 17 lines modifiedOffset 1, 17 lines modified
1 Zip·file·size:·84948·bytes,·number·of·entries:·151 Zip·file·size:·84948·bytes,·number·of·entries:·15
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:54·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:47·mimetype
3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Mar-18·07:54·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Mar-18·08:47·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx···105507·bx·defN·25-Mar-18·07:54·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx···105507·bx·defN·25-Mar-18·08:47·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1261·bx·defN·25-Mar-18·07:54·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1261·bx·defN·25-Mar-18·08:47·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····16997·bx·defN·25-Mar-18·07:54·OEBPS/erl_call_cmd.xhtml6 ?rw-r--r--··6.1·unx····16997·bx·defN·25-Mar-18·08:47·OEBPS/erl_call_cmd.xhtml
7 ?rw-r--r--··6.1·unx····21296·bx·defN·25-Mar-18·07:54·OEBPS/ei_users_guide.xhtml7 ?rw-r--r--··6.1·unx····21296·bx·defN·25-Mar-18·08:47·OEBPS/ei_users_guide.xhtml
8 ?rw-r--r--··6.1·unx·····6279·bx·defN·25-Mar-18·07:54·OEBPS/ei_global.xhtml8 ?rw-r--r--··6.1·unx·····6279·bx·defN·25-Mar-18·08:47·OEBPS/ei_global.xhtml
9 ?rw-r--r--··6.1·unx····67143·bx·defN·25-Mar-18·07:54·OEBPS/ei_connect.xhtml9 ?rw-r--r--··6.1·unx····67143·bx·defN·25-Mar-18·08:47·OEBPS/ei_connect.xhtml
10 ?rw-r--r--··6.1·unx····68130·bx·defN·25-Mar-18·07:54·OEBPS/ei.xhtml10 ?rw-r--r--··6.1·unx····68130·bx·defN·25-Mar-18·08:47·OEBPS/ei.xhtml
11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:54·OEBPS/dist/epub-erlang-ESPT6BQV.css11 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:47·OEBPS/dist/epub-erlang-ESPT6BQV.css
12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:54·OEBPS/dist/epub-LSJCIYTM.js12 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:47·OEBPS/dist/epub-LSJCIYTM.js
13 ?rw-r--r--··6.1·unx·····1948·bx·defN·25-Mar-18·07:54·OEBPS/content.opf13 ?rw-r--r--··6.1·unx·····1948·bx·defN·25-Mar-18·08:47·OEBPS/content.opf
14 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:54·OEBPS/assets/logo.png14 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:47·OEBPS/assets/logo.png
15 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:54·META-INF/container.xml15 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:47·META-INF/container.xml
16 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:54·META-INF/com.apple.ibooks.display-options.xml16 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:47·META-INF/com.apple.ibooks.display-options.xml
17 15·files,·310623·bytes·uncompressed,·82344·bytes·compressed:··73.5%17 15·files,·310623·bytes·uncompressed,·82344·bytes·compressed:··73.5%
56.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,·Mar·18·2025·07:54:32,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Mar·18·2025·08:47:36,·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="3815407299-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="3815407299-2">[</span><[·...·truncated·by·diffoscope;·len:·322,·SHA:·908674ff2d18dd127a94ff73341c971d0ce62a4ffc600ba11cb75920024e7c6d·...·]-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="5673773624-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="5673773624-2">[</span><[·...·truncated·by·diffoscope;·len:·322,·SHA:·fae6a114326aace4868c15e9b7619b32a80dc369d57ba8a338ff4f64a5d33030·...·]-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="3815407299-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="3815407299-5">[</spa[·...·truncated·by·diffoscope;·len:·343,·SHA:·9ffd5cecef8596f163b14e58f0fbf520658c76dfed5a87e5cb4a1c00182f48d3·...·]-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="5673773624-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="5673773624-5">[</spa[·...·truncated·by·diffoscope;·len:·343,·SHA:·0c7441e23d7a762534523ec1ad3f8f83121148421b70c48194b80a082ec053fc·...·]-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
626 B
./usr/share/doc/erlang-doc/html/lib/et-1.7.1/doc/html/.build
    
Offset 26, 15 lines modifiedOffset 26, 15 lines modified
26 dist/lato-latin-300-normal-YUMVEFOL.woff226 dist/lato-latin-300-normal-YUMVEFOL.woff2
27 dist/lato-latin-400-normal-W7754I4D.woff227 dist/lato-latin-400-normal-W7754I4D.woff2
28 dist/lato-latin-700-normal-2XVSBPG4.woff228 dist/lato-latin-700-normal-2XVSBPG4.woff2
29 dist/lato-latin-ext-300-normal-VPGGJKJL.woff229 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
30 dist/lato-latin-ext-400-normal-N27NCBWW.woff230 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
31 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff231 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
32 dist/remixicon-NKANDIL5.woff232 dist/remixicon-NKANDIL5.woff2
33 dist/search_data-C01CA0BB.js33 dist/search_data-07FF68FB.js
34 dist/sidebar_items-639C3385.js34 dist/sidebar_items-639C3385.js
35 et.html35 et.html
36 et_collector.html36 et_collector.html
37 et_desc.html37 et_desc.html
38 et_examples.html38 et_examples.html
39 et_intro.html39 et_intro.html
40 et_selector.html40 et_selector.html
447 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:·302543·bytes,·number·of·entries:·29
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:56·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:51·mimetype
3 ?rw-r--r--··6.1·unx······708·bx·defN·25-Mar-18·07:56·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······708·bx·defN·25-Mar-18·08:51·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····20297·bx·defN·25-Mar-18·07:56·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····20297·bx·defN·25-Mar-18·08:51·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1427·bx·defN·25-Mar-18·07:56·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1427·bx·defN·25-Mar-18·08:51·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····15128·bx·defN·25-Mar-18·07:56·OEBPS/et_viewer.xhtml6 ?rw-r--r--··6.1·unx····15128·bx·defN·25-Mar-18·08:51·OEBPS/et_viewer.xhtml
7 ?rw-r--r--··6.1·unx····39785·bx·defN·25-Mar-18·07:56·OEBPS/et_tutorial.xhtml7 ?rw-r--r--··6.1·unx····39785·bx·defN·25-Mar-18·08:51·OEBPS/et_tutorial.xhtml
8 ?rw-r--r--··6.1·unx····14495·bx·defN·25-Mar-18·07:56·OEBPS/et_selector.xhtml8 ?rw-r--r--··6.1·unx····14495·bx·defN·25-Mar-18·08:51·OEBPS/et_selector.xhtml
9 ?rw-r--r--··6.1·unx·····3893·bx·defN·25-Mar-18·07:56·OEBPS/et_intro.xhtml9 ?rw-r--r--··6.1·unx·····3893·bx·defN·25-Mar-18·08:51·OEBPS/et_intro.xhtml
10 ?rw-r--r--··6.1·unx····94737·bx·defN·25-Mar-18·07:56·OEBPS/et_examples.xhtml10 ?rw-r--r--··6.1·unx····94737·bx·defN·25-Mar-18·08:51·OEBPS/et_examples.xhtml
11 ?rw-r--r--··6.1·unx····46399·bx·defN·25-Mar-18·07:56·OEBPS/et_desc.xhtml11 ?rw-r--r--··6.1·unx····46399·bx·defN·25-Mar-18·08:51·OEBPS/et_desc.xhtml
12 ?rw-r--r--··6.1·unx····51100·bx·defN·25-Mar-18·07:56·OEBPS/et_collector.xhtml12 ?rw-r--r--··6.1·unx····51100·bx·defN·25-Mar-18·08:51·OEBPS/et_collector.xhtml
13 ?rw-r--r--··6.1·unx····16970·bx·defN·25-Mar-18·07:56·OEBPS/et.xhtml13 ?rw-r--r--··6.1·unx····16970·bx·defN·25-Mar-18·08:51·OEBPS/et.xhtml
14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-erlang-ESPT6BQV.css14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-erlang-ESPT6BQV.css
15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-LSJCIYTM.js15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-LSJCIYTM.js
16 ?rw-r--r--··6.1·unx·····3489·bx·defN·25-Mar-18·07:56·OEBPS/content.opf16 ?rw-r--r--··6.1·unx·····3489·bx·defN·25-Mar-18·08:51·OEBPS/content.opf
17 ?rw-r--r--··6.1·unx····13425·bx·defN·25-Mar-18·07:56·OEBPS/assets/sim_trans_write_lock.png17 ?rw-r--r--··6.1·unx····13425·bx·defN·25-Mar-18·08:51·OEBPS/assets/sim_trans_write_lock.png
18 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Mar-18·07:56·OEBPS/assets/sim_trans_move_actor.png18 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Mar-18·08:51·OEBPS/assets/sim_trans_move_actor.png
19 ?rw-r--r--··6.1·unx····18936·bx·defN·25-Mar-18·07:56·OEBPS/assets/sim_trans_mgr_actors.png19 ?rw-r--r--··6.1·unx····18936·bx·defN·25-Mar-18·08:51·OEBPS/assets/sim_trans_mgr_actors.png
20 ?rw-r--r--··6.1·unx····15235·bx·defN·25-Mar-18·07:56·OEBPS/assets/sim_trans_contents_viewer_mgr_actors.png20 ?rw-r--r--··6.1·unx····15235·bx·defN·25-Mar-18·08:51·OEBPS/assets/sim_trans_contents_viewer_mgr_actors.png
21 ?rw-r--r--··6.1·unx····13361·bx·defN·25-Mar-18·07:56·OEBPS/assets/sim_trans_contents_viewer_collector.png21 ?rw-r--r--··6.1·unx····13361·bx·defN·25-Mar-18·08:51·OEBPS/assets/sim_trans_contents_viewer_collector.png
22 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Mar-18·07:56·OEBPS/assets/sim_trans.png22 ?rw-r--r--··6.1·unx····19026·bx·defN·25-Mar-18·08:51·OEBPS/assets/sim_trans.png
23 ?rw-r--r--··6.1·unx····46696·bx·defN·25-Mar-18·07:56·OEBPS/assets/megaco_tracer.png23 ?rw-r--r--··6.1·unx····46696·bx·defN·25-Mar-18·08:51·OEBPS/assets/megaco_tracer.png
24 ?rw-r--r--··6.1·unx····19067·bx·defN·25-Mar-18·07:56·OEBPS/assets/megaco_filter.png24 ?rw-r--r--··6.1·unx····19067·bx·defN·25-Mar-18·08:51·OEBPS/assets/megaco_filter.png
25 ?rw-r--r--··6.1·unx····37915·bx·defN·25-Mar-18·07:56·OEBPS/assets/megaco_collector.png25 ?rw-r--r--··6.1·unx····37915·bx·defN·25-Mar-18·08:51·OEBPS/assets/megaco_collector.png
26 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:56·OEBPS/assets/logo.png26 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:51·OEBPS/assets/logo.png
27 ?rw-r--r--··6.1·unx····19999·bx·defN·25-Mar-18·07:56·OEBPS/assets/live_trans.png27 ?rw-r--r--··6.1·unx····19999·bx·defN·25-Mar-18·08:51·OEBPS/assets/live_trans.png
28 ?rw-r--r--··6.1·unx····23692·bx·defN·25-Mar-18·07:56·OEBPS/assets/coffee_order.png28 ?rw-r--r--··6.1·unx····23692·bx·defN·25-Mar-18·08:51·OEBPS/assets/coffee_order.png
29 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:56·META-INF/container.xml29 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:51·META-INF/container.xml
30 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:56·META-INF/com.apple.ibooks.display-options.xml30 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:51·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,·297245·bytes·compressed:··48.4%
164 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,·Mar·18·2025·07:56: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,·Mar·18·2025·08:51:18,·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.89 KB
OEBPS/content.opf
3.86 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="5694410986-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="5694410986-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1130,·SHA:·76b3272000335bfc0814b1d8a5e06e3b4233d80d9244ff5471e6e3c84cc3d218·...·]-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="0042710402-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="0042710402-1">)</span><span·class="w">·</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·1130,·SHA:·6df8a5cfae858316b3d283f12fd7532afc066e469f3b6993bb7e76abdaba2f4a·...·]-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="5694410986-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="5694410986-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="0042710402-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="0042710402-7">)</span><span·class="gp·unselectable">
143 1&gt;·</span><span·class="p"·data-group-id="5694410986-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="5694410986-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·282,·SHA:·3b4d07f5f9c0cc0645da3d05d5926f3382586d896b4768d2ff2e83525c8bbe6a·...·]-9">)</span><span·class="p">.</span><span·class="w">143 1&gt;·</span><span·class="p"·data-group-id="0042710402-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="0042710402-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·282,·SHA:·8d916eedd13c5422b94546bf201f38e929f385caa1f2fbb4f7297a054bfadfed·...·]-9">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="p"·data-group-id="5694410986-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="5694410986-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="0042710402-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="0042710402-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="8633332411-1">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="8633332411-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="7466553816-1">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-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="8633332411-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="7466553816-9">)</span><span·class="p">.</span><span·class="w">
164 </span><span·class="p"·data-group-id="8633332411-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8633332411-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="7466553816-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7466553816-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="8633332411-11">}</span><span·class="p"·data-group-id="8633332411-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="7466553816-11">}</span><span·class="p"·data-group-id="7466553816-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="0216499608-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0216499608-2">(</span><span·class="p"·data-group-id="0216499608-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</s[·...·truncated·by·diffoscope;·len:·540,·SHA:·02123288cb2cc9b72e4557043bfb8eae5ad616c62d07b754c96d51a5dc6ca34f·...·]-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="0924462623-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0924462623-2">(</span><span·class="p"·data-group-id="0924462623-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">mnesia</s[·...·truncated·by·diffoscope;·len:·540,·SHA:·80c8ee1fec63d59180eb958a3f16354950161dce96510507bc08f81921dde223·...·]-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="5272206584-1">(</span><span·class="n">TraceData</span><span·class="p"·data-group-id="5272206584-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:·ceea07b68dcaa81eb1617be942e9ae564031b6b37424046bff20f90d76e8e465·...·]-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="4845961447-1">(</span><span·class="n">TraceData</span><span·class="p"·data-group-id="4845961447-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:·5cfc49448c63ec3314b3d860f5ed17d85e8586966086abd158fa54303001ea57·...·]-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="5272206584-3">(</span><span·class="p"·data-group-id="5272206584-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="4845961447-3">(</span><span·class="p"·data-group-id="4845961447-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="5272206584-4">{</span><span·class="p"·data-group-id="5272206584-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="4845961447-4">{</span><span·class="p"·data-group-id="4845961447-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="5272206584-5">{</span><span·class="p"·data-group-id="5272206584-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="4845961447-5">{</span><span·class="p"·data-group-id="4845961447-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.1/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.1/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="6436431241-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="6436431241-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="6436431241-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·5f9f7d0a9a6ec5c82b2b8fae6894804106251502bc4ceb55b6aca972e8eb4f45·...·]-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="3719517774-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="3719517774-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="3719517774-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·85332d607955a63ee0f2b9d007e17c7c23a1c96187629737d6966bf17cd825c0·...·]-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="6436431241-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="6436431241-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="3719517774-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="3719517774-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="6436431241-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="6436431241-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·323,·SHA:·af6796faac69ca89a66950c67492529273a3bb2451512860c5fd8d26711d9235·...·]-6">)</span><span·class="p">,</span><span·class="w">223 ····</span><span·class="p"·data-group-id="3719517774-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="3719517774-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·323,·SHA:·c0691d346551d60107374ebe038d8261a4b30a5811d9d02f05281449189c2e43·...·]-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="6436431241-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="6436431241-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="3719517774-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="3719517774-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="6436431241-8">[</span><span·class="p"·data-group-id="6436431241-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:·2386aa2406fe4832f4265308d54acc9ffbd0c65c4eb3205adfbaca3fc4496308·...·]-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="3719517774-8">[</span><span·class="p"·data-group-id="3719517774-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:·2c023d04db32cc8f5522d2528bdd61f0565040874055ea7352b7ee6e06c43860·...·]-9">}</span><span·class="p">,</span><span·class="w">
226 ·······························</span><span·class="p"·data-group-id="6436431241-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:·90f2f8cd80f593e9d232cf1ab074f5bcca8b910e743f9f614813c38f3610e607·...·]-10">}</span><span·class="p">,</span><span·class="w">226 ·······························</span><span·class="p"·data-group-id="3719517774-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:·c35f7b0ef9d38360bd5864c130397ca84e7de380383842e85eb346a63dc02cab·...·]-10">}</span><span·class="p">,</span><span·class="w">
227 ·······························</span><span·class="p"·data-group-id="6436431241-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:·04b1cd0996bbe96072e3245cf54721f2062d8a9dae3cd2c40ab3fea26c806f4c·...·]-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="3719517774-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:·f81429e8fa11a6df6e4550356fbbd3df751891c995253963b5ac160694f49bcb·...·]-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="3772073440-3">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3772073440-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:·1267a15243cfd3130eebda91b61b3289c38b86ef5be4ab741a1739005f30172f·...·]-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="5775902026-3">(</span><span·class="n">Collector</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5775902026-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:·748c6de8b39cb03bc546716859572099e8569a46826470e1dc9dd7bc43a6a066·...·]-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="8939722255-1">(</span><span·class="p"·data-group-id="8939722255-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="6027526414-1">(</span><span·class="p"·data-group-id="6027526414-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="8939722255-2">(</span><span·class="p"·data-group-id="8939722255-3">[</span><span·class="p"·data-group-id="8939722255-3">]</span><span·class="p"·data-group-id="8939722255-2">)</span><span·class="p">.</span><span·class="w">137 ····</span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="6027526414-2">(</span><span·class="p"·data-group-id="6027526414-3">[</span><span·class="p"·data-group-id="6027526414-3">]</span><span·class="p"·data-group-id="6027526414-2">)</span><span·class="p">.</span><span·class="w">
  
138 </span><span·class="nf">sim_trans</span><span·class="p"·data-group-id="8939722255-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="8939722255-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="6027526414-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="6027526414-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="8939722255-5">[</span><span·class="p"·data-group-id="8939722255-6">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8939722255-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="8939722255-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="8939722255-6">}</span><span·class="p"·data-group-id="8939722255-5">]</span><span·class="p">,</span><span·class="w"> 
140 ····</span><span·class="p"·data-group-id="8939722255-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="8939722255-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class=[·...·truncated·by·diffoscope;·len:·340,·SHA:·c7225cc66535c8c9c59edd11837a6f89f2c4edca7ae25c8d46fd5fa1d8d6a6ed·...·]</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="6027526414-5">[</span><span·class="p"·data-group-id="6027526414-6">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·520,·SHA:·b7ff82625c22211ace11013ced7ba3ef73276e43a05474410ab9e58bb18f7f7c·...·]</span><span·class="p">,</span><span·class="w">
 140 ····</span><span·class="p"·data-group-id="6027526414-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="6027526414-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="6027526414-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="6027526414-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="8939722255-10">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="8939722255-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="6027526414-10">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-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="8939722255-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="6027526414-18">)</span><span·class="p">,</span><span·class="w">
158 ····</span><span·class="p"·data-group-id="8939722255-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="8939722255-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="6027526414-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="6027526414-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="3622317063-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="3622317063-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="3622317063-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·6ec37bc185ea4401cf42a1ccca3c00cb56f2772392f92e5ea3687a5cb5ffe5c9·...·]-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="8046469725-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="8046469725-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="8046469725-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·ce9248fbacd5fc6cb1164b7b126e6af65074f075082ee05658d8015efec56a40·...·]-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="3622317063-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="3622317063-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="8046469725-3">(</span><span·class="n">A</span><span·class="p"·data-group-id="8046469725-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="3622317063-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="3622317063-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·323,·SHA:·3069d87aa200aa4fb2d4257aa3eaea09e48db566ab8416e9e4365a4bc78f201e·...·]-6">)</span><span·class="p">,</span><span·class="w">167 ····</span><span·class="p"·data-group-id="8046469725-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="8046469725-5">{</span><span·class="ss">from</span>[·...·truncated·by·diffoscope;·len:·323,·SHA:·0eb7d80ab6d81b817f5141d1d9334a2963bf33d9432dc34ee25bd8fa335b1ce4·...·]-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="3622317063-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="3622317063-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="8046469725-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="8046469725-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="3622317063-8">[</span><span·class="p"·data-group-id="3622317063-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:·342905ed5b3150ef39c6309899caa4b4bd219db93a6fda61750035b64af77c3b·...·]-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="8046469725-8">[</span><span·class="p"·data-group-id="8046469725-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:·a34cf49bbd23bac4c71a86189bbb09e0e88641c6ed4af76cbc3d94e7a2f25f3c·...·]-9">}</span><span·class="p">,</span><span·class="w">
170 ·······························</span><span·class="p"·data-group-id="3622317063-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:·3717049c1cce1299296a223de0c948015c38f79e2332a8eee9d0e8c7790c6476·...·]-10">}</span><span·class="p">,</span><span·class="w">170 ·······························</span><span·class="p"·data-group-id="8046469725-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:·f3eef60466ea07be7c1e38e331a3cf8b764f1106d2210d58bead4214f1c99aab·...·]-10">}</span><span·class="p">,</span><span·class="w">
171 ·······························</span><span·class="p"·data-group-id="3622317063-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:·e59a44317c09f9fa281ee875eebbb9e2944a5d205a490e6c6c3b6843d75f751e·...·]-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="8046469725-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:·7bbb19f334a1d85e3443531cae84dc17816720ae11258f5f1510769057703ff0·...·]-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="7614435546-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7614435546-2">(</span><span·class="p"·data-group-id="7614435546-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:·0494b8d01c510d56ca8eaafb2baef8ed3cc2a747ec9e704ddc40787ecb98644b·...·]-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="6774501200-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6774501200-2">(</span><span·class="p"·data-group-id="6774501200-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:·c45f02c720194d67bf046a847318de092421896cd10596d631758a109513a29b·...·]-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="0383943877-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="0383943877-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="2550255183-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="2550255183-7">)</span><span·class="gp·unselectable">
175 1&gt;·</span><span·class="p"·data-group-id="0383943877-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="0383943877-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·282,·SHA:·5dcedad9cfe340de82e1fcb86a9cfedb1ce549e4b34d4ab9ee5614aee442de88·...·]-9">)</span><span·class="p">.</span><span·class="w">175 1&gt;·</span><span·class="p"·data-group-id="2550255183-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="2550255183-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·282,·SHA:·50d2e6fd83f6d3be86f9e367a5115f8271eee852d9cceb4b9eaf853f1f944226·...·]-9">)</span><span·class="p">.</span><span·class="w">
176 </span><span·class="p"·data-group-id="0383943877-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:·430fbc40b5a75192404d16bac7380973383767b63aef5332bdef39494d74fb0e·...·]-11">}</span><span·class="gp·unselectable">176 </span><span·class="p"·data-group-id="2550255183-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:·b7a173d9c03f84a30947f048cc147f43083ab7f7296f80a0fccf61b62962c62d·...·]-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="0383943877-12">(</span><span·class="p"·data-group-id="0383943877-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="2550255183-12">(</span><span·class="p"·data-group-id="2550255183-12">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="0383943877-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0383943877-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="2550255183-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2550255183-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="0383943877-14">}</span><span·class="p"·data-group-id="0383943877-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="2550255183-14">}</span><span·class="p"·data-group-id="2550255183-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="5710964684-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="5710964684-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="5710964684-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·30df34ee3f5515b8db3139c1eae803c68d9f2b32b3aa29020790cee36a65e7eb·...·]-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="4799413663-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="4799413663-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="4799413663-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·703d6e4beeb1393da04957e1c94dc40dee55f4523f679054e2a10b36d93a0274·...·]-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="5710964684-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:·042dcafe1652610b112499196d0cc7417faf88d46d162fcf6c22cc5b7a41937c·...·]-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="4799413663-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:·89912f0f7b53f16badba895a3e561f8586f6685d49c0537af411e2008dacac67·...·]-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
193 ········</span><span·class="p"·data-group-id="5710964684-4">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5710964684-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:·e27b13fccaa4554e739a5918ec5345576802d4a3c4b604ef1ddd6c3ad0cceffb·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 ········</span><span·class="p"·data-group-id="4799413663-4">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4799413663-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:·3cde260504601c35a7ca38b2d721f52eecfeea25be284e334274f26703619be8·...·]-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="5710964684-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:·22cdab9d76cc5e62b9c90472fa285f1189d6f1bff50076939ac933d198b9d25d·...·]-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="4799413663-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:·a6a57e66db910fcaf02cee873c3c75d06f3480a1bf2de580b7c107ac7eb6343e·...·]-7">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
195 ················</span><span·class="p"·data-group-id="5710964684-8">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5710964684-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:·cba311bb4be494728e5a7bb022aeae82df96f4888cf7a21dfeddb6d3d3ead027·...·]-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">195 ················</span><span·class="p"·data-group-id="4799413663-8">{</span><span·class="ss">value</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4799413663-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:·9876f9eadeb74617f56253fd0820c3a0d1160b7f7eaa46eb253189e8ee8f438d·...·]-8">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
196 ····················</span><span·class="p"·data-group-id="5710964684-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="5710964684-12">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·537,·SHA:·de5db14622d29f19774566d77ed4bf591ba39f6580868de99a700d18a63bb5bd·...·]-11">}</span><span·class="p">;</span><span·class="w">196 ····················</span><span·class="p"·data-group-id="4799413663-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="4799413663-12">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·537,·SHA:·5244448cb02bf7622eed0e3fbedc6cbe7b2d2d67a8f3b40f4e5d5b0f5bd430e2·...·]-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="5710964684-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="5710964684-14">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·536,·SHA:·6cf49d30e9178ea297f775fe645fe88b10c36b322cea930bf3242145fd5734ab·...·]-13">}</span><span·class="w">198 ····················</span><span·class="p"·data-group-id="4799413663-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="4799413663-14">{</span><span·class="ss">label</sp[·...·truncated·by·diffoscope;·len:·536,·SHA:·20fb737af67e9debb98d51578f16f9ee7b693fe41d216446b83261a5c0d63405·...·]-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="6119929277-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="6119929277-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="6119929277-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·ab17d99ac3ab8d6235140df72a4d5e81e4c35f3170a6cfb5cd1e71d33a3dc507·...·]-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="7258693854-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="7258693854-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="7258693854-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·3f4bdeaeab0ef541b74345e88016f6a3ee3724e78981f1f686ffa2e7bc5bfacf·...·]-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="6119929277-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="6119929277-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="7258693854-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="7258693854-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="6119929277-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="6119929277-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="7258693854-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="7258693854-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="6119929277-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="6119929277-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="7258693854-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="7258693854-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="6119929277-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="6119929277-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="7258693854-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="7258693854-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="0151514400-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="0151514400-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="0151514400-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·5d51e3d5f706f405c75486574bd5fbe0381bbc6e6fba8b70ea3fcd15d73131f7·...·]-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="8221926047-1">(</span><span·class="n">E</span><span·class="p"·data-group-id="8221926047-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="8221926047-2">(</s[·...·truncated·by·diffoscope;·len:·146,·SHA:·b4e11f009f1b33888d5fa556a6f5b2d931d21b1d90615e2539c44eba961920da·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 ····</span><span·class="p"·data-group-id="0151514400-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:·0214a0e680125d628b675e780faf000a313624c92dcc8856ed57e03e0b005d24·...·]-3">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">223 ····</span><span·class="p"·data-group-id="8221926047-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:·fffea3451630b1ce5632e2c1fa3594b93b7b41c4a511f7b1f809a43415db14d7·...·]-3">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="0151514400-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:·620a3f2ba1dd17870c805116ed9a4a8a24af657f2bc31bbc1d9dc57ad9be23cc·...·]-4">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">224 ····</span><span·class="p"·data-group-id="8221926047-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:·e21b472ac7e9192684aa979366236c4fd66e7232888eea3a724cc207b808034f·...·]-4">)</span><span·class="w">·</span><span·class="nf">and</span><span·class="w">
225 ····</span><span·class="p"·data-group-id="0151514400-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:·379d0e8fc6c8ace4331e949867ca55141f04a02364be1c9396d780582689a038·...·]-5">)</span><span·class="w">·</span><span·class="ow">and</span><span·class="w">225 ····</span><span·class="p"·data-group-id="8221926047-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:·338ba496aab7686a885227c34b71ffb413383f7e295b0349a453855c69b3172f·...·]-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="0151514400-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="0151514400-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="8221926047-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="8221926047-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="4417447142-1">(</span><span·class="p"·data-group-id="4417447142-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="9662116673-1">(</span><span·class="p"·data-group-id="9662116673-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="4417447142-2">(</span><span·class="p"·data-group-id="4417447142-3">[</span><span·class="p"·data-group-id="4417447142-3">]</span><span·class="p"·data-group-id="4417447142-2">)</span><span·class="p">.</span><span·class="w">231 ····</span><span·class="nf">start</span><span·class="p"·data-group-id="9662116673-2">(</span><span·class="p"·data-group-id="9662116673-3">[</span><span·class="p"·data-group-id="9662116673-3">]</span><span·class="p"·data-group-id="9662116673-2">)</span><span·class="p">.</span><span·class="w">
  
232 </span><span·class="nf">start</span><span·class="p"·data-group-id="4417447142-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="4417447142-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="9662116673-4">(</span><span·class="n">ExtraOptions</span><span·class="p"·data-group-id="9662116673-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="4417447142-5">[</span><span·class="p"·data-group-id="4417447142-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="4417447142-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="9662116673-5">[</span><span·class="p"·data-group-id="9662116673-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="9662116673-6">}</span><span·class="p">,</span><span·class="w">
234 ···············</span><span·class="p"·data-group-id="4417447142-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="4417447142-7">}</span><span·class="p">,</span><span·class="w">234 ···············</span><span·class="p"·data-group-id="9662116673-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="9662116673-7">}</span><span·class="p">,</span><span·class="w">
235 ···············</span><span·class="p"·data-group-id="4417447142-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="4417447142-8">}</span><span·class="p">,</span><span·class="w">235 ···············</span><span·class="p"·data-group-id="9662116673-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="9662116673-8">}</span><span·class="p">,</span><span·class="w">
236 ···············</span><span·class="p"·data-group-id="4417447142-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="4417447142-9">}</span><span·class="p">,</span><span·class="w">236 ···············</span><span·class="p"·data-group-id="9662116673-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="9662116673-9">}</span><span·class="p">,</span><span·class="w">
237 ···············</span><span·class="p"·data-group-id="4417447142-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="4417447142-10">}</span><span·class="p"·data-group-id="4417447142-5">]</span><span·class="p">,</span><span·class="w">237 ···············</span><span·class="p"·data-group-id="9662116673-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="9662116673-10">}</span><span·class="p"·data-group-id="9662116673-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="4417447142-11">(</span><span·class="nf">filters</span><span·class="p"·data-group-id="4417447142-12">(</span><span·class="p"·data-group-id="4417447142-12">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">Optio[·...·truncated·by·diffoscope;·len:·158,·SHA:·c8af4132f5b666ee1b3a43f3f94ddec2796a0b1d5b8c8bc06193f355c6a96cfe·...·]-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="9662116673-11">(</span><span·class="nf">filters</span><span·class="p"·data-group-id="9662116673-12">(</span><span·class="p"·data-group-id="9662116673-12">)</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·</span><span·class="n">Optio[·...·truncated·by·diffoscope;·len:·158,·SHA:·03f133876f9879f7f0e9145af5882bcf111babf69d07db74e9cadaf50b26bb81·...·]-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="6979431256-1">(</span><span·class="p"·data-group-id="6979431256-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="8418758149-1">(</span><span·class="p"·data-group-id="8418758149-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ····</span><span·class="p"·data-group-id="6979431256-2">[</span><span·class="p"·data-group-id="6979431256-3">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6979431256-4">{</span><span·class="ss">filter</span><span·class="p"[·...·truncated·by·diffoscope;·len:·113,·SHA:·f0421fac48ceb1033d9917f475570b11126f0a695ce5e5df7f9e5a295cdc0dad·...·]-4">}</span><span·class="p">,</span><span·class="w">240 ····</span><span·class="p"·data-group-id="8418758149-2">[</span><span·class="p"·data-group-id="8418758149-3">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8418758149-4">{</span><span·class="ss">filter</span><span·class="p"[·...·truncated·by·diffoscope;·len:·113,·SHA:·8730cb3bb389ee7454dfac7ef93b6c60cf90482850191d9edba73fc2ca0b06a0·...·]-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="6979431256-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="8418758149-3">}</span><span·class="p">,</span><span·class="w">
242 ·····</span><span·class="p"·data-group-id="6979431256-5">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6979431256-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:·91dd7126e3a492e3de4191e6080eda046bc935420b53bdc9fa59975212c25827·...·]-6">}</span><span·class="p">,</span><span·class="w">242 ·····</span><span·class="p"·data-group-id="8418758149-5">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8418758149-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:·45b2c11b7064a7fe7733cea0cbfbf18e349c82c380d6d8262269bd8007e9ec33·...·]-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="6979431256-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="8418758149-5">}</span><span·class="p">,</span><span·class="w">
244 ·····</span><span·class="p"·data-group-id="6979431256-7">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6979431256-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:·0c358050b5a6ba1b79d95c6615f24dabc3e43caf7e494be3ee3a9c4eba93567b·...·]-8">}</span><span·class="p">,</span><span·class="w">244 ·····</span><span·class="p"·data-group-id="8418758149-7">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8418758149-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:·783727be6d5dfd77c692e84bb6b7e6c2ab483deb6a0a3f59bc06e0e79e9c66d4·...·]-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="6979431256-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="8418758149-7">}</span><span·class="p">,</span><span·class="w">
246 ·····</span><span·class="p"·data-group-id="6979431256-9">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6979431256-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:·60c09a365dba14faf7e7162acd1c0b0b4414dd98e5043e43667e3b38cf7b5426·...·]-10">}</span><span·class="p">,</span><span·class="w">246 ·····</span><span·class="p"·data-group-id="8418758149-9">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8418758149-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:·91023946cc022c8a9945496c8a0a207159976690f7e8f3ad0518d95b84e18837·...·]-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="6979431256-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="8418758149-9">}</span><span·class="p">,</span><span·class="w">
248 ·····</span><span·class="p"·data-group-id="6979431256-11">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6979431256-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:·af761fd83495024ce7229903b9a9e5901ced2143f924c193d316356382104961·...·]-12">}</span><span·class="p">,</span><span·class="w">248 ·····</span><span·class="p"·data-group-id="8418758149-11">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8418758149-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:·d4c1408d69df7bf85cbcd885f82da4e4c970f7c66ff07f5f0c317170a058ec11·...·]-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="6979431256-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="8418758149-11">}</span><span·class="p">,</span><span·class="w">
250 ·····</span><span·class="p"·data-group-id="6979431256-13">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6979431256-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:·53e985bf0e913bb08a4f36adbf0f7c17c09950a5d6b520007fa2a03b1a2bd499·...·]-14">}</span><span·class="p">,</span><span·class="w">250 ·····</span><span·class="p"·data-group-id="8418758149-13">{</span><span·class="ss">dict_insert</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8418758149-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:·c097f4ca44ce50812000081faccbc09f236b7875537048e03ff4667a97e462c9·...·]-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="6979431256-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="8418758149-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="0346347275-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="0346347275-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·489,·SHA:·5553f40e6a918eb53e2dd9d9eb6cbf52d7d403d43ec3ba28f2c06f25d69e4a0e·...·]-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="6275025966-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="6275025966-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·489,·SHA:·fe035a9c6d24112cadf0d6000c24a52bb40a764b7fc5e0aa9cae0ccf58f6b837·...·]-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="0346347275-5">(</span><span·class="n">ViewerPid</span><span·class="p"·data-group-id="0346347275-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="6275025966-5">(</span><span·class="n">ViewerPid</span><span·class="p"·data-group-id="6275025966-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="7569208223-1">(</span><span·class="ss">et_display_demo</span><span·class="p"·data-group-id="7569208223-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="6841769747-1">(</span><span·class="ss">et_display_demo</span><span·class="p"·data-group-id="6841769747-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="7569208223-2">(</span><span·class="p"·data-group-id="7569208223-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="7569208223-3">]</span><span·class="p"·data-group-id="7569208223-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="6841769747-2">(</span><span·class="p"·data-group-id="6841769747-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6841769747-3">]</span><span·class="p"·data-group-id="6841769747-2">)</span><span·class="p">.</span><span·class="w">
  
150 </span><span·class="nf">test</span><span·class="p"·data-group-id="7569208223-4">(</span><span·class="p"·data-group-id="7569208223-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="6841769747-4">(</span><span·class="p"·data-group-id="6841769747-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
151 ····</span><span·class="p"·data-group-id="7569208223-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="7569208223-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·724,·SHA:·11619b8ad9785c17287bf239983ccfa39379d23d7f4914ec5b1a296a13e66eb5·...·]-6">)</span><span·class="p">,</span><span·class="w">151 ····</span><span·class="p"·data-group-id="6841769747-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="6841769747-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·724,·SHA:·74da9ea9f9a5b95e420ed00e6273e98febd2fbc457e65195c0ec1dd7c9567044·...·]-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="7569208223-10">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="7569208223-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="6841769747-10">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="6841769747-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="7569208223-11">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="7569208223-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="6841769747-11">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="6841769747-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="7569208223-12">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="7569208223-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="6841769747-12">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="6841769747-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="7569208223-13">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="7569208223-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="6841769747-13">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="6841769747-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="7569208223-14">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="7569208223-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="6841769747-14">(</span><span·class="n">Viewer</span><span·class="p"·data-group-id="6841769747-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="7569208223-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:·369,·SHA:·4176d8df56be7a1a95ae1df291ad87a11779e76b4c405109da0e780d3a7a6812·...·]-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="6841769747-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:·369,·SHA:·3adfc5c00bc3fa8ff87009dae6e4c6bd51bdee45800755cdbb441407300cfc88·...·]-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="7569208223-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:·318,·SHA:·f65c59decb086c8968880455225215ede742bb69e198fcdd7d09547bd4d73cdb·...·]-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="6841769747-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:·318,·SHA:·0089be3f103839a46e70267ec6d391a5ebfe996f281731cb4fb634a1818b83b4·...·]-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="7569208223-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:·114,·SHA:·d513e0f041c2ce6907fb151364e6a8543e66eece5be9b2dd7be5b031b1c54cd1·...·]-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="6841769747-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:·114,·SHA:·fcf2fd603a5eb476cef80df7040cdf3c2c491642a8d80209aa354b0acc990d45·...·]-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="7569208223-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:·262,·SHA:·6a1931930970e666508936e0e7e20f8a803fed5271371ae4f87634dde4edae7e·...·]-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="6841769747-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:·262,·SHA:·d248a07b4b7579712c950c820904824507de0eef16ebce288e1e4c38b0ac40a5·...·]-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="7569208223-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:·184,·SHA:·a2fa7a876bfb7aaf25bd736e28a884693d4a254442413c2ee829ff8ed1596550·...·]-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="6841769747-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:·184,·SHA:·f40f61b6870c8678855bfe9f570c0b229cde6b3c9f31933bd141105fe8bec6ea·...·]-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="7569208223-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:·117,·SHA:·543c333c6dab509121ca48f2a84a7183cca858df20bad98acae03ca9166a565a·...·]-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="6841769747-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:·117,·SHA:·cb6a9f70513def306863d85fbe0687a3c73bf199e16101f38620854d942b8f7f·...·]-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="7569208223-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:·113,·SHA:·ac7d2ee1c29a6378d8bb785686e281603bc684dee673e405ca4c26984585f991·...·]-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="6841769747-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:·113,·SHA:·b9b922bd7609562c85375307b17ca70e7c4fac94ef3a9754f59dc49e10e3fed8·...·]-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="7569208223-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:·188,·SHA:·dba2979be94bd447508cd3ba676a1586a38c8d2246ceeafcf7ead1c9686109ae·...·]-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="6841769747-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:·188,·SHA:·e8b58f3837d89ecdf40aaf66f74eebff173af83179839c86288ae79d34b53aa1·...·]-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="7569208223-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:·215,·SHA:·2f453ec21dd5a3c285b0757cc2da8e21403c901f05f738ff1593533d60922e53·...·]-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="6841769747-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:·215,·SHA:·540df04e5b8823bb698c9d0bc1191bb0c9a8f2dffff8f1639c3ca1e52c44d067·...·]-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="7569208223-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:·211,·SHA:·da46798f1e3345676f563468b2193e6c72b0bb55e785bf49719b1300f5b880e6·...·]-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="6841769747-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:·211,·SHA:·61e25f1bc3bc7ba88c8ffa1a3d4c860a2fa0b16b842aeb945e7f747a056023d6·...·]-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="7569208223-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:·183,·SHA:·583e36be7340badba8ed59d7b906df76c41d0174541aaa566841271e95e1cdd4·...·]-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="6841769747-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:·183,·SHA:·162de4db49f655ecc4e6c19aeca5bbb9cd7b67b9ff4f92e9fef2d2c904bf0f01·...·]-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="7569208223-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:·181,·SHA:·cdccfd918f3300473173f3d19852f151c418b303fb626374afb04a8de6d51440·...·]-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="6841769747-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:·181,·SHA:·c8abc73832f102bffb4001cf181d4a2684a6fab06235626cbc275626837795c4·...·]-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="7569208223-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:·273,·SHA:·5dd7bb02ca134ff201147cd240aa17beccf1c52f605217123ed002b9d7afc864·...·]-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="6841769747-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:·273,·SHA:·1a4330388fb6d2bfcd64018874f6a458647548c8f135f432d51a5655b91d7f00·...·]-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="0313100579-1">(</span><span·class="p"·data-group-id="0313100579-2">[</span><span·class="p"·data-group-id="0313100579-3">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·551,·SHA:·2d83da3d13e385e9607796168ba5e6c507a5c51683d2b292e974ccf321d69a9e·...·]-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="0301016322-1">(</span><span·class="p"·data-group-id="0301016322-2">[</span><span·class="p"·data-group-id="0301016322-3">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·551,·SHA:·ea8e3d389f13600d3feb0266078a602a864227f562c9079283a1fd5e2a27fdf3·...·]-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="5091083239-1">(</span><span·class="ss">et_trace_demo</span><span·class="p"·data-group-id="5091083239-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="9416611706-1">(</span><span·class="ss">et_trace_demo</span><span·class="p"·data-group-id="9416611706-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="5091083239-2">(</span><span·class="p"·data-group-id="5091083239-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5091083239-3">]</span><span·class="p"·data-group-id="5091083239-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="9416611706-2">(</span><span·class="p"·data-group-id="9416611706-3">[</span><span·class="ss">test</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9416611706-3">]</span><span·class="p"·data-group-id="9416611706-2">)</span><span·class="p">.</span><span·class="w">
  
261 </span><span·class="nf">test</span><span·class="p"·data-group-id="5091083239-4">(</span><span·class="p"·data-group-id="5091083239-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="9416611706-4">(</span><span·class="p"·data-group-id="9416611706-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="5091083239-5">(</span><span·class="p"·data-group-id="5091083239-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="9416611706-5">(</span><span·class="p"·data-group-id="9416611706-6">[</span><span·class="w">
263 ········</span><span·class="p"·data-group-id="5091083239-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="5091083239-7">}</span><span·class="p">,</span><span·class="w">263 ········</span><span·class="p"·data-group-id="9416611706-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="9416611706-7">}</span><span·class="p">,</span><span·class="w">
264 ········</span><span·class="p"·data-group-id="5091083239-8">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="5091083239-8">}</span><span·class="p">,</span><span·class="w">264 ········</span><span·class="p"·data-group-id="9416611706-8">{</span><span·class="ss">trace_global</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="9416611706-8">}</span><span·class="p">,</span><span·class="w">
265 ········</span><span·class="p"·data-group-id="5091083239-9">{</span><span·class="nb">trace_pattern</span><span·class="p">,</span><span·class="p"·data-group-id="5091083239-10">{</span><span·class="ss">et</span><span·class="p">,</span><span·class="ss">max</span><span·class="p"·data-group-id="5091083239-[·...·truncated·by·diffoscope;·len:·53,·SHA:·73d1c5a48fffe5dad3343476c7cfb87503e1f925c3acfe5ee0fee33a30b9e9cc·...·]-9">}</span><span·class="p">,</span><span·class="w">265 ········</span><span·class="p"·data-group-id="9416611706-9">{</span><span·class="nb">trace_pattern</span><span·class="p">,</span><span·class="p"·data-group-id="9416611706-10">{</span><span·class="ss">et</span><span·class="p">,</span><span·class="ss">max</span><span·class="p"·data-group-id="9416611706-[·...·truncated·by·diffoscope;·len:·53,·SHA:·516cf531a85797ca6bcd95b65ab24c0468d5d853f99999d75b5edb7be76e427b·...·]-9">}</span><span·class="p">,</span><span·class="w">
266 ········</span><span·class="p"·data-group-id="5091083239-11">{</span><span·class="ss">max_actors</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="5091083239-11">}</span><span·class="w">266 ········</span><span·class="p"·data-group-id="9416611706-11">{</span><span·class="ss">max_actors</span><span·class="p">,</span><span·class="mi">10</span><span·class="p"·data-group-id="9416611706-11">}</span><span·class="w">
267 ······</span><span·class="p"·data-group-id="5091083239-6">]</span><span·class="p"·data-group-id="5091083239-5">)</span><span·class="p">,</span><span·class="w">267 ······</span><span·class="p"·data-group-id="9416611706-6">]</span><span·class="p"·data-group-id="9416611706-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="5091083239-12">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="5091083239-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="9416611706-12">{</span><span·class="ss">drink</span><span·class="p">,</span><span·class="ss">iced_chai_latte</span><span·class="p"·data-group-id="9416611706-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="5091083239-13">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="5091083239-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="9416611706-13">{</span><span·class="nb">size</span><span·class="p">,</span><span·class="ss">grande</span><span·class="p"·data-group-id="9416611706-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="5091083239-14">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="5091083239-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="9416611706-14">{</span><span·class="ss">milk</span><span·class="p">,</span><span·class="ss">whole</span><span·class="p"·data-group-id="9416611706-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="5091083239-15">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="5091083239-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="9416611706-15">{</span><span·class="ss">flavor</span><span·class="p">,</span><span·class="ss">vanilla</span><span·class="p"·data-group-id="9416611706-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="5091083239-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:·8abc2aa4817bcbff32a27e42b3d640809acd19a1fd2f02593c4e77a68363d736·...·]-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="9416611706-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:·ad6677b5cad3c91154fe7a090c2c92b5424f206aa96554f8a64d8875891ab91d·...·]-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="5091083239-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:·e22e86f7e6c280544f662378f26cbc78fa407da0f9de6ef5d5e5f05a9e55a018·...·]-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="9416611706-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:·4c0d9f98ea075cb4537587476294a7ca2ef8434d339955ef7587ef10b9e59686·...·]-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="5091083239-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:·44e3770a7f7e44f953a756cedd02495c37bcbc9ef1d80e1281a3b72fb8162284·...·]-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="9416611706-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:·5ed82f430484f760e4ac57b56b603f0274973c6da87073a5c6e8cef32060d6e6·...·]-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="5091083239-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:·b06e99b0da256bca26d4b04072afd243519d2a09b028261cd6047fa9ffbd8d56·...·]-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="9416611706-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:·b81893bd3827295b45c146e3f1d26f4619ae3e77eb208c017e64e123e54fa893·...·]-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="5091083239-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:·b5adbeabdca9bbe325a76761b6fb532e3d43d035e399609c902de1e2e70f67a7·...·]-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="9416611706-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:·f7aae1d27bd6205aaf64f7e18e93a411795748065b5f36aa1eb033aaec849b36·...·]-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="5091083239-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:·6d4d70a6cab29333130360ee42047b2adbee3292d122518bc8ad71787ed0b7dd·...·]-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="9416611706-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:·06f08dbea0648f27cb1ad2f4fbd651697888e693f79eff30a60e079941c839b9·...·]-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="5091083239-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:·c2cb757b6c69b4f193451b23acc43716d31d3a8735c967e4431ee3352ec72e54·...·]-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="9416611706-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:·bb7d943165531cbbf4b03da9dc7fc49401f0d44b3609cb9e44c8330bec454154·...·]-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="5091083239-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:·d9b2be6ea6a22d462e7b3ae4cfb2d1bbf95b1a292c241786c96efc98ea2d7035·...·]-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="9416611706-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:·741e6106df1346d7d47dadfd7d7aae9213bb914a4e7f3f09e85528b25467fead·...·]-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="5091083239-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:·165afbe40fb603fa67552cdaaf3acdf61f268dd6cc78f94e852f3fece62a600c·...·]-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="9416611706-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:·2960d8b297efa5691914eaf1e50cf7ba8c00b4761253e5cb5e6a25d5203bb040·...·]-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="5091083239-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:·a208d95d1545c33d1c149f84a8da1665da5c5796ba59d4668b581f5e7a3fc3be·...·]-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="9416611706-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:·4f51104f38b17877b4af7ae100d4d83b1f04281bc03169e71fd9952cbc01ff46·...·]-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="5091083239-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:·90dff18b13f855aa53f3bb4af4438ccd786a8bf49e7940f187f72fa314fcff66·...·]-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="9416611706-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:·a98b659eafcaa406c7fa36d997cd818431d59a7e7e28bcd28946c5298150384c·...·]-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="5091083239-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:·a859cb2e504c779e0d43b022a4734e0e62dc13f2596f45afe4b6d6c2cfe3502c·...·]-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="9416611706-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:·2940734fc3ab5c16c1cc60fdddece5ebc4a4284bd8c201221ba5cd3818b77590·...·]-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="5091083239-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:·6b4e96c0b853f9cab675e1bf880868180ce41615df42f6d0c9a9c67541349e7e·...·]-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="9416611706-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:·8af001a80ec662f356a69f5a188ad6ec03e39da0669f08431e234152d5170c4a·...·]-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">
  
622 B
./usr/share/doc/erlang-doc/html/lib/et-1.7.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-C01CA0BB.js"></script>124 <script·src="dist/search_data-07FF68FB.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>
70.9 KB
./usr/share/doc/erlang-doc/html/lib/eunit-2.9.1/doc/html/eunit.epub
2.23 KB
zipinfo {}
    
Offset 1, 15 lines modifiedOffset 1, 15 lines modified
1 Zip·file·size:·45180·bytes,·number·of·entries:·131 Zip·file·size:·45181·bytes,·number·of·entries:·13
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:57·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:51·mimetype
3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Mar-18·07:57·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Mar-18·08:51·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····32747·bx·defN·25-Mar-18·07:57·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····32747·bx·defN·25-Mar-18·08:51·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1175·bx·defN·25-Mar-18·07:57·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1175·bx·defN·25-Mar-18·08:51·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····1136·bx·defN·25-Mar-18·07:57·OEBPS/eunit_surefire.xhtml6 ?rw-r--r--··6.1·unx·····1136·bx·defN·25-Mar-18·08:51·OEBPS/eunit_surefire.xhtml
7 ?rw-r--r--··6.1·unx·····7821·bx·defN·25-Mar-18·07:57·OEBPS/eunit.xhtml7 ?rw-r--r--··6.1·unx·····7821·bx·defN·25-Mar-18·08:51·OEBPS/eunit.xhtml
8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-erlang-ESPT6BQV.css8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-erlang-ESPT6BQV.css
9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-LSJCIYTM.js9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-LSJCIYTM.js
10 ?rw-r--r--··6.1·unx·····1623·bx·defN·25-Mar-18·07:57·OEBPS/content.opf10 ?rw-r--r--··6.1·unx·····1623·bx·defN·25-Mar-18·08:51·OEBPS/content.opf
11 ?rw-r--r--··6.1·unx····65980·bx·defN·25-Mar-18·07:57·OEBPS/chapter.xhtml11 ?rw-r--r--··6.1·unx····65980·bx·defN·25-Mar-18·08:51·OEBPS/chapter.xhtml
12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:57·OEBPS/assets/logo.png12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:51·OEBPS/assets/logo.png
13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:57·META-INF/container.xml13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:51·META-INF/container.xml
14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:57·META-INF/com.apple.ibooks.display-options.xml14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:51·META-INF/com.apple.ibooks.display-options.xml
15 13·files,·132528·bytes·uncompressed,·42922·bytes·compressed:··67.6%15 13·files,·132528·bytes·uncompressed,·42923·bytes·compressed:··67.6%
67.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,·Mar·18·2025·07:57: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,·Mar·18·2025·08:51:32,·uncompressed·size·20,·method=store
1.2 KB
OEBPS/content.opf
1.16 KB
OEBPS/content.opf
Max HTML report size reached
86.0 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:·33166·bytes,·number·of·entries:·131 Zip·file·size:·33168·bytes,·number·of·entries:·13
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:57·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:52·mimetype
3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Mar-18·07:57·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Mar-18·08:52·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····16468·bx·defN·25-Mar-18·07:57·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····16468·bx·defN·25-Mar-18·08:52·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····1130·bx·defN·25-Mar-18·07:57·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····1130·bx·defN·25-Mar-18·08:52·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····1148·bx·defN·25-Mar-18·07:57·OEBPS/introduction.xhtml6 ?rw-r--r--··6.1·unx·····1148·bx·defN·25-Mar-18·08:52·OEBPS/introduction.xhtml
7 ?rw-r--r--··6.1·unx·····7044·bx·defN·25-Mar-18·07:57·OEBPS/ftp_client.xhtml7 ?rw-r--r--··6.1·unx·····7044·bx·defN·25-Mar-18·08:52·OEBPS/ftp_client.xhtml
8 ?rw-r--r--··6.1·unx····75259·bx·defN·25-Mar-18·07:57·OEBPS/ftp.xhtml8 ?rw-r--r--··6.1·unx····75259·bx·defN·25-Mar-18·08:52·OEBPS/ftp.xhtml
9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-erlang-ESPT6BQV.css9 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:52·OEBPS/dist/epub-erlang-ESPT6BQV.css
10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-LSJCIYTM.js10 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:52·OEBPS/dist/epub-LSJCIYTM.js
11 ?rw-r--r--··6.1·unx·····1614·bx·defN·25-Mar-18·07:57·OEBPS/content.opf11 ?rw-r--r--··6.1·unx·····1614·bx·defN·25-Mar-18·08:52·OEBPS/content.opf
12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:57·OEBPS/assets/logo.png12 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:52·OEBPS/assets/logo.png
13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:57·META-INF/container.xml13 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:52·META-INF/container.xml
14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:57·META-INF/com.apple.ibooks.display-options.xml14 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:52·META-INF/com.apple.ibooks.display-options.xml
15 13·files,·124705·bytes·uncompressed,·30910·bytes·compressed:··75.2%15 13·files,·124705·bytes·uncompressed,·30912·bytes·compressed:··75.2%
70.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,·Mar·18·2025·07:57: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,·Mar·18·2025·08:52:00,·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="0882464276-1">(</span><span·class="p"·data-group-id="0882464276-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="0695671771-1">(</span><span·class="p"·data-group-id="0695671771-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="0882464276-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="0882464276-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·496,·SHA:·5525a8fc686d75c5654192491557c51e0319782cdeeedc6448724365d6968520·...·]-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="0695671771-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="0695671771-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·496,·SHA:·2d106484c00719858fe20e80ffa104018c266a50bff6af0f92605f4c72f9d450·...·]-3">)</span><span·class="p">.</span><span·class="w">
129 ······</span><span·class="p"·data-group-id="0882464276-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="0882464276-6">}</span><span·class="w">129 ······</span><span·class="p"·data-group-id="0695671771-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="0695671771-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="0882464276-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:·c974485cae333f8e54ccf429de799bb06a26324d9e78111f11fb0bc3ce7a487e·...·]-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="0695671771-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:·c3c3e80b2b148c131ff05942a44a4f5954abf54f794c36802fd2c7918167daf4·...·]-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="0882464276-8">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="0882464276-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="0695671771-8">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="0695671771-8">)</span><span·class="p">.</span><span·class="w">
133 ······</span><span·class="p"·data-group-id="0882464276-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="0882464276-9">}</span><span·class="w">133 ······</span><span·class="p"·data-group-id="0695671771-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="0695671771-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="0882464276-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="0882464276-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="0695671771-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="0695671771-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="0882464276-11">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="0882464276-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="0695671771-11">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="0695671771-11">)</span><span·class="p">.</span><span·class="w">
137 ······</span><span·class="p"·data-group-id="0882464276-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="0882464276-12">}</span><span·class="p">.</span><span·class="w">137 ······</span><span·class="p"·data-group-id="0695671771-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="0695671771-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="0882464276-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="0882464276-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="0695671771-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="0695671771-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="0882464276-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="0882464276-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="0695671771-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="0695671771-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="0882464276-15">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="0882464276-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="0695671771-15">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="0695671771-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="0882464276-16">(</span><span·class="p"·data-group-id="0882464276-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="0695671771-16">(</span><span·class="p"·data-group-id="0695671771-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.2/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="9855994587-1">[</span><span·class="p"·data-group-id="9855994587-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9855994587-3">[</span><span·class="p"·data-group-id="9855994587-4">{</spa[·...·truncated·by·diffoscope;·len:·606,·SHA:·8dbf77b1a8669aee8ac2c45999e0a5d1c5426b378f7ab23037fd9efd88eebf49·...·]-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="4859271939-1">[</span><span·class="p"·data-group-id="4859271939-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4859271939-3">[</span><span·class="p"·data-group-id="4859271939-4">{</spa[·...·truncated·by·diffoscope;·len:·606,·SHA:·53692630d381efd17ee72273ba620e546430cb929bba8e66a0ecd8e9a488b32f·...·]-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="3051508009-1">(</span><span·class="p"·data-group-id="3051508009-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="6292704133-1">(</span><span·class="p"·data-group-id="6292704133-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="2413125625-1">(</span><span·class="p"·data-group-id="2413125625-2">[</span><span·class="p"·data-group-id="2413125625-3">{</span><span·class="ss">proxy</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2413125625-4">{</spa[·...·truncated·by·diffoscope;·len:·230,·SHA:·0a32ca93c11c21c8415acf22a5f3a720962531857834163f7e7ad7c87031403c·...·]-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="4240393810-1">(</span><span·class="p"·data-group-id="4240393810-2">[</span><span·class="p"·data-group-id="4240393810-3">{</span><span·class="ss">proxy</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4240393810-4">{</spa[·...·truncated·by·diffoscope;·len:·230,·SHA:·cd55de52f289e3beb4185692b92c1409fae278c340c58e466234fb645ce8e515·...·]-5">}</span><span·class="p">,</span><span·class="w">
151 </span><span·class="p"·data-group-id="2413125625-6">[</span><span·class="s">&quot;localhost&quot;</span><span·class="p"·data-group-id="2413125625-6">]</span><span·class="p"·data-group-id="2413125625-4">}</span><span·class="p"·data-group-id="2413125625-3">}</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·201d25b9c5ff87a8cc933f87117e33588b7e0fc07acdd94c46498df3196e2cf1·...·]-1">)</span><span·class="p">.</span><span·class="w">151 </span><span·class="p"·data-group-id="4240393810-6">[</span><span·class="s">&quot;localhost&quot;</span><span·class="p"·data-group-id="4240393810-6">]</span><span·class="p"·data-group-id="4240393810-4">}</span><span·class="p"·data-group-id="4240393810-3">}</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·7d1dcaa62d1ed74cd7069bbeca38fb4618189bd17bb12877e014daea97e869b3·...·]-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="0599407614-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0599407614-2">{</span><span·class="p"·data-group-id="0599407614-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="0599407614-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="0599407614-2">}</span><span·class="p"·data-group-id="0599407614-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="0599407614-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0599407614-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="0599407614-6">[</span><span·class="p"·data-group-id="0599407614-6">]</span><span·class="p"·data-group-id="0599407614-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0599407614-7">[</span><span·class="p"·data-group-id="0599407614-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0599407614-8">[</span><span·class="p"·data-group-id="0599407614-8">]</span><span·class="p"·data-group-id="0599407614-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="6867602833-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·568,·SHA:·eaca7c314cb58fdc28c7a819a851d1d8c3132761e2cbb67508a3ab218d36e500·...·]-1">}</span><span·class="w">·</span><span·class="o">=</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="0027672194-1">{</span><span·clas[·...·truncated·by·diffoscope;·len:·658,·SHA:·a71db24baf1ecfb6f0df76e6d78b19a7b8949966083220ded029984d4a6303a5·...·]-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="0027672194-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0027672194-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="0027672194-6">[</span><span·class="p"·data-group-id="0027672194-6">]</span><span·class="p"·data-group-id="0027672194-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0027672194-7">[</span><span·class="p"·data-group-id="0027672194-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0027672194-8">[</span><span·class="p"·data-group-id="0027672194-8">]</span><span·class="p"·data-group-id="0027672194-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="9796617750-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9796617750-2">{</span><span·class="p"·data-group-id="9796617750-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="9796617750-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="9796617750-2">}</span><span·class="p"·data-group-id="9796617750-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="6867602833-4">(</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p"·data-group-id="6867602833-4">)</span><span·class="p">.</span></code></pre><p>The·following·is·a·https·request·and·with·verification·of·the·host:</p><pre><code·cla[·...·truncated·by·diffoscope;·len:·798,·SHA:·bb0d32055b7d629a424eace51278551058a8959de603c88e0efaf29c44c572d2·...·]-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="9796617750-4">(</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p"·data-group-id="9796617750-4">)</span><span·class="p">.</span></code></pre><p>The·following·is·a·https·request·and·with·verification·of·the·host:</p><pre><code·cla[·...·truncated·by·diffoscope;·len:·798,·SHA:·2dbfcb6aaff7dda55f04469b98f4ae7056dd07b1d7f5deb75ed1e02c96d98eb1·...·]-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="5509667938-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5509667938-5">{</span><span·class="s">&quot;https://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5509667938-6">[</span><span·class="p"·data-group-id="5509667938-6">]</span><span·class="p"·data-group-id="5509667938-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5509667938-7">[</span><span·class="p"·data-group-id="5509667938-8">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="w">·</span><span·class="nc">httpc</span><span·class="p">:</span><span·class="nf">ssl_verify_host_options</span><span·class="p"·data-group-id="5509667938-9">(</span><span·class="ss">true</span><span·class="p"·data-group-id="5509667938-9">)</span><span·class="p"·data-group-id="5509667938-8">}</span><span·class="p"·data-group-id="5509667938-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5509667938-10">[</span><span·class="p"·data-group-id="5509667938-10">]</span><span·class="p"·data-group-id="5509667938-4">)</span><span·class="p">.</span></code></pre><p>The·following·is·an·ordinary·asynchronous·request:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">6&gt;·</span><span·class="p"·data-group-id="6668514385-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="n">RequestId</span><span·class="p"·data-group-id="6668514385-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="6668514385-2">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6668514385-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:·950,·SHA:·ffb0b99d854c0617ce1c3767c716acae694ce08034b101c4f74400408e5811c8·...·]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="3005257032-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3005257032-5">{</span><span·class="s">&quot;https://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·1397,·SHA:·d5d93441b89037e46580bbf22da4603bcfcbd2b7a87e3102248972f591321d3a·...·]
 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="8505087717-2">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8505087717-3">{</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="8505087717-4">[</span><span·class="p"·data-group-id="8505087717-4">]</span><span·class="p"·data-group-id="8505087717-3">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8505087717-5">[</span><span·class="p"·data-group-id="8505087717-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8505087717-6">[</span><span·class="p"·data-group-id="8505087717-7">{</span><span·class="ss">sync</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="8505087717-7">}</span><span·class="p"·data-group-id="8505087717-6">]</span><span·class="p"·data-group-id="8505087717-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="2106434864-1">{</span><span·class="ss">http</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2106434864-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:·06b0697e5965ee3625f4566e745ad9ebb6d977ceab83263885a7c6b6dccd3184·...·]-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="5860597552-1">{</span><span·class="ss">http</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5860597552-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:·a7bff66c98b3dfa28b6cd6dd8d8a22ac726b8db6b13a6bdc602ce17d7dd1a04e·...·]-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="9672789718-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9672789718-2">{</span><span·class="p"·data-group-id="9672789718-3">{</span><span·class="n">NewVersion</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·446,·SHA:·f96c8b9975c520819ded806e4c2a833c1c3e759475c5c41fb2bb3553ab5e2a0a·...·]-1">}</span><span·class="w">·</span><span·class="o">=</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="6606741447-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6606741447-2">{</span><span·class="p"·data-group-id="6606741447-3">{</span><span·class="n">NewVersion</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·446,·SHA:·e9c8828107e8706b4812cc9dfb4522e94e2b23e0ef6a9798825780b3c6b30744·...·]-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="9672789718-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9672789718-5">{</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·384,·SHA:·ca56b9336423335dad9e4136757db83e41de8e0a8c3eb6042a1ea809bac31160·...·]-5">}</span><span·class="p">,</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="6606741447-4">(</span><span·class="nb">get</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6606741447-5">{</span><span·class="s">&quot;http://www.erlang.org&quot;</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·384,·SHA:·f12d7cf2afdd723968200a880c57dcf3efdc2fb0537ae5cab880b9f45ed131ca·...·]-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="9672789718-8">[</span><span·class="p"·data-group-id="9672789718-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9672789718-9">[</span><span·class="p"·data-group-id="9672789718-9">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·1013,·SHA:·70a68faa3945f8532e9d3d1c4614c7b4a116d8927d78f18ab8dffa8f905a0c22·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">161 </span><span·class="p">.</span><span·class="p">.</span><span·class="w">·</span><span·class="p"·data-group-id="6606741447-8">[</span><span·class="p"·data-group-id="6606741447-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6606741447-9">[</span><span·class="p"·data-group-id="6606741447-9">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·1013,·SHA:·e41e2f0b2891ed195fc75d8bfb516861e28a655398f94f4aebe44f210a111ab4·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">
162 10&gt;·</span><span·class="p"·data-group-id="2309089235-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2309089235-6">{</span><span·class="p"·data-group-id="2309089235-7">{</span><span·class="n">NewVersion</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·446,·SHA:·410f21bb086cf30d1a8ec1fc6d149ed1f90bafa5b282a2b207f624aa4ffb44e3·...·]-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">162 10&gt;·</span><span·class="p"·data-group-id="6911563927-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6911563927-6">{</span><span·class="p"·data-group-id="6911563927-7">{</span><span·class="n">NewVersion</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·446,·SHA:·847bdfdbfcefe8b767549372025b821ee5f02df8e00730b42b4e0e8d3e355c74·...·]-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="2309089235-8">(</span><span·class="nb">put</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2309089235-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:·5a08d119f0e418179cc3a43412445648bbefcab44cf21a7a2b6d9a17ef866a34·...·]-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="6911563927-8">(</span><span·class="nb">put</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6911563927-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:·36f98891d6bea5533cc857b98578e633291646f3679c85cb071a644ccba00474·...·]-2">)</span><span·class="p">.</span><span·class="w">
164 </span><span·class="p"·data-group-id="7318095360-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:·1e19ac17752c3cd2f53f3e0bfbf29319d3770403c6cb5810bcc6704550c3d220·...·]-1">)</span><span·class="p">.</span><span·class="w">164 </span><span·class="p"·data-group-id="2465930466-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:·027b52dddf38829381e8ff5ed3a75da7544699f7443bf183e0f23f70735db4cf·...·]-1">)</span><span·class="p">.</span><span·class="w">
165 </span><span·class="p"·data-group-id="4405541723-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="4405541723-2">}</span></code></pre><p>Stop·the·HTTP·client·profile:</p><pre><code·class="mak[·...·truncated·by·diffoscope;·len:·350,·SHA:·248a3e4d61ad3332a0ab95f9938689b7123f940a1417f21d7bdc602402dc4877·...·]-1">)</span><span·class="p">.</span><span·class="w">165 </span><span·class="p"·data-group-id="4462467839-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="4462467839-2">}</span></code></pre><p>Stop·the·HTTP·client·profile:</p><pre><code·class="mak[·...·truncated·by·diffoscope;·len:·350,·SHA:·369009a79dbf0900630c5ef1f302737b1799e7b4e2f615553ee375e5ea58a0fd·...·]-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="3121910773-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="3121910773-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="8865231861-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="8865231861-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.2/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="3681057300-1">[</span><span·class="p"·data-group-id="3681057300-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3681057300-3">[</span><span·class="p"·data-group-id="3681057300-4">{</span><span·class="ss">services</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3681057300-5">[</span><span·class="p"·data-group-id="3681057300-6">{</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3681057300-7">[</span><span·class="p"·data-group-id="3681057300-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="3681057300-8">}</span><span·class="p"·data-group-id="3681057300-7">]</span><span·class="p"·data-group-id="3681057300-6">}</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="4052849955-1">[</span><span·class="p"·data-group-id="4052849955-2">{</span><span·class="ss">inets</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·528,·SHA:·47b42b04f5e96b4bface7e2d08f9c1c675c060b2116ccd360c16b60177fe66c2·...·]</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="4052849955-8">}</span><span·class="p"·data-group-id="4052849955-7">]</span><span·class="p"·data-group-id="4052849955-6">}</span><span·class="p">,</span><span·class="w">
146 ··········</span><span·class="p"·data-group-id="3681057300-9">{</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3681057300-10">[</span><span·class="p"·data-group-id="3681057300-11">{</span><span·class="ss">proplist_file</span><span·class="p">,</span><span·class="w">146 ··········</span><span·class="p"·data-group-id="4052849955-9">{</span><span·class="ss">httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4052849955-10">[</span><span·class="p"·data-group-id="4052849955-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="3681057300-11">}</span><span·class="p"·data-group-id="3681057300-10">]</span><span·class="p"·data-group-id="3681057300-9">}</span><span·class="p"·data-group-id="3681057300-5">]</span><span·class="p"·data-group-id="3681057300-4">}</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·127,·SHA:·4b80eaac6194fdb489395999a98fef32800c9fd7c53f08fa00c906078d50037a·...·]-1">]</span><span·class="p">.</span></code></pre><p>The·server·is·configured·using·an·Erlang·property·list.·For·the·available147 ···········</span><span·class="s">&quot;/var/tmp/server_root/conf/8080_props.conf&quot;</span><span·class="p"·data-group-id="4052849955-11">}</span><span·class="p"·data-group-id="4052849955-10">]</span><span·class="p"·data-group-id="4052849955-9">}</span><span·class="p"·data-group-id="4052849955-5">]</span><span·class="p"·data-group-id="4052849955-4">}</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·127,·SHA:·8f6477fdc98e9c6cc0c3737627d9ec5d8e4ea2b78cc3447709db5741af25af1d·...·]-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="1644394860-1">(</span><span·class="p"·data-group-id="1644394860-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1644394860-2">{</span><span·class="ss">httpd</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·200,·SHA:·aefe125787186ecbc641f89f02c09f5203c23e01c105cc2543acf54ab95803cb·...·]0-2">}</span><span·class="w">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="3271818230-1">(</span><span·class="p"·data-group-id="3271818230-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3271818230-2">{</span><span·class="ss">httpd</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·200,·SHA:·850185ced8f4e885411f846966353ee848293c91bde56260ce5ebe3c1c921a86·...·]0-2">}</span><span·class="w">
149 </span><span·class="nf">httpd</span><span·class="p"·data-group-id="1644394860-4">(</span><span·class="p"·data-group-id="1644394860-4">)</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1644394860-5">[</span><span·class="nf">httpd_config</span><span·cl[·...·truncated·by·diffoscope;·len:·138,·SHA:·3b9b8918984e9d9b57bf563a9d43fa12a987fb599333dd4ffde8f30b1fa74f50·...·]0-5">]</span><span·class="w">149 </span><span·class="nf">httpd</span><span·class="p"·data-group-id="3271818230-4">(</span><span·class="p"·data-group-id="3271818230-4">)</span><span·class="w">·········</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3271818230-5">[</span><span·class="nf">httpd_config</span><span·cl[·...·truncated·by·diffoscope;·len:·138,·SHA:·ba86b7bdeea48bb4ec3f7052f0a0bc31e49e62b127a0548febf3fa0455cd440d·...·]0-5">]</span><span·class="w">
150 </span><span·class="nf">httpd_config</span><span·class="p"·data-group-id="1644394860-7">(</span><span·class="p"·data-group-id="1644394860-7">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1644394860-8">{</span><span·class="ss">proplist_file</span><span·class="p[·...·truncated·by·diffoscope;·len:·208,·SHA:·862502263e63a9f194045208bb16148a1e8404c574a89f49cc5d1d8eeaa61395·...·]0-8">}</span><span·class="w">150 </span><span·class="nf">httpd_config</span><span·class="p"·data-group-id="3271818230-7">(</span><span·class="p"·data-group-id="3271818230-7">)</span><span·class="w">··</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3271818230-8">{</span><span·class="ss">proplist_file</span><span·class="p[·...·truncated·by·diffoscope;·len:·208,·SHA:·9359191d0fc6fa7a6c74eed340b66d803a141688ffb2dbaedd8a6f3aa33ca364·...·]0-8">}</span><span·class="w">
151 ···················</span><span·class="p"·data-group-id="1644394860-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="1644394860-11">(</span><span·class="p"·data-group-id="1644394860-11">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·21,·SHA:·003a311bf69194598a5c57d81d468d68416159cc1352643a3d46913d971b8ac7·...·]0-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">151 ···················</span><span·class="p"·data-group-id="3271818230-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="3271818230-11">(</span><span·class="p"·data-group-id="3271818230-11">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·21,·SHA:·7917bfa12048e55bd1e3a03316e0d1172925adf7d33cc848682bea15659d6412·...·]0-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
152 ···················</span><span·class="p"·data-group-id="1644394860-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="1644394860-13">(</span><span·class="p"·data-group-id="1644394860-13">)</span><span·cl[·...·truncated·by·diffoscope;·len:·32,·SHA:·48d50dd3fafd07979def9e6e9d6b05f7989301321acb7e8f55d89445a6f4a175·...·]0-12">}</span><span·class="w">152 ···················</span><span·class="p"·data-group-id="3271818230-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="3271818230-13">(</span><span·class="p"·data-group-id="3271818230-13">)</span><span·cl[·...·truncated·by·diffoscope;·len:·32,·SHA:·ba22036bb41163b11967a9de687c3ded0b847afceb6c51c2b298f8fa38cf3a01·...·]0-12">}</span><span·class="w">
153 </span><span·class="nf">debug</span><span·class="p"·data-group-id="1644394860-14">(</span><span·class="p"·data-group-id="1644394860-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">[·...·truncated·by·diffoscope;·len:·247,·SHA:·e20480286fed0261e273e983339f5cfe0f80fc82ae41ea35862b60da367e3ad0·...·]0-15">]</span><span·class="w">153 </span><span·class="nf">debug</span><span·class="p"·data-group-id="3271818230-14">(</span><span·class="p"·data-group-id="3271818230-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">[·...·truncated·by·diffoscope;·len:·247,·SHA:·0c60494156794b948e34ec92605d727b5434c8922bbfb629abcb89c9a7c2e349·...·]0-15">]</span><span·class="w">
154 </span><span·class="nf">debug_options</span><span·class="p"·data-group-id="1644394860-17">(</span><span·class="p"·data-group-id="1644394860-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1644394860-18">{</span><span·class="ss">all_functions</span><span·class=[·...·truncated·by·diffoscope;·len:·215,·SHA:·9dc4c6fd172f21ad13e7503212808617a6d5bdb85577efcbe21e41f67de4bb70·...·]0-18">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">154 </span><span·class="nf">debug_options</span><span·class="p"·data-group-id="3271818230-17">(</span><span·class="p"·data-group-id="3271818230-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3271818230-18">{</span><span·class="ss">all_functions</span><span·class=[·...·truncated·by·diffoscope;·len:·215,·SHA:·53fa2fd088e75886ba287d55be3acef89385779839aeafafa7e565fa53bfdbcd·...·]0-18">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
155 ···················</span><span·class="p"·data-group-id="1644394860-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="1644394860-21">(</span><span·class="p"·data-group-id="1644394860-21">)</span><spa[·...·truncated·by·diffoscope;·len:·36,·SHA:·0e6527cf2828e072735cacb36db2ec4d299fd81028d8a4207e6f9923d97f43f6·...·]0-20">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">155 ···················</span><span·class="p"·data-group-id="3271818230-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="3271818230-21">(</span><span·class="p"·data-group-id="3271818230-21">)</span><spa[·...·truncated·by·diffoscope;·len:·36,·SHA:·867eb0511ba5df3cdc0fac172971a573af928cb535a8623904aa7e25a2b6d6fa·...·]0-20">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
156 ···················</span><span·class="p"·data-group-id="1644394860-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="1644394860-23">(</span><span·class="p"·data-group-id="1644394860-23">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·25,·SHA:·f1573e2a12b9be2136b89e7ec7ea37f444fa66e38fd09f55a4840ef51b919012·...·]0-22">}</span><span·class="w">156 ···················</span><span·class="p"·data-group-id="3271818230-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="3271818230-23">(</span><span·class="p"·data-group-id="3271818230-23">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·25,·SHA:·31a8a87dd4d34cb1bb70f4b478666ba2e986e50a2a488d65ba139ddc34e87dea·...·]0-22">}</span><span·class="w">
157 </span><span·class="nf">modules</span><span·class="p"·data-group-id="1644394860-24">(</span><span·class="p"·data-group-id="1644394860-24">)</span><span·class="w">·······</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1644394860-25">[</span><span·class="nf">atom</span><span·class="p"[·...·truncated·by·diffoscope;·len:·133,·SHA:·d95e40c14949a6d464681037915b762d7cfc0887c947fca6192e480747bc3920·...·]0-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="3271818230-24">(</span><span·class="p"·data-group-id="3271818230-24">)</span><span·class="w">·······</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3271818230-25">[</span><span·class="nf">atom</span><span·class="p"[·...·truncated·by·diffoscope;·len:·133,·SHA:·1448eb31a62fccec294fce5643be7fbe3e2be8b02bc6c8bd83a2db5c7c963d76·...·]0-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="4185456483-1">(</span><span·class="p"·data-group-id="4185456483-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="7289499843-1">(</span><span·class="p"·data-group-id="7289499843-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="0411771088-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="0411771088-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·703,·SHA:·8cd0030b6ac05e8e6ac63755a217d6389426709933b3ba8bf3a0fe4659949a26·...·]-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="9254231071-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="9254231071-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·703,·SHA:·995004be9440285dd0f8762958b4cd076d086b1ed5ebefa5f25588e3d1772400·...·]-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="0411771088-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="0411771088-6">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·302,·SHA:·62284081e73abef0aefd34840e1f08e4a99ce9fab921ba6f388b3f9f0a5f29b4·...·]-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="9254231071-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="9254231071-6">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·302,·SHA:·6f156143ce8f04b852ffd22cfbfa04f9c3a7574d9307c91beb35cabc74b24911·...·]-2">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="0411771088-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="0411771088-8">}</span></code></pre><p>Call·<code·cla[·...·truncated·by·diffoscope;·len:·320,·SHA:·f2118373081b698b0f21e41ae61208deb9d9e07294e98638c785a6112aebccc7·...·]-1">)</span><span·class="p">.</span><span·class="w">171 </span><span·class="p"·data-group-id="9254231071-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="9254231071-8">}</span></code></pre><p>Call·<code·cla[·...·truncated·by·diffoscope;·len:·320,·SHA:·c3fbfbc7d19d74e9b6c3b00ebc760a47f10123f422a6944f0ceea1f9d05f0334·...·]-1">)</span><span·class="p">.</span><span·class="w">
172 </span><span·class="p"·data-group-id="5780785382-2">[</span><span·class="p"·data-group-id="5780785382-3">{</span><span·class="ss">mime_types</span><span·class="p">,</span><span·class="p"·data-group-id="5780785382-4">[</span><span·class="p"·data-group-id="5780785382-5">{</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·473,·SHA:·3c3b2f6db952da7d6b0434bf49a3bf69c844dd1675a19b040e6253d281e2b3b5·...·]-3">}</span><span·class="p">,</span><span·class="w">172 </span><span·class="p"·data-group-id="7960973017-2">[</span><span·class="p"·data-group-id="7960973017-3">{</span><span·class="ss">mime_types</span><span·class="p">,</span><span·class="p"·data-group-id="7960973017-4">[</span><span·class="p"·data-group-id="7960973017-5">{</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·473,·SHA:·924fbda9e37774cd68fd991a01c54263277fcfdbea2f2b0e3baa9b05e633b4d9·...·]-3">}</span><span·class="p">,</span><span·class="w">
173 ·</span><span·class="p"·data-group-id="5780785382-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="5780785382-7">}</span><span·class="p">,</span><span·class="w">173 ·</span><span·class="p"·data-group-id="7960973017-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="7960973017-7">}</span><span·class="p">,</span><span·class="w">
174 ·</span><span·class="p"·data-group-id="5780785382-8">{</span><span·class="ss">bind_address</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5780785382-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:·d75c17a85e710fb579a9cfe764aa1cfb1b86a2cf5c56b70cfbe0662291e90687·...·]-8">}</span><span·class="p">,</span><span·class="w">174 ·</span><span·class="p"·data-group-id="7960973017-8">{</span><span·class="ss">bind_address</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7960973017-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:·58022365b4119283a2ab09752f6884c5ec18cc1c3707c14d1f50a7e63e526437·...·]-8">}</span><span·class="p">,</span><span·class="w">
175 ·</span><span·class="p"·data-group-id="5780785382-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="5780785382-10">}</span><span·class="p">,</span><span·class="w">175 ·</span><span·class="p"·data-group-id="7960973017-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="7960973017-10">}</span><span·class="p">,</span><span·class="w">
176 ·</span><span·class="p"·data-group-id="5780785382-11">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="mi">59408</span><span·class="p"·data-group-id="5780785382-11">}</span><span·class="p">,</span><span·class="w">176 ·</span><span·class="p"·data-group-id="7960973017-11">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="mi">59408</span><span·class="p"·data-group-id="7960973017-11">}</span><span·class="p">,</span><span·class="w">
177 ·</span><span·class="p"·data-group-id="5780785382-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="5780785382-12">}</span><span·class="p">,</span><span·class="w">177 ·</span><span·class="p"·data-group-id="7960973017-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="7960973017-12">}</span><span·class="p">,</span><span·class="w">
178 ·</span><span·class="p"·data-group-id="5780785382-13">{</span><span·class="ss">ipfamily</span><span·class="p">,</span><span·class="ss">inet</span><span·class="p"·data-group-id="5780785382-13">}</span><span·class="p"·data-group-id="5780785382-2">]</span></code></pre><p>Reload·the·configuration·w[·...·truncated·by·diffoscope;·len:·519,·SHA:·e246fef8deaaf31c58a84ba97fb49b96365f4e2f372dd91cb92fdf7d1457e90d·...·]-3">}</span><span·class="p">,</span><span·class="w">178 ·</span><span·class="p"·data-group-id="7960973017-13">{</span><span·class="ss">ipfamily</span><span·class="p">,</span><span·class="ss">inet</span><span·class="p"·data-group-id="7960973017-13">}</span><span·class="p"·data-group-id="7960973017-2">]</span></code></pre><p>Reload·the·configuration·w[·...·truncated·by·diffoscope;·len:·519,·SHA:·01c5c1c583e80720293e949bb3d312a665baec178a601890d1f6beac4994ec40·...·]-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="8768729667-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="8768729667-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·184,·SHA:·4b145f59b5e963d846f7ad97b15e91aae442d0e8974c51c7e5b63c22924e072a·...·]-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="5873750375-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="5873750375-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·184,·SHA:·642c0162cfabdd49f112f2af61dc3c7c940f2c7f3c36339bda137917e70121c4·...·]-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="8768729667-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="8768729667-6">}</span><span·class="p"·data-group-id="8768729667-2">]</span>[·...·truncated·by·diffoscope;·len:·127,·SHA:·e97f7b717e64816ac038489655e26049461fea7664206bbff535452c2c33e28a·...·]-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="5873750375-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="5873750375-6">}</span><span·class="p"·data-group-id="5873750375-2">]</span>[·...·truncated·by·diffoscope;·len:·127,·SHA:·bf09bb5fd6252d8dc33e03960314567afc6116c351db5dcdde836ea4f585e00e·...·]-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="3301958588-1">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3301958588-2">[</span><span·class="ss">server_root</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">documen[·...·truncated·by·diffoscope;·len:·107,·SHA:·35a3ce7aff74db1a6b7ee1fb02974f1ad83315086d618ac934f44a7587f70cda·...·]-1">)</span><span·class="p">.</span><span·class="w">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="2883269752-1">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2883269752-2">[</span><span·class="ss">server_root</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">documen[·...·truncated·by·diffoscope;·len:·107,·SHA:·c75381f11c9203deb4f48ce5b7887dcd56838e2cdf7f1dbde60a1a049195e657·...·]-1">)</span><span·class="p">.</span><span·class="w">
183 </span><span·class="p"·data-group-id="3301958588-3">[</span><span·class="p"·data-group-id="3301958588-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="3301958588-4">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·1730,·SHA:·af2a4d411588c3d71e8b8a3df0d3e2b533a7fb0358b24bea29cf44878c588d92·...·]-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>183 </span><span·class="p"·data-group-id="2883269752-3">[</span><span·class="p"·data-group-id="2883269752-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="2883269752-4">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·1730,·SHA:·4d5558aff1d595caeb8f3c0bb0e2737235c677f2436b3f965a428c3881232a21·...·]-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="0726219256-1">(</span><span·class="ss">mnesia_test</span><span·class="p"·data-group-id="0726219256-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="0726219256-2">(</span><span·class="p"·data-group-id="0726219256-3">[</span><span·class="ss">start</span><span·class="p">/</span><span·class="mi">0</span><span·class[·...·truncated·by·diffoscope;·len:·191,·SHA:·c57e311dcccbe9b6e749ce3cdb60ee0d5e20d19f426ce75367ca68970b67183b·...·]">)</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="1830684759-1">(</span><span·class="ss">mnesia_test</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·27,·SHA:·c35c992088e0ee2391b4dff1fc0837551af1d0771d266a7be6e41c55e4b9c774·...·]">)</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="1830684759-2">(</span><span·class="p"·data-group-id="1830684759-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="1830684759-3">]</span><span·class="p"·data-group-id="1830684759-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="0726219256-4">(</span><span·class="s">&quot;mod_auth.hrl&quot;</span><span·class="p"·data-group-id="0726219256-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="1830684759-4">(</span><span·class="s">&quot;mod_auth.hrl&quot;</span><span·class="p"·data-group-id="1830684759-4">)</span><span·class="p">.</span><span·class="w">
  
311 </span><span·class="nf">first_start</span><span·class="p"·data-group-id="0726219256-5">(</span><span·class="p"·data-group-id="0726219256-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="1830684759-5">(</span><span·class="p"·data-group-id="1830684759-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="0726219256-6">(</span><span·class="p"·data-group-id="0726219256-7">[</span><span·class="nf">node</span><span·class="p"·data-group-id="0726219256-8">(</span><span·class="p"·data-group-id="0726219256-8">)</span><span·class="p"·data-group-id="0726219256-7">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·b77fcc86267aae25b8b7b80b8e799510795682b9f3ac85ea7eddccec90066e82·...·]-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="1830684759-6">(</span><span·class="p"·data-group-id="1830684759-7">[</span><span·class="nf">node</span><span·class="p"·data-group-id="1830684759-8">(</span><span·class="p"·data-group-id="1830684759-8">)</span><span·class="p"·data-group-id="1830684759-7">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·9145a6349a65b77ea6e817ea1e54c95f80c5673b0a2039559cf0e5d2c71fe747·...·]-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="0726219256-9">(</span><span·class="p"·data-group-id="0726219256-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="1830684759-9">(</span><span·class="p"·data-group-id="1830684759-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="0726219256-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="1830684759-10">(</span><span·class="ss">httpd_user</span><span·class="p">,</span><span·class="w">
315 ························</span><span·class="p"·data-group-id="0726219256-11">[</span><span·class="p"·data-group-id="0726219256-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="0726219256-12">}</span><span·class="p">,</span><span·class="w">315 ························</span><span·class="p"·data-group-id="1830684759-11">[</span><span·class="p"·data-group-id="1830684759-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="1830684759-12">}</span><span·class="p">,</span><span·class="w">
316 ·························</span><span·class="p"·data-group-id="0726219256-13">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0726219256-14">[</span><span·class="nf">node</span><span·class="p"·data-group-id="0726219256-15">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·f3dbcced5a411d764eded8d661f1474cc77f4f8fbbbe246f6c341a50dbd211de·...·]-13">}</span><span·class="p">,</span><span·class="w">316 ·························</span><span·class="p"·data-group-id="1830684759-13">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1830684759-14">[</span><span·class="nf">node</span><span·class="p"·data-group-id="1830684759-15">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·364fa9000364c644788eff4581a638b9f3ccdf0c30abf262839315916b3e3bc0·...·]-13">}</span><span·class="p">,</span><span·class="w">
317 ·························</span><span·class="p"·data-group-id="0726219256-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="0726219256-17">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">317 ·························</span><span·class="p"·data-group-id="1830684759-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="1830684759-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="0726219256-17">)</span><span·class="p"·data-group-id="0726219256-16">}</span><span·class="p"·data-group-id="0726219256-11">]</span><span·class="p"·data-group-id="0726219256-10">)</span><span·class="p">,</span><span·class="w">318 ··················································</span><span·class="ss">httpd_user</span><span·class="p"·data-group-id="1830684759-17">)</span><span·class="p"·data-group-id="1830684759-16">}</span><span·class="p"·data-group-id="1830684759-11">]</span><span·class="p"·data-group-id="1830684759-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="0726219256-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="1830684759-18">(</span><span·class="ss">httpd_group</span><span·class="p">,</span><span·class="w">
320 ························</span><span·class="p"·data-group-id="0726219256-19">[</span><span·class="p"·data-group-id="0726219256-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="0726219256-20">}</span><span·class="p">,</span><span·class="w">320 ························</span><span·class="p"·data-group-id="1830684759-19">[</span><span·class="p"·data-group-id="1830684759-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="1830684759-20">}</span><span·class="p">,</span><span·class="w">
321 ·························</span><span·class="p"·data-group-id="0726219256-21">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0726219256-22">[</span><span·class="nf">node</span><span·class="p"·data-group-id="0726219256-23">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·4b57c893a9aa00e429d25c8671ba1544e7107d827c4093ee0bfd64ec605a9d3a·...·]-21">}</span><span·class="p">,</span><span·class="w">321 ·························</span><span·class="p"·data-group-id="1830684759-21">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1830684759-22">[</span><span·class="nf">node</span><span·class="p"·data-group-id="1830684759-23">(</span><span·class="p[·...·truncated·by·diffoscope;·len:·135,·SHA:·e7a2b2e8f3bb061d58bf25c71500d111502608dbe01562ffd07453cb6a6a7b07·...·]-21">}</span><span·class="p">,</span><span·class="w">
322 ·························</span><span·class="p"·data-group-id="0726219256-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="0726219256-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="0726219256-25">)</span><span·class="p"·data-group-id="0726219256-24">}</span><span·class="p"·data-group-id="0726219256-19">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·20,·SHA:·fd722ba5297397d5b5a60990df6bac6de9959824c28d2b7c4fb2d854afdfc800·...·]</span><span·class="p">,</span><span·class="w">322 ·························</span><span·class="p"·data-group-id="1830684759-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="1830684759-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="1830684759-25">)</span><span·class="p"·data-group-id="1830684759-24">}</span><span·class="p"·data-group-id="1830684759-19">]</span><span·class="p"·data-group-id="1830684759-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="0726219256-26">(</span><span·class="p"·data-group-id="0726219256-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="0726219256-27">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·4a3511d1a80b294c02b15eda0bf1517715e6882f30328154520f412284f729bc·...·]-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="1830684759-26">(</span><span·class="p"·data-group-id="1830684759-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="1830684759-27">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·5e20e57eff1fa1f336778eb99aa00b713aad255c6b5f0acd1a8bb2ed5c9b7948·...·]-26">)</span><span·class="p">.</span><span·class="w">
  
325 </span><span·class="nf">start</span><span·class="p"·data-group-id="0726219256-28">(</span><span·class="p"·data-group-id="0726219256-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="1830684759-28">(</span><span·class="p"·data-group-id="1830684759-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="0726219256-29">(</span><span·class="p"·data-group-id="0726219256-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="1830684759-29">(</span><span·class="p"·data-group-id="1830684759-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="0726219256-30">(</span><span·class="p"·data-group-id="0726219256-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="0726219256-31">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·4a3511d1a80b294c02b15eda0bf1517715e6882f30328154520f412284f729bc·...·]-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="1830684759-30">(</span><span·class="p"·data-group-id="1830684759-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="1830684759-31">]</span><span·cl[·...·truncated·by·diffoscope;·len:·110,·SHA:·5e20e57eff1fa1f336778eb99aa00b713aad255c6b5f0acd1a8bb2ed5c9b7948·...·]-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.4/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.4/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.4/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.4/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.2/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.3/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.3/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.3/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.3/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.3/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="7625666408-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="7625666408-1">}</span><span·class="w">1044 <a·href="../../../../erts-15.2.3/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="6501495603-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="6501495603-1">}</span><span·class="w">
1045 ·</span><span·class="p"·data-group-id="7625666408-2">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7625666408-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:·1264ff65718286ab2457a62565fc6dd85bab4890ef6c442b9a1fb8ac11b920f0·...·]-2">}</span><span·class="w">1045 ·</span><span·class="p"·data-group-id="6501495603-2">{</span><span·class="n">RequestId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6501495603-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:·13b2394da027b2a305ccf67a1a92c608ccfbc54d7a093c7d0ac2a4c5f00d4675·...·]-2">}</span><span·class="w">
1046 ·</span><span·class="p"·data-group-id="7625666408-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="7625666408-4">}</span><span·class="w">1046 ·</span><span·class="p"·data-group-id="6501495603-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="6501495603-4">}</span><span·class="w">
1047 ·</span><span·class="p"·data-group-id="7625666408-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="762566640[·...·truncated·by·diffoscope;·len:·1,·SHA:·2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3·...·]-5">}</span><span·class="w">1047 ·</span><span·class="p"·data-group-id="6501495603-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="650149560[·...·truncated·by·diffoscope;·len:·1,·SHA:·4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce·...·]-5">}</span><span·class="w">
1048 ·</span><span·class="p"·data-group-id="7625666408-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:·cde9c0fcab1a799c4f5be239165546c78e3fa61f7c18b49caf1ed78f66fdcfaa·...·]-6">}</span><span·class="w">1048 ·</span><span·class="p"·data-group-id="6501495603-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:·4bf12d5c3fcb9011d5a81c58d7a5aa8ab7e34eef6eef9b0ed5d9491b9805ee2e·...·]-6">}</span><span·class="w">
1049 ·</span><span·class="p"·data-group-id="7625666408-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="7625666408-7">}</span><span·class="w">1049 ·</span><span·class="p"·data-group-id="6501495603-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="6501495603-7">}</span><span·class="w">
1050 ·</span><span·class="p"·data-group-id="7625666408-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="7625666408-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.3/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="6501495603-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="6501495603-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.3/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.2/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="1427405721-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="8015000735-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="1427405721-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="1427405721-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">inets</sp[·...·truncated·by·diffoscope;·len:·330,·SHA:·1d5e9750a664611dfec6d7dfddaa8caee084e8d5ba7a16b30d1b82c8969e00dc·...·]-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="8015000735-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="8015000735-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">inets</sp[·...·truncated·by·diffoscope;·len:·330,·SHA:·fe4e0d0f008e24b30716aa8c10e61d2d4748c295b5285bf1d56e6de760743c28·...·]-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="9772377098-1">[</span><span·class="p"·data-group-id="9772377098-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="6577403485-1">[</span><span·class="p"·data-group-id="6577403485-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
257 ·</span><span·class="p"·data-group-id="9772377098-3">[</span><span·class="p"·data-group-id="9772377098-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">257 ·</span><span·class="p"·data-group-id="6577403485-3">[</span><span·class="p"·data-group-id="6577403485-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
258 ··</span><span·class="p"·data-group-id="9772377098-5">[</span><span·class="p"·data-group-id="9772377098-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="6577403485-5">[</span><span·class="p"·data-group-id="6577403485-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="9772377098-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="9772377098-8">#{</span><span·class="w">·</span><span·class="ss">file</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·173,·SHA:·02ff5134670582b185f014f314d3ae30f9e85e5f440071989bd28caf8732b7a7·...·]-8">}</span><span·class="p">,</span><span·class="w">259 ····</span><span·class="p"·data-group-id="6577403485-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="6577403485-8">#{</span><span·class="w">·</span><span·class="ss">file</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·173,·SHA:·d08190046d9385202b37a0ec573f6046a2b3fe37a4d183cf4d9a0a1517f04b9d·...·]-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="9772377098-9">[</span><span·class="p"·data-group-id="9772377098-10">{</span><span·class="ss">inets_httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9772377098-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="6577403485-9">[</span><span·class="p"·data-group-id="6577403485-10">{</span><span·class="ss">inets_httpd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6577403485-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="9772377098-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="6577403485-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="9772377098-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><spa[·...·truncated·by·diffoscope;·len:·147,·SHA:·25f67f9b7e3cc4f38da67963153dd4a858fe251546b621ecb27a155e8c76c506·...·]-13">]</span><span·class="w">262 ··································</span><span·class="p"·data-group-id="6577403485-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><spa[·...·truncated·by·diffoscope;·len:·147,·SHA:·744f960a4f5899a150ecbcffaf14d9b5eb90520ff7fc455a1b358b911217fc8c·...·]-13">]</span><span·class="w">
263 ·································</span><span·class="p"·data-group-id="9772377098-12">}</span><span·class="p"·data-group-id="9772377098-11">}</span><span·class="p"·data-group-id="9772377098-10">}</span><span·class="p"·data-group-id="9772377098-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="9772377098-7">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·611,·SHA:·6ab1d0c300e561da4bafb02444e5b65d7bc0f98416612207d3b19a42926a3314·...·]</span><span·class="p">,</span><span·class="w">263 ·································</span><span·class="p"·data-group-id="6577403485-12">}</span><span·class="p"·data-group-id="6577403485-11">}</span><span·class="p"·data-group-id="6577403485-10">}</span><span·class="p"·data-group-id="6577403485-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="6577403485-7">}</span><span·class="p"·data-group-id="6577403485-6">}</span><span·class="p"·data-group-id="6577403485-5">]</span><span·class="p"·data-group-id="6577403485-4">}</span><span·class="p"·data-group-id="6577403485-3">]</span><span·class="p"·data-group-id="6577403485-2">}</span><span·class="p"·data-group-id="6577403485-1">]</span><span·class="p">.</span></code></pre><p>or·if·you·want·to·add·it·to·the·default·logger·via·an·API:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">add_handler_filter</span><span·class="p"·data-group-id="5365695650-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="4552948963-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="5365695650-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="4552948963-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="5365695650-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="4552948963-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:·305,·SHA:·973e42e632a71a0fd0724941709e2272fc698937674d1edcef1de5f9b55eff8b·...·]-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="5365695650-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:·305,·SHA:·91c1e8b7e4c876979f2a88498669ecef34f6d7e7934769ca08394ff11191055a·...·]-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="0366584869-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:·de7a73016188b39b6224073294630e37ad1928d157ee419373361e9a7da7c2b9·...·]-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="8380782781-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:·83485009ead1543ff144b8fef16e71e52c16ee339c4a0567eeb5cddd4cf21b45·...·]-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="3454580794-1">{</span><span·class="ss">alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3454580794-2">{</span><span·class="s">&quot;/image&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s"[·...·truncated·by·diffoscope;·len:·128,·SHA:·3ee84368e40cb1084d12a65703b12949591b0065739f2421a79357b02b34c35b·...·]-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="8160960651-1">{</span><span·class="ss">alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8160960651-2">{</span><span·class="s">&quot;/image&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s"[·...·truncated·by·diffoscope;·len:·128,·SHA:·9e46a5d7e14819a4ca807989c5ea366295a5334499d827a4ee80aafc70c4211b·...·]-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.1/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.1/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="1406534556-1">{</span><span·class="ss">re_write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1406534556-2">{</span><span·class="s">&quot;^/[~]([^/]+)(.*)$&quot;</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·146,·SHA:·7a415418f65c9e31785303844fd38dcc787f2ff12973912da5b7e82966c9d48a·...·]-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="1917338739-1">{</span><span·class="ss">re_write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1917338739-2">{</span><span·class="s">&quot;^/[~]([^/]+)(.*)$&quot;</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·146,·SHA:·ba3e62b2b29794d3a7f9d839d5d0deb72f78d709686d1f2dc0c08731f1976b79·...·]-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="9512876551-1">{</span><span·class="ss">directory_index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9512876551-2">[</span><span·class="s">&quot;index.html&quot;</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·140,·SHA:·c9607a72304452455f5592f886f05e7611320be39357ef2e0ddfa2829d8110cc·...·]-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="7557648528-1">{</span><span·class="ss">directory_index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7557648528-2">[</span><span·class="s">&quot;index.html&quot;</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·140,·SHA:·c1cda65043fdc777a7a27b1a8ba2510abc166364d789a0b3bf2fc774e7923e9f·...·]-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="7702037921-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7702037921-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:·fb78ef9a03bc2a95ab2b783150624988265d1e5026dca1877821b0d1d6bbccac·...·]-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="5198477528-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5198477528-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:·d056ca9bc0f8e7120201db4cf4ad20c8a1a3f66992ea78c3f6754d5d5e830585·...·]-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="7237427715-1">{</span><span·class="ss">erl_script_alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7237427715-2">{</span><span·class="s">&quot;/cgi-bin/example&quot;</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·243,·SHA:·46903e10b8b41b0d3fb9a76abe780643ab6f9d139a910564f641fba29c9e03c3·...·]-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="9603633941-1">{</span><span·class="ss">erl_script_alias</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9603633941-2">{</span><span·class="s">&quot;/cgi-bin/example&quot;</span><span·class="p">,</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·243,·SHA:·ab7f079c846c259a337a487993de488cb0ad2220c9767cc7a8378683a9f9561f·...·]-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="6828033056-1">{</span><span·class="ss">directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6828033056-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="6828033056-3">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·1510,·SHA:·861fd7ff12b1073aafdc304eb97aac1bc9f3d1f46c8e553296ec8f8ce07cf808·...·]-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="1324085508-1">{</span><span·class="ss">directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1324085508-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="1324085508-3">(</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·1510,·SHA:·16997c273cb421cf81aada3d054da890aa66972a17ff3f7a127f2c1063d50a47·...·]-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="0538432217-1">{</span><span·class="ss">security_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0538432217-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="0538432217-3">(</span><span·clas[·...·truncated·by·diffoscope;·len:·717,·SHA:·86bd1de8114032dacba6c5e5cf5278010892b13c303c96a186772995edf63b8f·...·]-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="4836539746-1">{</span><span·class="ss">security_directory</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4836539746-2">{</span><span·class="nf">path</span><span·class="p"·data-group-id="4836539746-3">(</span><span·clas[·...·truncated·by·diffoscope;·len:·717,·SHA:·028df98788237eb822980a95813b5409afd489168a4a8a8db0522e6d9efd0381·...·]-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="4858451412-1">{</span><span·class="p"·data-group-id="4858451412-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="0871296951-1">{</span><span·class="p"·data-group-id="0871296951-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="4858451412-2">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4858451412-3">{</span><span·class="w">435 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="0871296951-2">(</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0871296951-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="4858451412-4">[</span><span·class="p"·data-group-id="4858451412-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="0871296951-4">[</span><span·class="p"·data-group-id="0871296951-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">
Max diff block lines reached; 3915/49485 bytes (7.91%) of diff not shown.
295 KB
./usr/share/doc/erlang-doc/html/lib/inets-9.3.2/doc/html/inets.epub
4.03 KB
zipinfo {}
    
Offset 1, 27 lines modifiedOffset 1, 27 lines modified
1 Zip·file·size:·152774·bytes,·number·of·entries:·251 Zip·file·size:·152771·bytes,·number·of·entries:·25
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:53·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:46·mimetype
3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Mar-18·07:53·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······714·bx·defN·25-Mar-18·08:46·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx···149866·bx·defN·25-Mar-18·07:53·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx···149866·bx·defN·25-Mar-18·08:46·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····2125·bx·defN·25-Mar-18·07:53·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····2125·bx·defN·25-Mar-18·08:46·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····31039·bx·defN·25-Mar-18·07:53·OEBPS/mod_security.xhtml6 ?rw-r--r--··6.1·unx····31039·bx·defN·25-Mar-18·08:46·OEBPS/mod_security.xhtml
7 ?rw-r--r--··6.1·unx····13707·bx·defN·25-Mar-18·07:53·OEBPS/mod_esi.xhtml7 ?rw-r--r--··6.1·unx····13707·bx·defN·25-Mar-18·08:46·OEBPS/mod_esi.xhtml
8 ?rw-r--r--··6.1·unx····76409·bx·defN·25-Mar-18·07:53·OEBPS/mod_auth.xhtml8 ?rw-r--r--··6.1·unx····76409·bx·defN·25-Mar-18·08:46·OEBPS/mod_auth.xhtml
9 ?rw-r--r--··6.1·unx····15432·bx·defN·25-Mar-18·07:53·OEBPS/mod_alias.xhtml9 ?rw-r--r--··6.1·unx····15432·bx·defN·25-Mar-18·08:46·OEBPS/mod_alias.xhtml
10 ?rw-r--r--··6.1·unx·····1431·bx·defN·25-Mar-18·07:53·OEBPS/introduction.xhtml10 ?rw-r--r--··6.1·unx·····1431·bx·defN·25-Mar-18·08:46·OEBPS/introduction.xhtml
11 ?rw-r--r--··6.1·unx·····2619·bx·defN·25-Mar-18·07:53·OEBPS/inets_services.xhtml11 ?rw-r--r--··6.1·unx·····2619·bx·defN·25-Mar-18·08:46·OEBPS/inets_services.xhtml
12 ?rw-r--r--··6.1·unx····19741·bx·defN·25-Mar-18·07:53·OEBPS/inets.xhtml12 ?rw-r--r--··6.1·unx····19741·bx·defN·25-Mar-18·08:46·OEBPS/inets.xhtml
13 ?rw-r--r--··6.1·unx····39157·bx·defN·25-Mar-18·07:53·OEBPS/httpd_util.xhtml13 ?rw-r--r--··6.1·unx····39157·bx·defN·25-Mar-18·08:46·OEBPS/httpd_util.xhtml
14 ?rw-r--r--··6.1·unx·····7600·bx·defN·25-Mar-18·07:53·OEBPS/httpd_socket.xhtml14 ?rw-r--r--··6.1·unx·····7600·bx·defN·25-Mar-18·08:46·OEBPS/httpd_socket.xhtml
15 ?rw-r--r--··6.1·unx·····6327·bx·defN·25-Mar-18·07:53·OEBPS/httpd_custom_api.xhtml15 ?rw-r--r--··6.1·unx·····6327·bx·defN·25-Mar-18·08:46·OEBPS/httpd_custom_api.xhtml
16 ?rw-r--r--··6.1·unx···110849·bx·defN·25-Mar-18·07:53·OEBPS/httpd.xhtml16 ?rw-r--r--··6.1·unx···110849·bx·defN·25-Mar-18·08:46·OEBPS/httpd.xhtml
17 ?rw-r--r--··6.1·unx····85351·bx·defN·25-Mar-18·07:53·OEBPS/httpc.xhtml17 ?rw-r--r--··6.1·unx····85351·bx·defN·25-Mar-18·08:46·OEBPS/httpc.xhtml
18 ?rw-r--r--··6.1·unx·····5591·bx·defN·25-Mar-18·07:53·OEBPS/http_uri.xhtml18 ?rw-r--r--··6.1·unx·····5591·bx·defN·25-Mar-18·08:46·OEBPS/http_uri.xhtml
19 ?rw-r--r--··6.1·unx····50557·bx·defN·25-Mar-18·07:53·OEBPS/http_server.xhtml19 ?rw-r--r--··6.1·unx····50557·bx·defN·25-Mar-18·08:46·OEBPS/http_server.xhtml
20 ?rw-r--r--··6.1·unx····21764·bx·defN·25-Mar-18·07:53·OEBPS/http_client.xhtml20 ?rw-r--r--··6.1·unx····21764·bx·defN·25-Mar-18·08:46·OEBPS/http_client.xhtml
21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-erlang-ESPT6BQV.css21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:46·OEBPS/dist/epub-erlang-ESPT6BQV.css
22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-LSJCIYTM.js22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:46·OEBPS/dist/epub-LSJCIYTM.js
23 ?rw-r--r--··6.1·unx·····3408·bx·defN·25-Mar-18·07:53·OEBPS/content.opf23 ?rw-r--r--··6.1·unx·····3408·bx·defN·25-Mar-18·08:46·OEBPS/content.opf
24 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:53·OEBPS/assets/logo.png24 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:46·OEBPS/assets/logo.png
25 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:53·META-INF/container.xml25 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:46·META-INF/container.xml
26 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:53·META-INF/com.apple.ibooks.display-options.xml26 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:46·META-INF/com.apple.ibooks.display-options.xml
27 25·files,·665019·bytes·uncompressed,·148454·bytes·compressed:··77.7%27 25·files,·665019·bytes·uncompressed,·148451·bytes·compressed:··77.7%
138 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,·Mar·18·2025·07:53: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,·Mar·18·2025·08:46:48,·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="7074965472-1">[</span><span·class="p"·data-group-id="7074965472-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7074965472-3">[</span><span·class="p"·data-group-id="7074965472-4">{</span[·...·truncated·by·diffoscope;·len:·328,·SHA:·8233915ef6ef8ce12ca9347945d8e6f3e25b5634f60d6445f7aa6f15a9994008·...·]-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="7232707117-1">[</span><span·class="p"·data-group-id="7232707117-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7232707117-3">[</span><span·class="p"·data-group-id="7232707117-4">{</span[·...·truncated·by·diffoscope;·len:·328,·SHA:·60919b57bdc406da08a20440f89c8e023b536623cf96236be2104a58c7cbe9d3·...·]-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
    
Offset 921, 21 lines modifiedOffset 921, 21 lines modified
921 options.</p></section><p>By·default·the·socket·options·set·by·function921 options.</p></section><p>By·default·the·socket·options·set·by·function
922 <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·asynchronous922 <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
923 request·(<code·class="inline">sync</code>·has·the·value·<code·class="inline">false</code>).</p><ul><li><p><strong><a·href="../../../../lib/../erts/doc/html/erlang.html#t:pid/0"><code·class="inline">pid/0</code></a></strong>·-·Messages·are·sent·to·this·process·in·the·format923 request·(<code·class="inline">sync</code>·has·the·value·<code·class="inline">false</code>).</p><ul><li><p><strong><a·href="../../../../lib/../erts/doc/html/erlang.html#t:pid/0"><code·class="inline">pid/0</code></a></strong>·-·Messages·are·sent·to·this·process·in·the·format
924 <code·class="inline">{http,·ReplyInfo}</code>.</p></li><li><p><strong><a·href="../../../../lib/../erts/doc/html/erlang.html#alias/0"><code·class="inline">alias/0</code></a></strong>·-·Messages·are·sent·to·this·special·reference·in·the·format924 <code·class="inline">{http,·ReplyInfo}</code>.</p></li><li><p><strong><a·href="../../../../lib/../erts/doc/html/erlang.html#alias/0"><code·class="inline">alias/0</code></a></strong>·-·Messages·are·sent·to·this·special·reference·in·the·format
925 <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·to925 <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
926 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·receiver926 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
927 through·calls·to·the·callback·function927 through·calls·to·the·callback·function
928 <a·href="../../../../lib/../erts/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"><samp·class="w">·</samp><samp·class="p"·data-group-id="0020464249-1">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">saved_to_file</samp><samp·class="p"·data-group-id="0020464249-1">}</samp><samp·class="w">928 <a·href="../../../../lib/../erts/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"><samp·class="w">·</samp><samp·class="p"·data-group-id="1574291559-1">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">saved_to_file</samp><samp·class="p"·data-group-id="1574291559-1">}</samp><samp·class="w">
929 ·</samp><samp·class="p"·data-group-id="0020464249-2">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="0020464249-3">{</samp><samp·class="ss">error</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Reason</[·...·truncated·by·diffoscope;·len:·98,·SHA:·e3881cd203ed5db18f149510dd5869c73d961d86d3a6e2ee4df7424da05a702b·...·]9-2">}</samp><samp·class="w">929 ·</samp><samp·class="p"·data-group-id="1574291559-2">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="1574291559-3">{</samp><samp·class="ss">error</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Reason</[·...·truncated·by·diffoscope;·len:·98,·SHA:·e58fa050ca670316a5fef12c927cdadfda1dff3c1f8d44ed8ecea36ec7d5ce08·...·]9-2">}</samp><samp·class="w">
930 ·</samp><samp·class="p"·data-group-id="0020464249-4">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Result</samp><samp·class="p"·data-group-id="0020464249-4">}</samp><samp·class="w">930 ·</samp><samp·class="p"·data-group-id="1574291559-4">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Result</samp><samp·class="p"·data-group-id="1574291559-4">}</samp><samp·class="w">
931 ·</samp><samp·class="p"·data-group-id="0020464249-5">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">stream_start</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Headers</samp><samp·class="p"·data-group-id="0020464249-5">}</samp><samp·class="w">931 ·</samp><samp·class="p"·data-group-id="1574291559-5">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">stream_start</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Headers</samp><samp·class="p"·data-group-id="1574291559-5">}</samp><samp·class="w">
932 ·</samp><samp·class="p"·data-group-id="0020464249-6">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">stream_start</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Headers</samp><samp·class="p">,</samp><samp·class="w">[·...·truncated·by·diffoscope;·len:·81,·SHA:·c413d793bccd5d1bf0d1e228a8f4cab357272cfd1a57bb558d28c54dda3216e4·...·]9-6">}</samp><samp·class="w">932 ·</samp><samp·class="p"·data-group-id="1574291559-6">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">stream_start</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Headers</samp><samp·class="p">,</samp><samp·class="w">[·...·truncated·by·diffoscope;·len:·81,·SHA:·b78d5a95f2505508d1bd6f141b8b4653de219418c70a782334a53cbec4423042·...·]9-6">}</samp><samp·class="w">
933 ·</samp><samp·class="p"·data-group-id="0020464249-7">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">stream</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">BinBodyPart</samp><samp·class="p"·data-group-id="0020464249-7">}</samp><samp·class="w">933 ·</samp><samp·class="p"·data-group-id="1574291559-7">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">stream</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">BinBodyPart</samp><samp·class="p"·data-group-id="1574291559-7">}</samp><samp·class="w">
934 ·</samp><samp·class="p"·data-group-id="0020464249-8">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">stream_end</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Headers</samp><samp·class="p"·data-group-id="0020464249-8">}</samp></code></pre><p>Default·is·the·<code·class="inline">pid</code>·of·the·process·calling·the·request·function·(<a·href="../../../../lib/../erts/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·an934 ·</samp><samp·class="p"·data-group-id="1574291559-8">{</samp><samp·class="n">RequestId</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">stream_end</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Headers</samp><samp·class="p"·data-group-id="1574291559-8">}</samp></code></pre><p>Default·is·the·<code·class="inline">pid</code>·of·the·process·calling·the·request·function·(<a·href="../../../../lib/../erts/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
935 URI·with·an·IPv6·address·with·brackets,·if·those·brackets·are·to·be·retained935 URI·with·an·IPv6·address·with·brackets,·if·those·brackets·are·to·be·retained
936 (<code·class="inline">true</code>)·or·stripped·(<code·class="inline">false</code>).</p><p>Default·is·<code·class="inline">false</code>.</p></li></ul>936 (<code·class="inline">true</code>)·or·stripped·(<code·class="inline">false</code>).</p><p>Default·is·<code·class="inline">false</code>.</p></li></ul>
937 ··</section>937 ··</section>
938 </section>938 </section>
939 <section·class="detail"·id="reset_cookies/0">939 <section·class="detail"·id="reset_cookies/0">
  
940 ··<div·class="detail-header">940 ··<div·class="detail-header">
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.2/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="7586091601-1">[</span><span·class="p"·data-group-id="7586091601-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7586091601-3">[</span><span·class="p"·data-group-id="7586091601-4">{</spa[·...·truncated·by·diffoscope;·len:·329,·SHA:·06b85d22842c30a4f2842fb2837dfb8c08b9318f01e7c93f507172d6ded7da92·...·]-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="4799970945-1">[</span><span·class="p"·data-group-id="4799970945-2">{</span><span·class="ss">inets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4799970945-3">[</span><span·class="p"·data-group-id="4799970945-4">{</spa[·...·truncated·by·diffoscope;·len:·329,·SHA:·0dffb8e3aad9a733eab4d4524f31027677b203595bb57a5924e3e6150a1796db·...·]-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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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·Tue·Mar·18·07:54:41·GMT·2025·-->4 <!--·Generated·by·javadoc·(21)·on·Tue·Mar·18·08:47:52·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-03-18">8 <meta·name="dc.created"·content="2025-03-18">
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.3/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="6777871545-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="8196926697-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="6777871545-2">[</span><span·class="p"·data-group-id="6777871545-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="6777871545-3">}</span><span·class="p">,</span><span·class="w">148 ··</span><span·class="p"·data-group-id="8196926697-2">[</span><span·class="p"·data-group-id="8196926697-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="8196926697-3">}</span><span·class="p">,</span><span·class="w">
149 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-4">}</span><span·class="p">,</span><span·class="w">149 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-4">}</span><span·class="p">,</span><span·class="w">
150 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-5">}</span><span·class="p">,</span><span·class="w">150 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-5">}</span><span·class="p">,</span><span·class="w">
151 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-6">}</span><span·class="p">,</span><span·class="w">151 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-6">}</span><span·class="p">,</span><span·class="w">
152 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-7">}</span><span·class="p">,</span><span·class="w">152 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-7">}</span><span·class="p">,</span><span·class="w">
153 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-8">}</span><span·class="p">,</span><span·class="w">153 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-8">}</span><span·class="p">,</span><span·class="w">
154 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-9">}</span><span·class="p">,</span><span·class="w">154 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-9">}</span><span·class="p">,</span><span·class="w">
155 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-10">}</span><span·class="p">,</span><span·class="w">155 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-10">}</span><span·class="p">,</span><span·class="w">
156 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-11">}</span><span·class="p">,</span><span·class="w">156 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-11">}</span><span·class="p">,</span><span·class="w">
157 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-12">}</span><span·class="p">,</span><span·class="w">157 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-12">}</span><span·class="p">,</span><span·class="w">
158 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-13">}</span><span·class="p">,</span><span·class="w">158 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-13">}</span><span·class="p">,</span><span·class="w">
159 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-14">}</span><span·class="p">,</span><span·class="w">159 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-14">}</span><span·class="p">,</span><span·class="w">
160 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-15">}</span><span·class="p">,</span><span·class="w">160 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-15">}</span><span·class="p">,</span><span·class="w">
161 ···</span><span·class="p"·data-group-id="6777871545-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="6777871545-16">}</span><span·class="p"·data-group-id="6777871545-2">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·0b289f9bad8ae526945de66c41f827ad258ba1475909c0b9f2ebbb0a90f8736d·...·]-1">}</span><span·class="p">.</span><span·class="w">161 ···</span><span·class="p"·data-group-id="8196926697-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="8196926697-16">}</span><span·class="p"·data-group-id="8196926697-2">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·dcf99a6a25166697f13e5a88a2e8cee6bd825f984dabdfe403749e4f932e3112·...·]-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="6777871545-17">(</span><span·class="p"·data-group-id="6777871545-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="8196926697-17">(</span><span·class="p"·data-group-id="8196926697-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="6777871545-18">(</span><span·class="p"·data-group-id="6777871545-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="8196926697-18">(</span><span·class="p"·data-group-id="8196926697-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="6777871545-19">(</span><span·class="p"·data-group-id="6777871545-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="8196926697-19">(</span><span·class="p"·data-group-id="8196926697-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="6777871545-20">(</span><span·class="p"·data-group-id="6777871545-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="8196926697-20">(</span><span·class="p"·data-group-id="8196926697-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="6777871545-21">[</span><span·class="n">Module</span><span·class="p"·data-group-id="6777871545-21">]</span><span·class="w">·············</span><span·class="p"·data-group-id="6777871545-22">[</span><span·class="p"·data-group-id="6777871545-22">]</span><span·class="w">168 </span><span·class="n">Modules</span><span·class="w">······</span><span·class="p"·data-group-id="8196926697-21">[</span><span·class="n">Module</span><span·class="p"·data-group-id="8196926697-21">]</span><span·class="w">·············</span><span·class="p"·data-group-id="8196926697-22">[</span><span·class="p"·data-group-id="8196926697-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="6777871545-23">(</span><span·class="p"·data-group-id="6777871545-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="8196926697-23">(</span><span·class="p"·data-group-id="8196926697-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="6777871545-24">(</span><span·class="p"·data-group-id="6777871545-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="8196926697-24">(</span><span·class="p"·data-group-id="8196926697-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="6777871545-25">[</span><span·class="n">Name</span><span·class="p"·data-group-id="6777871545-25">]</span><span·class="w">···············</span><span·class="p"·data-group-id="6777871545-26">[</span><span·class="p"·data-group-id="6777871545-26">]</span><span·class="w">171 </span><span·class="n">Names</span><span·class="w">········</span><span·class="p"·data-group-id="8196926697-25">[</span><span·class="n">Name</span><span·class="p"·data-group-id="8196926697-25">]</span><span·class="w">···············</span><span·class="p"·data-group-id="8196926697-26">[</span><span·class="p"·data-group-id="8196926697-26">]</span><span·class="w">
172 </span><span·class="n">Apps</span><span·class="w">·········</span><span·class="p"·data-group-id="6777871545-27">[</span><span·class="n">App</span><span·class="p"·data-group-id="6777871545-27">]</span><span·class="w">················</span><span·class="p"·data-group-id="6777871545-28">[</span><span·class="p"·data-group-id="6777871545-28">]</span><span·class="w">172 </span><span·class="n">Apps</span><span·class="w">·········</span><span·class="p"·data-group-id="8196926697-27">[</span><span·class="n">App</span><span·class="p"·data-group-id="8196926697-27">]</span><span·class="w">················</span><span·class="p"·data-group-id="8196926697-28">[</span><span·class="p"·data-group-id="8196926697-28">]</span><span·class="w">
173 </span><span·class="n">Env</span><span·class="w">··········</span><span·class="p"·data-group-id="6777871545-29">[</span><span·class="p"·data-group-id="6777871545-30">{</span><span·class="n">Par</span><span·class="p">,</span><span·class="n">Val</span><span·class="p"·data-group-id="6777871545-30">}</span><span·class="p"·data-group-id="6777871545-29">]</[·...·truncated·by·diffoscope;·len:·133,·SHA:·e1d4e9855f28ddd5745cc80f510a14d2770c1e85c97cab545d6258228d467180·...·]-31">]</span><span·class="w">173 </span><span·class="n">Env</span><span·class="w">··········</span><span·class="p"·data-group-id="8196926697-29">[</span><span·class="p"·data-group-id="8196926697-30">{</span><span·class="n">Par</span><span·class="p">,</span><span·class="n">Val</span><span·class="p"·data-group-id="8196926697-30">}</span><span·class="p"·data-group-id="8196926697-29">]</[·...·truncated·by·diffoscope;·len:·133,·SHA:·6062397902a628c028329eaf6d97410e719f23d2143a54321b4187c24fcad8f1·...·]-31">]</span><span·class="w">
174 </span><span·class="n">Start</span><span·class="w">········</span><span·class="p"·data-group-id="6777871545-32">{</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">StartArgs</span><span·class="p"·data-group-id="6777871545-32">}</span><span·class="w">···</span><span·class="p"·data-group-id="6777871545-33">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·2142ea1d447b7731116b60ad5f7bd73d1e88149087e4cad2e16e8111720b6b46·...·]-33">]</span><span·class="w">174 </span><span·class="n">Start</span><span·class="w">········</span><span·class="p"·data-group-id="8196926697-32">{</span><span·class="n">Module</span><span·class="p">,</span><span·class="n">StartArgs</span><span·class="p"·data-group-id="8196926697-32">}</span><span·class="w">···</span><span·class="p"·data-group-id="8196926697-33">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·bdb85b7dd0b54598377da2f4f7ce591c2aa22485b85b712dcc11c09574737121·...·]-33">]</span><span·class="w">
175 </span><span·class="n">Phases</span><span·class="w">·······</span><span·class="p"·data-group-id="6777871545-34">[</span><span·class="p"·data-group-id="6777871545-35">{</span><span·class="n">Phase</span><span·class="p">,</span><span·class="n">PhaseArgs</span><span·class="p"·data-group-id="6777871545-35">}</span><span·class="p"·data-group-id="6777871545-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="8196926697-34">[</span><span·class="p"·data-group-id="8196926697-35">{</span><span·class="n">Phase</span><span·class="p">,</span><span·class="n">PhaseArgs</span><span·class="p"·data-group-id="8196926697-35">}</span><span·class="p"·data-group-id="8196926697-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="6777871545-36">[</span><span·class="n">ApplicationVersion</span><span·class="p"·data-group-id="6777871545-36">]</span><span·class="w">·</span><span·class="p"·data-group-id="6777871545-37">[</span><span·class="p"·data-group-id="6777871545-37">]</span><span·class="w">176 </span><span·class="n">RTDeps</span><span·class="w">·······</span><span·class="p"·data-group-id="8196926697-36">[</span><span·class="n">ApplicationVersion</span><span·class="p"·data-group-id="8196926697-36">]</span><span·class="w">·</span><span·class="p"·data-group-id="8196926697-37">[</span><span·class="p"·data-group-id="8196926697-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="6777871545-38">(</span><span·class="p"·data-group-id="6777871545-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="8196926697-38">(</span><span·class="p"·data-group-id="8196926697-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="6777871545-39">(</span><span·class="p"·data-group-id="6777871545-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="8196926697-39">(</span><span·class="p"·data-group-id="8196926697-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="6777871545-40">(</span><span·class="p"·data-group-id="6777871545-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="8196926697-40">(</span><span·class="p"·data-group-id="8196926697-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="2216015273-1">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2216015273-2">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="22160152[·...·truncated·by·diffoscope;·len:·246,·SHA:·ceba995cb816859090160988586eb4a3c270c0f5f7af3d1f451f6013687c32c7·...·]-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="5458730128-1">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5458730128-2">{</span><span·class="ss">application_starter</span><span·class="p">,</span><span·class="p"·data-group-id="54587301[·...·truncated·by·diffoscope;·len:·246,·SHA:·7baaeab8df9de5b232936d8b195af9c537d1cb28b80635d8026c9434fe254975·...·]-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.3/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="3697202291-1">[</span><span·class="ss">cp1@cave</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3697202291-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:·7d32c9f28524c7af5869d65585c8f79e0e75651bfdc7e807e7ede44aea75e3eb·...·]-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="7016790430-1">[</span><span·class="ss">cp1@cave</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7016790430-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:·0ac8779798e3da89f59c7c9555519c02067a00ca55c3297ad1ae6407e2345c35·...·]-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.3/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.3/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.3/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.1/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.1/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="5108785825-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="7654029178-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="5108785825-2">[</span><span·class="s">&quot;mnesia-4.4.7&quot;</span><span·class="p"·data-group-id="5108785825-2">]</span><span·class="p">,</span><span·class="w">197 »       </span><span·class="p"·data-group-id="7654029178-2">[</span><span·class="s">&quot;mnesia-4.4.7&quot;</span><span·class="p"·data-group-id="7654029178-2">]</span><span·class="p">,</span><span·class="w">
198 »       </span><span·class="p"·data-group-id="5108785825-3">[</span><span·class="p"·data-group-id="5108785825-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:·56282ea08901b1eb345f93ba881271331a4e7cec017c6e22cb0bc2345ed002e0·...·]-4">}</span><span·class="p">,</span><span·class="w">198 »       </span><span·class="p"·data-group-id="7654029178-3">[</span><span·class="p"·data-group-id="7654029178-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:·18d6d1b1da4c0939f668fa6bd8cdcf9dad01e6ed81c77a6a336dc540aec00597·...·]-4">}</span><span·class="p">,</span><span·class="w">
199 »       ·</span><span·class="p"·data-group-id="5108785825-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="5108785825-6">}</span><span·class="p">,</span><span·class="w">199 »       ·</span><span·class="p"·data-group-id="7654029178-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="7654029178-6">}</span><span·class="p">,</span><span·class="w">
200 »       ·</span><span·class="p"·data-group-id="5108785825-7">{</span><span·class="ss">uncompress</span><span·class="p">,</span><span·class="p"·data-group-id="5108785825-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:·4939bec6cd2a9f942731ad296bc6faa6c342db3602ef177df0352a44e38213b5·...·]-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="7654029178-7">{</span><span·class="ss">uncompress</span><span·class="p">,</span><span·class="p"·data-group-id="7654029178-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:·eaec92272d7e82f45027dfcb0c3d6506637f57dcfaed451ed38251dc0c3eef28·...·]-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="9018194772-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Prepared</span><span·class="p"·data-group-id="9018194772-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:·3a14f221d94ee10d7237c04fec55d38c729df293326ddd5953d3f6f31581cb06·...·]-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="0706344870-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Prepared</span><span·class="p"·data-group-id="0706344870-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:·532ff42d291e03711ec6022d14762c6464812201d6443876e17e61f62b04f2ad·...·]-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="9018194772-3">(</span><span·class="n">Prepared</span><span·class="p"·data-group-id="9018194772-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="0706344870-3">(</span><span·class="n">Prepared</span><span·class="p"·data-group-id="0706344870-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="7975944328-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:·313,·SHA:·be79f208ec68d165b097d8a755b3d75e7fe5eeb2283fa2094ca0f541df18ace4·...·]8-2">)</span><span·class="p">,</span><span·class="w">2349 </span><span·class="p"·data-group-id="9388085118-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:·313,·SHA:·fcfadcc36a9d34103fb284290b0f50e3cd00f87a5f24cd29bbeec14de0d9f2e0·...·]8-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="7975944328-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:·331,·SHA:·b2949f01c4eca8a6ec45d8539af3f5209960bef02e45551f375629d2ce7306d7·...·]8-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="9388085118-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:·331,·SHA:·47bd27b79efcc80bb3f738942d034b3d380f58c54f810a33c9ca6e41b71c4bf3·...·]8-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="5262068320-1">(</span><span·class="p"·data-group-id="5262068320-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="7121163026-1">(</span><span·class="p"·data-group-id="7121163026-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="3330971926-1">(</span><span·class="ss">mnesia</span><span·class="p"·data-group-id="3330971926-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="8072759319-1">(</span><span·class="ss">mnesia</span><span·class="p"·data-group-id="8072759319-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.1/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="6892363387-1">(</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="6892363387-2">(</span><span·class="ss">megaco</span><span·class="p"·data-group-id="6892363387-2">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·113,·SHA:·0d5aee547f4df9410f3991f388178bea91f972ef7d739eb4bbfaf8ab47aea56f·...·]-1">)</span><span·class="p">.</span><span·class="w">2540 and·<a·href="../../../../lib/stdlib-6.2.1/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="7085381959-1">(</span><span·class="nc">code</span><span·class="p">:</span><span·class="nf">lib_dir</span><span·class="p"·data-group-id="7085381959-2">(</span><span·class="ss">megaco</span><span·class="p"·data-group-id="7085381959-2">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·113,·SHA:·766c1dfedc6ad94b09608eda31d0e46b52fb91850ca0b76f34b51896f6193fc7·...·]-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="7787113127-1">(</span><span·class="p"·data-group-id="7787113127-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="6088117471-1">(</span><span·class="p"·data-group-id="6088117471-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.3/doc/html/config.html
    
Offset 148, 17 lines modifiedOffset 148, 17 lines modified
148 (see·<a·href="../../../../erts-15.2.3/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.3/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="2612793390-1">[</span><span·class="p"·data-group-id="2612793390-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2612793390-3">[</span><span·class="p"·data-group-id="2612793390-4">[·...·truncated·by·diffoscope;·len:·379,·SHA:·e68c23567b8902bf82c3fda09e6265d0ad6eee57c9a20930b84fee535b2c881b·...·]-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="8060233343-1">[</span><span·class="p"·data-group-id="8060233343-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8060233343-3">[</span><span·class="p"·data-group-id="8060233343-4">[·...·truncated·by·diffoscope;·len:·379,·SHA:·42f3fba38b826f74791e07fe7505fd33247d61eeac7879ea61c69ee916d5a166·...·]-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="2612793390-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2612793390-6">[</span><span·class="p"·data-group-id="2612793390-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·379,·SHA:·294e3615e1905acdac6610e026bf48a116123925621c0cb094b621cfa6084115·...·]-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="8060233343-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8060233343-6">[</span><span·class="p"·data-group-id="8060233343-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·379,·SHA:·c734227abfd58515d7766da6855536cca24ff23a115c9a364b251f60de54e69c·...·]-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.8 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.3/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.3/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.3/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="3719255245-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="0865989492-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="3719255245-2">(</span><span·class="p"·data-group-id="3719255245-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="0865989492-2">(</span><span·class="p"·data-group-id="0865989492-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="3719255245-3">(</span><span·class="p"·data-group-id="3719255245-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="0865989492-3">(</span><span·class="p"·data-group-id="0865989492-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="3719255245-4">(</span><span·class="p"·data-group-id="3719255245-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="0865989492-4">(</span><span·class="p"·data-group-id="0865989492-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="3719255245-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="3719255245-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="0865989492-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="0865989492-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="3719255245-6">(</span><span·class="p"·data-group-id="3719255245-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="0865989492-6">(</span><span·class="p"·data-group-id="0865989492-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="3719255245-7">[</span><span·class="p"·data-group-id="3719255245-8">{</span><span·class="p"·data-group-id="3719255245-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:·99c6c78e789c9c483d65bc1b0ed0b0bf3c22a03b08bbe477d013a183b741b2cc·...·]-9">}</span><span·class="p">,</span><span·class="w">164 ···</span><span·class="p"·data-group-id="0865989492-7">[</span><span·class="p"·data-group-id="0865989492-8">{</span><span·class="p"·data-group-id="0865989492-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:·0626ff61fd0b6a0cf23f4f0bda3327968954ee437944401f132ce92e122fb89a·...·]-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="3719255245-10">(</span><span·class="p"·data-group-id="3719255245-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="0865989492-10">(</span><span·class="p"·data-group-id="0865989492-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="3719255245-11">[</span><span·class="nf">binary</span><span·class="p"·data-group-id="3719255245-12">(</span><span·class="p"·data-group-id="3719255245-12">)</span><span·class="p"·data-group-id="3719255245-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="0865989492-11">[</span><span·class="nf">binary</span><span·class="p"·data-group-id="0865989492-12">(</span><span·class="p"·data-group-id="0865989492-12">)</span><span·class="p"·data-group-id="0865989492-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="3719255245-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="3719255245-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="0865989492-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="0865989492-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="3719255245-14">(</span><span·class="p"·data-group-id="3719255245-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="0865989492-14">(</span><span·class="p"·data-group-id="0865989492-14">)</span><span·class="w">
169 ····</span><span·class="p"·data-group-id="3719255245-8">}</span><span·class="p"·data-group-id="3719255245-7">]</span><span·class="p"·data-group-id="3719255245-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:·9ee01b31528954b497c899e79b17c7de52532a181da1d4191503ed6fa8eb015d·...·]-15">)</span><span·class="p">,</span><span·class="w">169 ····</span><span·class="p"·data-group-id="0865989492-8">}</span><span·class="p"·data-group-id="0865989492-7">]</span><span·class="p"·data-group-id="0865989492-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:·c8ef18de6390161fbd7299e6b354ab77898b8aa6500228a1cf6d732bdf427786·...·]-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="3719255245-16">(</span><span·class="p"·data-group-id="3719255245-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="3719255245-17">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·9ff54eaccb3e0ed90f2b514a26bb5acf72b055e118c3d3127990f89687c68f63·...·]-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="0865989492-16">(</span><span·class="p"·data-group-id="0865989492-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="0865989492-17">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·a71b7808cb8481c1d779678cb7f0e61afca806cae0a136afd364a67e35bb1edd·...·]-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.1/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.1/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.3/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="2714669482-1">(</span><span·class="ss">localhost</span><span·class="p"·data-group-id="2714669482-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="1534863130-1">(</span><span·class="ss">localhost</span><span·class="p"·data-group-id="1534863130-1">)</span><span·class="p">.</span><span·class="w">
357 </span><span·class="p"·data-group-id="2714669482-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2714669482-3">[</span><span·class="p"·data-group-id="2714669482-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·a99909ef94eeab67eafda46eef62efa4596bbaecf58490ffc3e86e53fbb20e62·...·]-2">}</span></code></pre>357 </span><span·class="p"·data-group-id="1534863130-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1534863130-3">[</span><span·class="p"·data-group-id="1534863130-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·09be16599f2d38a96852e7f89414bc7192c09a5547c19a5006374236c9d7a195·...·]-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.3/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="0377119046-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><spa[·...·truncated·by·diffoscope;·len:·64,·SHA:·898780c5cf8dd429c67cb562657e41a21a0cfb9d0f10095b9c0e2319bcad58e7·...·]-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="0322347015-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><spa[·...·truncated·by·diffoscope;·len:·64,·SHA:·9b8e1281d0b1ad80f82983b661b9d9f01c1d045bb447b35d34d7465c1c07fd54·...·]-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="0377119046-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0377119046-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="0377119046-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="0322347015-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0322347015-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="0322347015-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="0377119046-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><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·217b35ac37944cd5999ba976affc6fd9f823e1678c7fe5f5bccfc1eaf6b560aa·...·]-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="0322347015-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><span[·...·truncated·by·diffoscope;·len:·63,·SHA:·99d7626d57445834fbcf6ecfa65f776350858589cbd6a6ccc837fe691a269b1d·...·]-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="0377119046-2">)</span><span·class="p">,</span><span·class="w">1194 ·····················</span><span·class="n">Nodes</span><span·class="p"·data-group-id="0322347015-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="0377119046-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0377119046-6">(</span><span·class="n">ReqId</span><span·class="p"·data-group-id="0377119046-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="0322347015-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="0322347015-6">(</span><span·class="n">ReqId</span><span·class="p"·data-group-id="0322347015-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="0377119046-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="0377119046-8">(</span><span·class="n">R[·...·truncated·by·diffoscope;·len:·185,·SHA:·8a646e02dc041ba14a632c6ff8dfb50d5fd7876fb9068028bc858d8c8541e13b·...·]-7">}</span><span·class="w">1197 ················</span><span·class="p"·data-group-id="0322347015-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="0322347015-8">(</span><span·class="n">R[·...·truncated·by·diffoscope;·len:·185,·SHA:·84790cb85b9c85c29b1a69ae5b683a0f400a8a6b44a6df7fdb633f06d7a7262b·...·]-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="0377119046-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="0377119046-9">}</span><span·class="w">1200 ··················</span><span·class="p"·data-group-id="0322347015-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="0322347015-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="0377119046-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="0322347015-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="8929243356-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:·ecb60403c07a16aea43c8f7244bf623594f51544b489a9bc460a66813c1a2685·...·]-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="5360399128-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:·b8454bd9121ac102a60e605e57db3c4bd2cf235ae65f384e6ef105d383ef04cd·...·]-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="8929243356-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:·6bd69fabb545d37ff79a762f1bcd6df3c16519d7c7b44254da8fa17e0fc87bcc·...·]-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="5360399128-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:·b90e50c4dc981d262c2b18b5c8218ca9ffca9d9e3f70d7a0b5292be01511bea2·...·]-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="8929243356-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="8929243356-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="5360399128-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="5360399128-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="8545779902-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:·c9a3726f2233f3ee0ab35e0e15fb3e767fb0fc961ec9ee5e640868a840bef8bd·...·]-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="1128831377-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:·c934011a00c02e9e6e36ca3c6edcdded88c68be8af7793ecadeb4682e1f5437d·...·]-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="8545779902-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:·910a04e339396b42427cc392aeca2cbdeff40510568d8cfb7c19ffad1c1dbe4b·...·]-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="1128831377-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:·1eaf4e865915c6027b983ec7c52d03499ccef9257dd8beee4e1e01cf536e5857·...·]-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="8545779902-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="8545779902-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="1128831377-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="1128831377-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.3/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="7881698356-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="7881698356-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="2774303461-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="2774303461-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
184 ····</span><span·class="p"·data-group-id="7881698356-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="7881698356-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·7c828a8be2330987e1079382ef12ae653ab4d1e3070989b1f8cce010e6e3afd2·...·]-3">)</span><span·class="p">,</span><span·class="w">184 ····</span><span·class="p"·data-group-id="2774303461-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="2774303461-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·80eff2e7de98b70adfa05332a91c356044fd9a1383344a80ba32cbd30b1153fc·...·]-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="7881698356-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="7881[·...·truncated·by·diffoscope;·len:·6,·SHA:·84bed2daa5a846cc3c93005d66c5a3cea375e34d6faa480275aaaf6293669e30·...·]-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="2774303461-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="2774[·...·truncated·by·diffoscope;·len:·6,·SHA:·04b58f7107e3d0d59620cb695173b2f39ca3715b3adbd03218c63bd5d041200a·...·]-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="7881698356-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="7881698356-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="2774303461-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="2774303461-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="7881698356-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="7881698356-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="2774303461-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="2774303461-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="7881698356-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="7881698356-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="2774303461-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="2774303461-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="7881698356-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7881698356-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="7881698356-10">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·9e8027e06ed88950dbeb8472940569099711c1561d5b2d60196533668e4d544c·...·]-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="2774303461-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2774303461-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p"·data-group-id="2774303461-10">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·3b72555498b06861387c0c824f617396c7f90b1a666ba6cbe46a6ca66e66b21c·...·]-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="7881698356-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="78816983[·...·truncated·by·diffoscope;·len:·2,·SHA:·7688b6ef52555962d008fff894223582c484517cea7da49ee67800adc7fc8866·...·]-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="2774303461-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="27743034[·...·truncated·by·diffoscope;·len:·2,·SHA:·d029fa3a95e174a19934857f535eb9427d967218a36ea014b70ad704bc6c8d1c·...·]-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="8693676718-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="8693676718-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="2287938534-1">(</span><span·class="n">Name</span><span·class="p"·data-group-id="2287938534-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 ····</span><span·class="p"·data-group-id="8693676718-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="8693676718-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·6ee79aab469561185cd9462cb51366a4edf0287e6543be6cfe469638da73b163·...·]-3">)</span><span·class="p">,</span><span·class="w">194 ····</span><span·class="p"·data-group-id="2287938534-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="2287938534-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·612,·SHA:·c8fd63bd74ea65f3f198e734b2297d8cd0a41b5d46e4e6bbde5df724981036e1·...·]-3">)</span><span·class="p">,</span><span·class="w">
195 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="8693676718-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="8693[·...·truncated·by·diffoscope;·len:·6,·SHA:·b09cc695df3f5701b5d1a5aa2fdd171783c347ce45b37bdb036defc236276264·...·]-5">)</span><span·class="p">,</span><span·class="w">195 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="2287938534-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="2287[·...·truncated·by·diffoscope;·len:·6,·SHA:·07704f30a27848a783dfe7293f9ddb98f08ae817adc07223dba473e6c71438c2·...·]-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="8693676718-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="8693676718-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="2287938534-6">(</span><span·class="n">Fd</span><span·class="p"·data-group-id="2287938534-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="8693676718-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="8693676718-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="2287938534-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="2287938534-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="8693676718-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="8693676718-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="2287938534-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="2287938534-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="8693676718-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8693676718-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="8693676718-11">(</sp[·...·truncated·by·diffoscope;·len:·287,·SHA:·32918d53a7154800caf2600210c8a19ada82a632cfe12e01d25b0f930b7fb090·...·]-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="2287938534-9">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2287938534-10">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="2287938534-11">(</sp[·...·truncated·by·diffoscope;·len:·287,·SHA:·9db129e3a9ac88b02064841b14a190bad02019c79fe156f4dbdd065941a965e8·...·]-9">)</span><span·class="p">,</span><span·class="w">
202 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="8693676718-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="869367[·...·truncated·by·diffoscope;·len:·4,·SHA:·bb340b0f7e66b52b7426c07934c03a99881c41e8ea05b4ceba0e3f09b24dd538·...·]-12">)</span><span·class="p">;</span><span·class="w">202 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="2287938534-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="228793[·...·truncated·by·diffoscope;·len:·4,·SHA:·8cc579e7b007e841efe89f9483f2e41514a3abbc225c2398b27197f0f8c30d37·...·]-12">)</span><span·class="p">;</span><span·class="w">
203 </span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="8693676718-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="8693676718-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="2287938534-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="2287938534-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="8693676718-14">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8693676718-15">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="8693676718-16">(</s[·...·truncated·by·diffoscope;·len:·285,·SHA:·9bcb9eb4cf6827b632b10e417df086711b88f97d5d7b4c7280b40fa1f960169d·...·]-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="2287938534-14">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2287938534-15">&lt;&lt;</span><span·class="mi">0</span><span·class="p">:</span><span·class="p"·data-group-id="2287938534-16">(</s[·...·truncated·by·diffoscope;·len:·285,·SHA:·a20c57465d22867e4b1cebd49e4cd91c46b231e6493c676e6fbdddb6dff18003·...·]-14">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">create_file_1</span><span·class="p"·data-group-id="8693676718-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="86936767[·...·truncated·by·diffoscope;·len:·2,·SHA:·4ec9599fc203d176a301536c2e091a19bc852759b255bd6818810a42c5fed14a·...·]-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="2287938534-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="22879385[·...·truncated·by·diffoscope;·len:·2,·SHA:·86e50149658661312a9e0b35558d84f6c6d3da797f552a9657fe0558ca40cdef·...·]-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.1/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.1/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="0230072315-1">(</span><span·class="s">&quot;f.txt&quot;</span><span·class="p"·data-group-id="0230072315-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="5339860796-1">(</span><span·class="s">&quot;f.txt&quot;</span><span·class="p"·data-group-id="5339860796-1">)</span><span·class="p">.</span><span·class="w">
1963 </span><span·class="p"·data-group-id="0230072315-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0230072315-3">[</span><span·class="p"·data-group-id="0230072315-4">{</span><span·class="ss">person</span><span·class="p">,</span><span·class="s">&quot;ka[·...·truncated·by·diffoscope;·len:·487,·SHA:·ae7fab664bafb48e65c5ea40490a164b230fd057a540462db067badfe7f3cdd9·...·]-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="5339860796-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5339860796-3">[</span><span·class="p"·data-group-id="5339860796-4">{</span><span·class="ss">person</span><span·class="p">,</span><span·class="s">&quot;ka[·...·truncated·by·diffoscope;·len:·487,·SHA:·806c222197b1482fbc48ceeb2dbe738628324b6c80bb1a8effbe5a17363c9cf1·...·]-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.1/doc/html/epp.html#encoding"><code·class="inline">epp</code></a>.</p>1964 <a·href="../../../../lib/stdlib-6.2.1/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="1952818119-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="1952818119-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="1829170944-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="1829170944-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.3/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.3/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="5294339831-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="5294339831-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="7736494994-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="7736494994-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.3/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.3/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.3/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.3/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.3/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.3/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.3/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="6984185843-1">(</span><span·class="s">&quot;kernel/include/inet_sctp.hrl&quot;</span><span·class="p"·data-group-id="6984185843-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="6645202353-1">(</span><span·class="s">&quot;kernel/include/inet_sctp.hrl&quot;</span><span·class="p"·data-group-id="6645202353-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="6273530155-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="1781116960-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="6273530155-2">(</span><span·class="p"·data-group-id="6273530155-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="1781116960-2">(</span><span·class="p"·data-group-id="1781116960-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="6273530155-3">(</span><span·class="p"·data-group-id="6273530155-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="1781116960-3">(</span><span·class="p"·data-group-id="1781116960-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="6273530155-4">(</span><span·class="p"·data-group-id="6273530155-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="1781116960-4">(</span><span·class="p"·data-group-id="1781116960-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="6273530155-5">(</span><span·class="p"·data-group-id="6273530155-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="1781116960-5">(</span><span·class="p"·data-group-id="1781116960-5">)</span><span·class="w">
192 </span><span·class="p"·data-group-id="6273530155-1">}</span></code></pre><p>Determines·retransmission·time-out·parameters,·in·milliseconds,·for·the192 </span><span·class="p"·data-group-id="1781116960-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="3110291980-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="9252295376-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="3110291980-2">(</span><span·class="p"·data-group-id="3110291980-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="9252295376-2">(</span><span·class="p"·data-group-id="9252295376-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="3110291980-3">(</span><span·class="p"·data-group-id="3110291980-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="9252295376-3">(</span><span·class="p"·data-group-id="9252295376-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="3110291980-4">(</span><span·class="p"·data-group-id="3110291980-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="9252295376-4">(</span><span·class="p"·data-group-id="9252295376-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="3110291980-5">(</span><span·class="p"·data-group-id="3110291980-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="9252295376-5">(</span><span·class="p"·data-group-id="9252295376-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="3110291980-6">(</span><span·class="p"·data-group-id="3110291980-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="9252295376-6">(</span><span·class="p"·data-group-id="9252295376-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="3110291980-7">(</span><span·class="p"·data-group-id="3110291980-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="9252295376-7">(</span><span·class="p"·data-group-id="9252295376-7">)</span><span·class="w">
203 </span><span·class="p"·data-group-id="3110291980-1">}</span></code></pre><p>Determines·association·parameters·for·the·association(s)·specified·by203 </span><span·class="p"·data-group-id="9252295376-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="7116156626-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="7827133008-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="7116156626-2">(</span><span·class="p"·data-group-id="7116156626-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="7827133008-2">(</span><span·class="p"·data-group-id="7827133008-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="7116156626-3">(</span><span·class="p"·data-group-id="7116156626-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="7827133008-3">(</span><span·class="p"·data-group-id="7827133008-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="7116156626-4">(</span><span·class="p"·data-group-id="7116156626-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="7827133008-4">(</span><span·class="p"·data-group-id="7827133008-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="7116156626-5">(</span><span·class="p"·data-group-id="7116156626-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="7827133008-5">(</span><span·class="p"·data-group-id="7827133008-5">)</span><span·class="w">
211 </span><span·class="p"·data-group-id="7116156626-1">}</span></code></pre><p>Determines·the·default·parameters·that·this·socket·tries·to·negotiate211 </span><span·class="p"·data-group-id="7827133008-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="4164628344-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="0438627096-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="4164628344-2">(</span><span·class="p"·data-group-id="4164628344-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="0438627096-2">(</span><span·class="p"·data-group-id="0438627096-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="4164628344-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="4164628344-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="0438627096-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="0438627096-3">}</span><span·class="w">
231 </span><span·class="p"·data-group-id="4164628344-1">}</span><span·class="w">231 </span><span·class="p"·data-group-id="0438627096-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="4164628344-4">(</span><span·class="p"·data-group-id="4164628344-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="0438627096-4">(</span><span·class="p"·data-group-id="0438627096-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="4164628344-5">(</span><span·class="p"·data-group-id="4164628344-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="0438627096-5">(</span><span·class="p"·data-group-id="0438627096-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="5781364468-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="2819950247-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="5781364468-2">(</span><span·class="p"·data-group-id="5781364468-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="2819950247-2">(</span><span·class="p"·data-group-id="2819950247-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="5781364468-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="5781364468-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="2819950247-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="2819950247-3">}</span><span·class="w">
238 </span><span·class="p"·data-group-id="5781364468-1">}</span><span·class="w">238 </span><span·class="p"·data-group-id="2819950247-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="5781364468-4">(</span><span·class="p"·data-group-id="5781364468-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="2819950247-4">(</span><span·class="p"·data-group-id="2819950247-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="5781364468-5">(</span><span·class="p"·data-group-id="5781364468-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="2819950247-5">(</span><span·class="p"·data-group-id="2819950247-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="6697814721-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="7963560491-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="6697814721-2">(</span><span·class="p"·data-group-id="6697814721-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="7963560491-2">(</span><span·class="p"·data-group-id="7963560491-2">)</span><span·class="w">
243 </span><span·class="p"·data-group-id="6697814721-1">}</span></code></pre><p>When·set,·requests·that·the·local·endpoint·uses·the·value·specified·by243 </span><span·class="p"·data-group-id="7963560491-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="2894069385-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="2990328329-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="2894069385-2">(</span><span·class="p"·data-group-id="2894069385-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="2990328329-2">(</span><span·class="p"·data-group-id="2990328329-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="2894069385-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="2894069385-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="2990328329-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="2990328329-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="2894069385-4">(</span><span·class="p"·data-group-id="2894069385-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="2990328329-4">(</span><span·class="p"·data-group-id="2990328329-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="2894069385-5">(</span><span·class="p"·data-group-id="2894069385-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="2990328329-5">(</span><span·class="p"·data-group-id="2990328329-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="2894069385-6">(</span><span·class="p"·data-group-id="2894069385-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="2990328329-6">(</span><span·class="p"·data-group-id="2990328329-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="2894069385-7">(</span><span·class="p"·data-group-id="2894069385-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="2990328329-7">(</span><span·class="p"·data-group-id="2990328329-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="2894069385-8">(</span><span·class="p"·data-group-id="2894069385-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="2990328329-8">(</span><span·class="p"·data-group-id="2990328329-8">)</span><span·class="w">
255 </span><span·class="p"·data-group-id="2894069385-1">}</span><span·class="w">255 </span><span·class="p"·data-group-id="2990328329-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="2894069385-9">(</span><span·class="p"·data-group-id="2894069385-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="2990328329-9">(</span><span·class="p"·data-group-id="2990328329-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="2894069385-10">(</span><span·class="p"·data-group-id="2894069385-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="2990328329-10">(</span><span·class="p"·data-group-id="2990328329-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="7791789331-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="8184873368-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="7791789331-2">(</span><span·class="p"·data-group-id="7791789331-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="8184873368-2">(</span><span·class="p"·data-group-id="8184873368-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="7791789331-3">(</span><span·class="p"·data-group-id="7791789331-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="8184873368-3">(</span><span·class="p"·data-group-id="8184873368-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="7791789331-4">(</span><span·class="p"·data-group-id="7791789331-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="8184873368-4">(</span><span·class="p"·data-group-id="8184873368-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="7791789331-5">(</span><span·class="p"·data-group-id="7791789331-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="8184873368-5">(</span><span·class="p"·data-group-id="8184873368-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="7791789331-6">(</span><span·class="p"·data-group-id="7791789331-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="8184873368-6">(</span><span·class="p"·data-group-id="8184873368-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="7791789331-7">(</span><span·class="p"·data-group-id="7791789331-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="8184873368-7">(</span><span·class="p"·data-group-id="8184873368-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="7791789331-8">(</span><span·class="p"·data-group-id="7791789331-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="8184873368-8">(</span><span·class="p"·data-group-id="8184873368-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="7791789331-9">(</span><span·class="p"·data-group-id="7791789331-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="8184873368-9">(</span><span·class="p"·data-group-id="8184873368-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="7791789331-10">(</span><span·class="p"·data-group-id="7791789331-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="8184873368-10">(</span><span·class="p"·data-group-id="8184873368-10">)</span><span·class="w">
273 </span><span·class="p"·data-group-id="7791789331-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="8184873368-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="3886672279-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="0980183294-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="3886672279-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="0980183294-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.3/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="1380359776-1">(</span><span·class="p"·data-group-id="1380359776-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="7923869123-1">(</span><span·class="p"·data-group-id="7923869123-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="1380359776-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="1380359776-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·119,·SHA:·7046781709ad0a1ae0dcf3e596d733f22a86afb23dac156b9a515ac0b87fd513·...·]-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="7923869123-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="7923869123-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·119,·SHA:·844891f004d1423b031cbcaa797b0809a3950f81ff1f13ee49fc376da1906ff7·...·]-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="1380359776-4">[</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1380359776-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:·b4e155e985ffe3f64e444abacbdab0d1d102eb824d552c81400a5385b0c7d690·...·]-3">)</span><span·class="p">,</span><span·class="w">133 ·································</span><span·class="p"·data-group-id="7923869123-4">[</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7923869123-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:·535c63e885772a164f7c06288bcc8cdf6472eb85ea6c82dc33e7868eba0e166f·...·]-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="1380359776-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="1380359776-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="7923869123-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="7923869123-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="1380359776-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="1380359776-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="7923869123-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7923869123-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="2716107667-1">(</span><span·class="p"·data-group-id="2716107667-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="8218623620-1">(</span><span·class="p"·data-group-id="8218623620-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
137 ····</span><span·class="p"·data-group-id="2716107667-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="2716107667-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·535,·SHA:·9d4cfe527fd9f194e65d624379c74eba8b1e42e6a09939fb0f71b1babeae02cd·...·]-5">}</span><span·class="p">,</span><span·class="w">137 ····</span><span·class="p"·data-group-id="8218623620-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="8218623620-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·535,·SHA:·39a1d82ed9ea29d8a3183f5f775e7dacad99934b4a40e1dc06e36b8f51dc9a07·...·]-5">}</span><span·class="p">,</span><span·class="w">
138 ········································</span><span·class="p"·data-group-id="2716107667-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="2716107667-6">}</span><span·class="p"·data-group-id="2716107667-4">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·d51b9a0944d400329ef32a09837a9c1108b9f8f4a4044230ca507b3c6b3225e1·...·]-3">)</span><span·class="p">,</span><span·class="w">138 ········································</span><span·class="p"·data-group-id="8218623620-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="8218623620-6">}</span><span·class="p"·data-group-id="8218623620-4">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·80a420b7cf339d0127ec7bffd4e84cb59bb0dc6eb455a4e631036915be52f5a1·...·]-3">)</span><span·class="p">,</span><span·class="w">
139 ····</span><span·class="p"·data-group-id="2716107667-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="2716107667-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·199,·SHA:·d4a2d6e99a80b8fab090d7238d09a3bdcb367b310c33dde3cf22ea1db4f5fcf8·...·]-8">)</span><span·class="p">,</span><span·class="w">139 ····</span><span·class="p"·data-group-id="8218623620-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="8218623620-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·199,·SHA:·d805ef14a974794cfad330fce70036764ade359a35e4d2988674bf27fd63f4eb·...·]-8">)</span><span·class="p">,</span><span·class="w">
140 ····</span><span·class="p"·data-group-id="2716107667-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="2716107667-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·300,·SHA:·ffbf8976cb3e5156c28adc76ab416632864c54b95f728249b51e57e99026709c·...·]-10">)</span><span·class="p">,</span><span·class="w">140 ····</span><span·class="p"·data-group-id="8218623620-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="8218623620-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·300,·SHA:·997bb57da50fc3adfe695de12481c4b6e92550e332b37c97ab85a104ae7d8fa2·...·]-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="2716107667-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="2716107667-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="8218623620-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="8218623620-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="2716107667-13">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="2716107667-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="8218623620-13">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="8218623620-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="2716107667-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="2716107667-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="8218623620-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="8218623620-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="2716107667-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="2716107667-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="8218623620-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="8218623620-15">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
146 ········</span><span·class="p"·data-group-id="2716107667-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="2716107667-16">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">146 ········</span><span·class="p"·data-group-id="8218623620-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="8218623620-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="2716107667-17">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2716107667-18">[</span><span·class="n">Bs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·c[·...·truncated·by·diffoscope;·len:·88,·SHA:·521a1ab70cbed1286a0c65543e95f1ed5ec96ff417e5134dd691bd33a466b994·...·]-17">)</span><span·class="p">;</span><span·class="w">147 ············</span><span·class="nf">do_recv</span><span·class="p"·data-group-id="8218623620-17">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8218623620-18">[</span><span·class="n">Bs</span><span·class="p">,</span><span·class="w">·</span><span·class="n">B</span><span·c[·...·truncated·by·diffoscope;·len:·88,·SHA:·a4d54bfd39fadf9a9ba1e4bbd2a522b50b1ba5cd87a3907d4e248225c8850d78·...·]-17">)</span><span·class="p">;</span><span·class="w">
148 ········</span><span·class="p"·data-group-id="2716107667-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="2716107667-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">148 ········</span><span·class="p"·data-group-id="8218623620-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="8218623620-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
149 ············</span><span·class="p"·data-group-id="2716107667-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="2716107667-21">(</span><span·class="n">Bs</span><span·class="p"·data-group-id="2716107667-[·...·truncated·by·diffoscope;·len:·53,·SHA:·ccc6fb7d782a279fe9654e96c88ddeaaedf69b60c24c059fe7b308ece1616fb2·...·]-20">}</span><span·class="w">149 ············</span><span·class="p"·data-group-id="8218623620-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="8218623620-21">(</span><span·class="n">Bs</span><span·class="p"·data-group-id="8218623620-[·...·truncated·by·diffoscope;·len:·53,·SHA:·9d5ef55706f14aa3d28ee9a9cac8d4963924497623ff65e93908337fc03606ab·...·]-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="5231064008-1">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LPort</span><span·class="p"·data-group-id="5231064008-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="6651297715-1">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LPort</span><span·class="p"·data-group-id="6651297715-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="5231064008-2">(</span><span·class="n">LPort</span><span·class="p">,</span><span·class="p"·data-group-id="5231064008-3">[</span><span·class="p"·data-group-id="5231064008-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·65cf9cd3ea72f2ec1340629285b68370f2ba2373bf77e356c7eda2d9929fcb8a·...·]-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="6651297715-2">(</span><span·class="n">LPort</span><span·class="p">,</span><span·class="p"·data-group-id="6651297715-3">[</span><span·class="p"·data-group-id="6651297715-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·fec26ba14762579c6892b099e599da61656c57bff02d08a8ab0771e07b44b6a9·...·]-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
194 ········</span><span·class="p"·data-group-id="5231064008-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="5231064008-6">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">194 ········</span><span·class="p"·data-group-id="6651297715-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="6651297715-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="5231064008-7">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">ListenSock</span><span·class="p"·data-group-id="5231064008-7">)</span><span·class="p">,</span><span·class="w">195 ············</span><span·class="nf">start_servers</span><span·class="p"·data-group-id="6651297715-7">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">ListenSock</span><span·class="p"·data-group-id="6651297715-7">)</span><span·class="p">,</span><span·class="w">
196 ············</span><span·class="p"·data-group-id="5231064008-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="5231064008-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·199,·SHA:·37c38d59887c709b24de2c0fb35690f4937a710aaaaaeaf814370923fe814759·...·]-9">)</span><span·class="p">,</span><span·class="w">196 ············</span><span·class="p"·data-group-id="6651297715-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="6651297715-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·199,·SHA:·d595259396975eea1793c1e7fb0a412aa5d95106454f2fc0a10197154b3ebc7d·...·]-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="5231064008-10">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="5231064008-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">198 ········</span><span·class="p"·data-group-id="6651297715-10">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="6651297715-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
199 ············</span><span·class="p"·data-group-id="5231064008-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="5231064008-11">}</span><span·class="w">199 ············</span><span·class="p"·data-group-id="6651297715-11">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Reason</span><span·class="p"·data-group-id="6651297715-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="5231064008-12">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="5231064008-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="6651297715-12">(</span><span·class="mi">0</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="6651297715-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="5231064008-13">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LS</span><span·class="p"·data-group-id="5231064008-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="6651297715-13">(</span><span·class="n">Num</span><span·class="p">,</span><span·class="n">LS</span><span·class="p"·data-group-id="6651297715-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="5231064008-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="5231064008-15">[</span><span·class="n">LS</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·72,·SHA:·9eb60ebadc6c0f8d9023be240c8ddc4a2d50c6543f9618c24ef00a9cee454ee8·...·]-14">)</span><span·class="p">,</span><span·class="w">204 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6651297715-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="6651297715-15">[</span><span·class="n">LS</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·72,·SHA:·d4dd6fba2c135e4db3b0f76bcda60ace40a3c1d2742b49eb01b5fc03e439ede2·...·]-14">)</span><span·class="p">,</span><span·class="w">
205 ····</span><span·class="nf">start_servers</span><span·class="p"·data-group-id="5231064008-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="5231064008-16">)</span><span·class="p">.</span><span·class="w">205 ····</span><span·class="nf">start_servers</span><span·class="p"·data-group-id="6651297715-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="6651297715-16">)</span><span·class="p">.</span><span·class="w">
  
206 </span><span·class="nf">server</span><span·class="p"·data-group-id="5231064008-17">(</span><span·class="n">LS</span><span·class="p"·data-group-id="5231064008-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="6651297715-17">(</span><span·class="n">LS</span><span·class="p"·data-group-id="6651297715-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="5231064008-18">(</span><span·class="n">LS</span><span·class="p"·data-group-id="5231064008-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="6651297715-18">(</span><span·class="n">LS</span><span·class="p"·data-group-id="6651297715-18">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
208 ········</span><span·class="p"·data-group-id="5231064008-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="5231064008-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 ········</span><span·class="p"·data-group-id="6651297715-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="6651297715-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="5231064008-20">(</span><span·class="n">S</span><span·class="p"·data-group-id="5231064008-20">)</span><span·class="p">,</span><span·class="w">209 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="6651297715-20">(</span><span·class="n">S</span><span·class="p"·data-group-id="6651297715-20">)</span><span·class="p">,</span><span·class="w">
210 ············</span><span·class="nf">server</span><span·class="p"·data-group-id="5231064008-21">(</span><span·class="n">LS</span><span·class="p"·data-group-id="5231064008-21">)</span><span·class="p">;</span><span·class="w">210 ············</span><span·class="nf">server</span><span·class="p"·data-group-id="6651297715-21">(</span><span·class="n">LS</span><span·class="p"·data-group-id="6651297715-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="5231064008-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="5231064008-23">[</[·...·truncated·by·diffoscope;·len:·128,·SHA:·0b0ef9feb8ba691d1b5e91982dde0da615d1ec61868743b3ed3bc5e9423d3df8·...·]-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="6651297715-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="6651297715-23">[</[·...·truncated·by·diffoscope;·len:·128,·SHA:·77d91c64ac95c5675b1b7171b3ebbbed74aa10bbfd1a3a1f14e5e5a5d0406e43·...·]-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="5231064008-24">(</span><span·class="n">S</span><span·class="p"·data-group-id="5231064008-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="6651297715-24">(</span><span·class="n">S</span><span·class="p"·data-group-id="6651297715-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="5231064008-25">(</span><span·class="n">S</span><span·class="p">,</span><span·class="p"·data-group-id="5231064008-26">[</span><span·class="p"·data-group-id="5231064008-27">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">once</[·...·truncated·by·diffoscope;·len:·154,·SHA:·9ecc22a6c3f3949688365ef34579e2fd7f5ada2a3e3278f51fc843c0a4e91ece·...·]-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="6651297715-25">(</span><span·class="n">S</span><span·class="p">,</span><span·class="p"·data-group-id="6651297715-26">[</span><span·class="p"·data-group-id="6651297715-27">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">once</[·...·truncated·by·diffoscope;·len:·154,·SHA:·ed7a919e3b6df0c71f2caf2178a2b4169dc43b88dbad0fb707a38f3773de7a33·...·]-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="5231064008-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="5231064008-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">218 ········</span><span·class="p"·data-group-id="6651297715-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="6651297715-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="5231064008-29">(</span><span·class="n">Data</span><span·class="p"·data-group-id="5231064008-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="6651297715-29">(</span><span·class="n">Data</span><span·class="p"·data-group-id="6651297715-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="5231064008-30">(</span><span·class="n">S</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="5231064008-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="6651297715-30">(</span><span·class="n">S</span><span·class="p">,</span><span·class="n">Answer</span><span·class="p"·data-group-id="6651297715-30">)</span><span·class="p">,</span><span·class="w">
221 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="5231064008-31">(</span><span·class="n">S</span><span·class="p"·data-group-id="5231064008-31">)</span><span·class="p">;</span><span·class="w">221 ············</span><span·class="nf">loop</span><span·class="p"·data-group-id="6651297715-31">(</span><span·class="n">S</span><span·class="p"·data-group-id="6651297715-31">)</span><span·class="p">;</span><span·class="w">
222 ········</span><span·class="p"·data-group-id="5231064008-32">{</span><span·class="ss">tcp_closed</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="5231064008-32">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 ········</span><span·class="p"·data-group-id="6651297715-32">{</span><span·class="ss">tcp_closed</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="6651297715-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="5231064008-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·clas[·...·truncated·by·diffoscope;·len:·323,·SHA:·297ecad8a67c91e09237cc869d77da61d0159648451efa5adb20180347564b49·...·]-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="6651297715-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·clas[·...·truncated·by·diffoscope;·len:·323,·SHA:·42ae2b36313d33b0be886f9b0102023d734ea1e6fea0beaafd1a9c3882161290·...·]-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="7112132615-1">(</span><span·class="n">PortNo</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="7112132615-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="8582312873-1">(</span><span·class="n">PortNo</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="8582312873-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
226 ····</span><span·class="p"·data-group-id="7112132615-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="7112132615-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:·13b970c5995d76d0a84cd12df51e758578b1aeb185d691ede2516115527ae0b3·...·]-5">}</span><span·class="p">,</span><span·class="w">226 ····</span><span·class="p"·data-group-id="8582312873-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="8582312873-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:·e5f87aa00751325d412a360dfb4bf6baad5e4a86010d7c67c68a86f0b9171bd6·...·]-5">}</span><span·class="p">,</span><span·class="w">
227 ····················································</span><span·class="p"·data-group-id="7112132615-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7112132615-6">}</span><span·class="p"·data-group-id="7112132615-4">]</span><span·class="p"·data-group-id="7112132615-3">)</span><span·class="p">,</span><span·class="w">227 ····················································</span><span·class="p"·data-group-id="8582312873-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="8582312873-6">}</span><span·class="p"·data-group-id="8582312873-4">]</span><span·class="p"·data-group-id="8582312873-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="7112132615-7">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="7112132615-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="8582312873-7">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="8582312873-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="7112132615-8">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7112132615-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="8582312873-8">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="8582312873-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="7112132615-9">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7112132615-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="8582312873-9">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="8582312873-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="5074663046-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="5074663046-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:·794fb06bd21734e63ac9f4c571880216ef7e2506fd725c6aa70129d00a20ee3f·...·]-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="1989240070-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Sock</span><span·class="p"·data-group-id="1989240070-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:·f34af3ae961887bf6affff86e05ad3605776e08ebac36bec15a0095e3d392a4f·...·]-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="5074663046-3">[</span><span·class="p"·data-group-id="5074663046-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="5074663046-4">}</span><span·class="p">,</span><span·class="w">241 ····························</span><span·class="p"·data-group-id="1989240070-3">[</span><span·class="p"·data-group-id="1989240070-4">{</span><span·class="ss">active</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="1989240070-4">}</span><span·class="p">,</span><span·class="w">
242 ·····························</span><span·class="p"·data-group-id="5074663046-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="5074663046-5">}</span><span·class="p">,</span><span·class="w">242 ·····························</span><span·class="p"·data-group-id="1989240070-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="1989240070-5">}</span><span·class="p">,</span><span·class="w">
243 ·····························</span><span·class="p"·data-group-id="5074663046-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5074663046-6">}</span><span·class="p"·data-group-id="5074663046-3">]</span><span·class="p"·data-group-id="5074663046-2">)</span><span·class="p">,</span><span·class="w">243 ·····························</span><span·class="p"·data-group-id="1989240070-6">{</span><span·class="ss">packet</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="1989240070-6">}</span><span·class="p"·data-group-id="1989240070-3">]</span><span·class="p"·data-group-id="1989240070-2">)</span><span·class="p">,</span><span·class="w">
244 ················</span><span·class="nf">loop</span><span·class="p"·data-group-id="5074663046-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="5074663046-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="1989240070-7">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="1989240070-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="7447924599-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7447924599-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="2037723182-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="2037723182-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="7447924599-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="7447924599-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">247 ········</span><span·class="p"·data-group-id="2037723182-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="2037723182-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="7447924599-3">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="p"·data-group-id="7447924599-4">[</span><span·class="n">Binary</span><span·class="p"·data-group-id="7447924599-4">]</span><span·class="p"·data-group-id="7447924599-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="2037723182-3">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="p"·data-group-id="2037723182-4">[</span><span·class="n">Binary</span><span·class="p"·data-group-id="2037723182-4">]</span><span·class="p"·data-group-id="2037723182-3">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
249 ················</span><span·class="p"·data-group-id="7447924599-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="7447924599-5">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">249 ················</span><span·class="p"·data-group-id="2037723182-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="2037723182-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="7447924599-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="2037723182-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="7447924599-7">[</span><span·class="p"·data-group-id="7447924599-7">]</span><span·class="p"·data-group-id="7447924599-6">)</span><span·class="p">,</span><span·class="w">251 ······························</span><span·class="p"·data-group-id="2037723182-7">[</span><span·class="p"·data-group-id="2037723182-7">]</span><span·class="p"·data-group-id="2037723182-6">)</span><span·class="p">,</span><span·class="w">
252 ····················</span><span·class="nf">handle_send_timeout</span><span·class="p"·data-group-id="7447924599-8">(</span><span·class="p"·data-group-id="7447924599-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="2037723182-8">(</span><span·class="p"·data-group-id="2037723182-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="7447924599-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7447924599-10">(</span><span·class="p"·data-group-id="7447924599-10">)</span><span·class="p">,</span><span·class="p"·data-group-id="7447924599-11">{</span><span·class="ss">err[·...·truncated·by·diffoscope;·len:·191,·SHA:·518aab11d90f7d3f358a6125fac692a92f3a4156cda76ce1cb638240d9825f37·...·]-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="2037723182-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2037723182-10">(</span><span·class="p"·data-group-id="2037723182-10">)</span><span·class="p">,</span><span·class="p"·data-group-id="2037723182-11">{</span><span·class="ss">err[·...·truncated·by·diffoscope;·len:·191,·SHA:·dd29cd5d15879d5e768e36f43dc50a2846dcd5606b9d49e7f86a55335a725b92·...·]-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="7447924599-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7447924599-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="2037723182-12">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="2037723182-12">)</span><span·class="p">;</span><span·class="w">
258 ················</span><span·class="p"·data-group-id="7447924599-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="7447924599-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">258 ················</span><span·class="p"·data-group-id="2037723182-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="2037723182-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="7447924599-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="2037723182-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="7447924599-15">[</span><span·class="n">OtherSendError</span><span·class="p"·data-group-id="7447924599-15">]</span><span·class="p"·data-group-id="7447924599-14">)</span><span·class="p">,</span><span·class="w">260 ······························</span><span·class="p"·data-group-id="2037723182-15">[</span><span·class="n">OtherSendError</span><span·class="p"·data-group-id="2037723182-15">]</span><span·class="p"·data-group-id="2037723182-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="7447924599-16">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7447924599-17">(</span><span·class="p"·data-group-id="7447924599-17">)</span><span·class="p">,</span><span·class="p"·data-group-id="7447924599-18">{</span><span·class="ss">er[·...·truncated·by·diffoscope;·len:·198,·SHA:·bbcedf09a4bf0017fc60904d84689f1a667fd7b22bf60200ede2719da793afd9·...·]-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="2037723182-16">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2037723182-17">(</span><span·class="p"·data-group-id="2037723182-17">)</span><span·class="p">,</span><span·class="p"·data-group-id="2037723182-18">{</span><span·class="ss">er[·...·truncated·by·diffoscope;·len:·198,·SHA:·c1ce9bde324fd98d9b32dc19691bd5603eb84032e04474588c3539d1d0d06a36·...·]-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="7447924599-19">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7447924599-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="2037723182-19">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="2037723182-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="7447924599-20">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7447924599-21">(</span><span·class="p"·data-group-id="7447924599-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:·eae956f8795644d3d51777f61fa8a59f1a99ddf1cc706c2c6b94146cd39bf7ad·...·]-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="2037723182-20">{</span><span·class="nf">self</span><span·class="p"·data-group-id="2037723182-21">(</span><span·class="p"·data-group-id="2037723182-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:·a750483b0045d1cf4d11cd054367ffd673febf7ec90402d7afb9dcfc74eff4fd·...·]-20">}</span><span·class="p">,</span><span·class="w">
265 ····················</span><span·class="nf">loop</span><span·class="p"·data-group-id="7447924599-22">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7447924599-22">)</span><span·class="w">265 ····················</span><span·class="nf">loop</span><span·class="p"·data-group-id="2037723182-22">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="2037723182-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.3/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="7702144864-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:·150,·SHA:·1864cec6d290839c9772824a6dcfe2b5e8429ae55faf5932919edacfbc93b29d·...·]-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="7724108166-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:·150,·SHA:·776377826b72ec71f7b25bce572183af7386a96d3563897aea3550d315324abf·...·]-1">}</span><span·class="w">·</span><span·class="c1">%·Without·ancillary·data</span><span·class="w">
932 </span><span·class="p"·data-group-id="7702144864-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:·230,·SHA:·01e7370f07aed5f6d44fa45c744c7dceb1e6c55a7a4061555bbb4bebc3e3ec43·...·]-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="7724108166-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:·230,·SHA:·888d128477cac47a693c1d5e3396f21b036e9fdd74895778fa78766077a95933·...·]-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.3/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.3/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.3/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.3/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="6689737685-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="6689737685-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="6882954583-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="6882954583-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="7041015848-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="7041015848-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="0439982028-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="0439982028-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.3/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="7166115006-1">{</span><span·class="ss">global_groups</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7166115006-2">[</span><span·class="n">GroupTuple</span><span·class="w">·</span><span·class="p">:</span><span·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·54f7bea15ac22ae3a1649c3e688e3884113cddcc8e0d5ceb46b08b69b5aa354d·...·]-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="9102786452-1">{</span><span·class="ss">global_groups</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9102786452-2">[</span><span·class="n">GroupTuple</span><span·class="w">·</span><span·class="p">:</span><span·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·a7048f8aa5030530ae8e22c7aac09e6122efb9968e7e646798f4f17c9526a531·...·]-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.3/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="5946940097-1">(</span><span·class="p"·data-group-id="5946940097-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="1177295477-1">(</span><span·class="p"·data-group-id="1177295477-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="5946940097-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:·b7ab5290713ec6d5226d988ef6ac20297f6a497438cf3af7b668779918aa316a·...·]7-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="1177295477-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:·185a1d62b64008b697b2466aa566241af46c30526b14820d46cceed6b0c4a01f·...·]7-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="5946940097-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:·3397657eb661fb89c3d3aa84d568d8da22b05a675dedb6d51b6aa75f05089868·...·]7-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="1177295477-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:·d4db5bd467253aad9fdee7254849b45802fd8f1dcb905a522895f04a77706aec·...·]7-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="5946940097-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:·f572d5eb6223287747f27d5eb5c048d970fe4a35ba4b0bf6c3dbb01b16f01825·...·]7-6">}</span><span·class="w">159 ················</span><span·class="p"·data-group-id="1177295477-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:·fed930405bc8f64303432956df676f8a823093c247f3e5151714fc34e6408eda·...·]7-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="5946940097-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:·1979a317b833a6f64a839bcf558d938913bb401b918843cee968fbb4ac44761b·...·]7-9">}</span><span·class="w">161 ················</span><span·class="p"·data-group-id="1177295477-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:·939616edb8238342110b0a5858912fd77fd7ba365dff25f12337d28c6fc8d47e·...·]7-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="5946940097-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:·3a6528149993e07422d6c0746a476753e66e4c2c53673066eccfa547e06d2a7f·...·]-1">)</span><span·class="p">.</span><span·class="w">163 ················</span><span·class="p"·data-group-id="1177295477-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:·a98c085442088d695658d16d64ceb68ebdd807f9a066d9c67cb2bce76c11bfa9·...·]-1">)</span><span·class="p">.</span><span·class="w">
164 </span><span·class="p"·data-group-id="8589584282-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8589584282-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:·33e96517de90c337b7fd95049e658ae686f66cd31eba859c0c00742041f1ebee·...·]-2">}</span><span·class="gp·unselectable">164 </span><span·class="p"·data-group-id="5651093317-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5651093317-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:·e22dcf7852aa87490d6a761da407d61f31c138f0d648319f075d188015a60463·...·]-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="8589584282-4">(</span><span·class="s">&quot;::FFFF:192.168.42.2&quot;</span><span·class="p"·data-group-id="8589584282-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="5651093317-4">(</span><span·class="s">&quot;::FFFF:192.168.42.2&quot;</span><span·class="p"·data-group-id="5651093317-4">)</span><span·class="p">.</span><span·class="w">
166 </span><span·class="p"·data-group-id="8589584282-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8589584282-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:·8d1c7a1edf7e3f66b2ca3cb94a70cabea72557f39f473c1cbeb46bef54aa2dd9·...·]-5">}</span></code></pre><h2·id="module-posix-error-codes"·class="section-heading">166 </span><span·class="p"·data-group-id="5651093317-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5651093317-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:·68c8c4ff99d5c6743d357eb71c16a3f66d66d7ac5c7e10db1355399d0da5d175·...·]-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.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),954 ···················h_length·::·<a·href="../../../../erts-15.2.3/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="3123349940-1">(</span><span·class="s">&quot;kernel/include/inet.hrl&quot;</span><span·class="p"·data-group-id="3123349940-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="0044696382-1">(</span><span·class="s">&quot;kernel/include/inet.hrl&quot;</span><span·class="p"·data-group-id="0044696382-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="9567003393-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="9567003393-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
2058 ····</span><span·class="p"·data-group-id="9567003393-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9567003393-3">[</span><span·class="p"·data-group-id="9567003393-4">{</span><span·class="ss">raw</span><span·cla[·...·truncated·by·diffoscope;·len:·1014,·SHA:·f999265a51c159c5de0504bc415303a87721c6f0634bb19494fcbaf0594cad94·...·]</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="8363805127-1">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="83638[·...·truncated·by·diffoscope;·len:·62,·SHA:·1c4a96f4ecd88cda5c353bc1e60aa37478f91d5d3c004dbd775c8a4c6559fa17·...·]</span><span·class="w">
 2058 ····</span><span·class="p"·data-group-id="8363805127-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8363805127-3">[</span><span·class="p"·data-group-id="8363805127-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="8363805127-4">}</span><span·class="p"·data-group-id="8363805127-3">]</span><span·class="p"·data-group-id="8363805127-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="8363805127-5">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="p"·data-group-id="8363805127-6">[</span><span·class="p"·data-group-id="8363805127-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="8363805127-7">}</span><span·class="p"·data-group-id="8363805127-6">]</span><span·class="p"·data-group-id="8363805127-5">)</span><span·class="p">,</span><span·class="w">
2059 ····</span><span·class="p"·data-group-id="9567003393-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:·3fc6c2891bcd0f31841abb2f099d8d506018d91b597e008869491c3abb1caf5f·...·]-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="8363805127-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:·5b20457e9fe89099e1a11f54de1c7f776c1f78d5291aaddfa08b8d47bcd3f1b2·...·]-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.3/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.3/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="4742410221-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:·d1517eae5f09c9dc5f04f2214a37f213e61c142cc937c39e1ebb35dd381b694f·...·]-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="5563295416-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:·3e59ec8e072a49c2c4f83420c8b10444deb9c115a5403cd7b321b3acbf960e3e·...·]-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.3/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.3/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.3/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="5109001568-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="5109001568-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="3088077452-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="3088077452-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="5109001568-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="5109001568-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="3088077452-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="3088077452-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
184 ········</span><span·class="p"·data-group-id="5109001568-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Msg</span><span·class="p"·data-group-id="5109001568-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 ········</span><span·class="p"·data-group-id="3088077452-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Msg</span><span·class="p"·data-group-id="3088077452-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ············</span><span·class="p"·data-group-id="5109001568-4">[</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="5109001568-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:·5e317e7a1c44cfb92ab6b39223f927dfe079f8fceb2ad5e45e2a6100166c9b81·...·]-5">)</span><span·class="w">185 ············</span><span·class="p"·data-group-id="3088077452-4">[</span><span·class="nc">inet_dns</span><span·class="p">:</span><span·class="nf">rr</span><span·class="p"·data-group-id="3088077452-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:·6df8cd5dabdb497637eb0ac45893e6887f76b7fab11f825758aa59303b7c9645·...·]-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="5109001568-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="5109001568-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="3088077452-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="3088077452-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="5109001568-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="5109001568-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="3088077452-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="3088077452-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="5109001568-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="5109001568-8">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·64,·SHA:·a6b5c008900e078972602684ce561b031b9de5bbf684de62cc6b7ce7aaf07bcc·...·]-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="3088077452-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="3088077452-8">)</span><span·class="w">·</span><span·class="o">=:=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·64,·SHA:·2ea2a95c9dace32137d7192a99c0cbcf71f57f59afb94b60684f4a405bd6dd6c·...·]-4">]</span><span·class="p">;</span><span·class="w">
189 ········</span><span·class="p"·data-group-id="5109001568-9">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="5109001568-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">189 ········</span><span·class="p"·data-group-id="3088077452-9">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="3088077452-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ············</span><span·class="p"·data-group-id="5109001568-10">[</span><span·class="p"·data-group-id="5109001568-10">]</span><span·class="w">190 ············</span><span·class="p"·data-group-id="3088077452-10">[</span><span·class="p"·data-group-id="3088077452-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.3/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.3/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="8550443994-1">(</span><span·class="p"·data-group-id="8550443994-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="1433751148-1">(</span><span·class="p"·data-group-id="1433751148-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="8550443994-2">(</span><span·class="n">DnsMsg</span><span·class="p"·data-group-id="8550443994-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="1433751148-2">(</span><span·class="n">DnsMsg</span><span·class="p"·data-group-id="1433751148-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
591 ········</span><span·class="p"·data-group-id="8550443994-3">[</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-5">[·...·truncated·by·diffoscope;·len:·102,·SHA:·c2e19d857b11c04ee6671616cfa2c12ee3f936534cda4f70a231313eba09eb20·...·]-4">}</span><span·class="w">591 ········</span><span·class="p"·data-group-id="1433751148-3">[</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-5">[·...·truncated·by·diffoscope;·len:·102,·SHA:·0aae97abe6b4a36bba0167dfae3023db4e99ccfd3c63917ee915441f20eff472·...·]-4">}</span><span·class="w">
592 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-7">(</span><span·class="p"·data-group-id="8550443994-7">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·9558179500b52fd41a06d91382d5cb39a9ea614f4af908b64104ddd0debbd2fb·...·]-6">}</span><span·class="w">592 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-7">(</span><span·class="p"·data-group-id="1433751148-7">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·c45ffd05ade1a57540ddc7d3d31d4ca5d8fa7d906a9058b9e3e3011363d2ed31·...·]-6">}</span><span·class="w">
593 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-9">(</span><span·class="p"·data-group-id="8550443994-9">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·f53ba53b87abb060345c357af88e58f08f929c133e42a88219cf0c00e646384e·...·]-8">}</span><span·class="w">593 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-9">(</span><span·class="p"·data-group-id="1433751148-9">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·a4ed8e1efc89ad7986750163aeac7ebaae7765b7f80b8f968f51da20a7b46600·...·]-8">}</span><span·class="w">
594 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-11">(</span><span·class="p"·data-group-id="8550443994-11">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·9558179500b52fd41a06d91382d5cb39a9ea614f4af908b64104ddd0debbd2fb·...·]-10">}</span><span·class="w">594 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-11">(</span><span·class="p"·data-group-id="1433751148-11">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·c45ffd05ade1a57540ddc7d3d31d4ca5d8fa7d906a9058b9e3e3011363d2ed31·...·]-10">}</span><span·class="w">
595 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-13">(</span><span·class="p"·data-group-id="8550443994-13">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·3f2adc4db9256caada7024318ea83a0ef5151cfa3d761f2f989cc6143c1eb499·...·]-3">]</span><span·class="w">595 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-13">(</span><span·class="p"·data-group-id="1433751148-13">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·327bfb5e63127b9106a7ecd8cc7650087f9419c5e72ba1c70deb9d6187a3a606·...·]-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="8550443994-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="8550443994-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·133,·SHA:·9fc6734a19191259a30c66b74eda66f97a5b10b80606e0e844dc956790beeece·...·]-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="1433751148-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="1433751148-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·133,·SHA:·b97e6bb2a296d327d42a184d28c7957d74b9631f50ac9318e9d185fbd359352d·...·]-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="8550443994-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="8550443994-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="1433751148-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="1433751148-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="8550443994-17">(</span><span·class="p"·data-group-id="8550443994-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="1433751148-17">(</span><span·class="p"·data-group-id="1433751148-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="8550443994-18">(</span><span·class="n">DnsHeader</span><span·class="p"·data-group-id="8550443994-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="1433751148-18">(</span><span·class="n">DnsHeader</span><span·class="p"·data-group-id="1433751148-18">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
600 ········</span><span·class="p"·data-group-id="8550443994-19">[</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-21">(</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·2bb3ff4f8e459d326f6eecc17a6997d01cfb6951e89d7b217ad63a998cfec8e9·...·]-20">}</span><span·class="w">600 ········</span><span·class="p"·data-group-id="1433751148-19">[</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-21">(</s[·...·truncated·by·diffoscope;·len:·99,·SHA:·6f6e356334624ca4d408c4f2155ac51be0e39bb4033ae22a17edcd3fc500781e·...·]-20">}</span><span·class="w">
601 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-23">(</span><span·class="p"·data-group-id="8550443994-23">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·f53ba53b87abb060345c357af88e58f08f929c133e42a88219cf0c00e646384e·...·]-22">}</span><span·class="w">601 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-23">(</span><span·class="p"·data-group-id="1433751148-23">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·a4ed8e1efc89ad7986750163aeac7ebaae7765b7f80b8f968f51da20a7b46600·...·]-22">}</span><span·class="w">
602 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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:·6806e1605d7038106e19b15b42eec692279a800de2f42adc2fea822375c4e892·...·]-24">}</span><span·class="w">602 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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:·6d13b364fbe38ad29189f0a5ec5d31b3145be38e84e903333529f207f733efcf·...·]-24">}</span><span·class="w">
603 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-27">(</span><span·class="p"·data-group-id="8550443994-27">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·f53ba53b87abb060345c357af88e58f08f929c133e42a88219cf0c00e646384e·...·]-26">}</span><span·class="w">603 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-27">(</span><span·class="p"·data-group-id="1433751148-27">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·a4ed8e1efc89ad7986750163aeac7ebaae7765b7f80b8f968f51da20a7b46600·...·]-26">}</span><span·class="w">
604 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-29">(</span><span·class="p"·data-group-id="8550443994-29">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·f53ba53b87abb060345c357af88e58f08f929c133e42a88219cf0c00e646384e·...·]-28">}</span><span·class="w">604 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-29">(</span><span·class="p"·data-group-id="1433751148-29">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·a4ed8e1efc89ad7986750163aeac7ebaae7765b7f80b8f968f51da20a7b46600·...·]-28">}</span><span·class="w">
605 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-31">(</span><span·class="p"·data-group-id="8550443994-31">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·f53ba53b87abb060345c357af88e58f08f929c133e42a88219cf0c00e646384e·...·]-30">}</span><span·class="w">605 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-31">(</span><span·class="p"·data-group-id="1433751148-31">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·a4ed8e1efc89ad7986750163aeac7ebaae7765b7f80b8f968f51da20a7b46600·...·]-30">}</span><span·class="w">
606 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-33">(</span><span·class="p"·data-group-id="8550443994-33">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·f53ba53b87abb060345c357af88e58f08f929c133e42a88219cf0c00e646384e·...·]-32">}</span><span·class="w">606 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-33">(</span><span·class="p"·data-group-id="1433751148-33">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·a4ed8e1efc89ad7986750163aeac7ebaae7765b7f80b8f968f51da20a7b46600·...·]-32">}</span><span·class="w">
607 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-35">(</span><span·class="p"·data-group-id="8550443994-35">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·f53ba53b87abb060345c357af88e58f08f929c133e42a88219cf0c00e646384e·...·]-34">}</span><span·class="w">607 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-35">(</span><span·class="p"·data-group-id="1433751148-35">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·a4ed8e1efc89ad7986750163aeac7ebaae7765b7f80b8f968f51da20a7b46600·...·]-34">}</span><span·class="w">
608 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-37">(</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·201,·SHA:·2263efb9d995e5432efa6bbe6c30b8e91ec9ea53acfb66fec1ada6c27e894e0f·...·]-19">]</span><span·class="w">608 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-37">(</span><span·class="mi">0</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·201,·SHA:·9356f7a09d8020d231d5dc1ed499c4e78e867edf6af7c821617b701fcca725a4·...·]-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="8550443994-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="8550443994-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="1433751148-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="1433751148-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="8550443994-39">(</span><span·class="p"·data-group-id="8550443994-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:·5b638d4b0e4281386127bda00bbe9efe2689e24fadbcbc000d382d5119ced136·...·]-40">)</span><span·class="w">610 </span><span·class="nf">query_type</span><span·class="p"·data-group-id="1433751148-39">(</span><span·class="p"·data-group-id="1433751148-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:·6b194f593398e8198d60063668ab4c6674c22c0e653b1f4a2c52471cfc2c02fb·...·]-40">)</span><span·class="w">
  
611 </span><span·class="nf">dns_query</span><span·class="p"·data-group-id="8550443994-41">(</span><span·class="p"·data-group-id="8550443994-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="1433751148-41">(</span><span·class="p"·data-group-id="1433751148-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="8550443994-42">(</span><span·class="n">DnsQuery</span><span·class="p"·data-group-id="8550443994-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="1433751148-42">(</span><span·class="n">DnsQuery</span><span·class="p"·data-group-id="1433751148-42">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
613 ········</span><span·class="p"·data-group-id="8550443994-43">[</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-45"[·...·truncated·by·diffoscope;·len:·104,·SHA:·373d4128fa9b9a1bccf0bf5496d5108e224a399c290f3ae7e42a1deaeabd4339·...·]-44">}</span><span·class="w">613 ········</span><span·class="p"·data-group-id="1433751148-43">[</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-45"[·...·truncated·by·diffoscope;·len:·104,·SHA:·b4522a2704eba15f2420937a0ede6ee32779bd7642fce23e07d712cada03fe02·...·]-44">}</span><span·class="w">
614 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-47">(</span><span·class="p"·data-group-id="8550443994-47">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·27226adc09ac9c17a60e86b919ed96b7b1b3eda652a4409b728c889b21f3c7b2·...·]-46">}</span><span·class="w">614 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-47">(</span><span·class="p"·data-group-id="1433751148-47">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·1f6bcc40e75c35115044fd7d797709973944ca91dedefafed272dc1e0c0ac4b6·...·]-46">}</span><span·class="w">
615 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-49">(</span><span·class="p"·data-group-id="8550443994-49">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·104,·SHA:·ab41ef736d598e28b4a9f0796040a040be4cfa4576c9fa6e9b024629a5de584a·...·]-43">]</span><span·class="w">615 ········</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-49">(</span><span·class="p"·data-group-id="1433751148-49">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·104,·SHA:·564faee2ecd45419e2937d6507403f95576872f9c3c6199d8a76375c3ca6e272·...·]-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="8550443994-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="8550443994-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="1433751148-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="1433751148-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="8550443994-51">(</span><span·class="p"·data-group-id="8550443994-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="1433751148-51">(</span><span·class="p"·data-group-id="1433751148-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="8550443994-52">(</span><span·class="n">DnsRr</span><span·class="p"·data-group-id="8550443994-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="1433751148-52">(</span><span·class="n">DnsRr</span><span·class="p"·data-group-id="1433751148-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="8550443994-53">[</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-55"[·...·truncated·by·diffoscope;·len:·104,·SHA:·b79401bec344952ed644dee88b2118ac3a93c84f5f9d971d322175f68079ea6e·...·]-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="1433751148-53">[</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-55"[·...·truncated·by·diffoscope;·len:·104,·SHA:·5bfca759c51d9d321b14465ff1fc92921d8357c521a8d8c90f711758998ce4d8·...·]-54">}</span><span·class="w">
620 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-57">(</span><span·class="p"·data-group-id="8550443994-57">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·e8c7acc099adac76e5bec81702dc5abb8fd0f1cf3e55951e9cf58f411874b972·...·]-56">}</span><span·class="w">620 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-57">(</span><span·class="p"·data-group-id="1433751148-57">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·8bd8d0e2c5317d0dae3c3b8cb1bb90ff48608aae80c5f5cc9665527cfd665196·...·]-56">}</span><span·class="w">
621 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-59">(</span><span·class="p"·data-group-id="8550443994-59">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·27226adc09ac9c17a60e86b919ed96b7b1b3eda652a4409b728c889b21f3c7b2·...·]-58">}</span><span·class="w">621 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-59">(</span><span·class="p"·data-group-id="1433751148-59">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·1f6bcc40e75c35115044fd7d797709973944ca91dedefafed272dc1e0c0ac4b6·...·]-58">}</span><span·class="w">
622 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-61">(</span><span·class="p"·data-group-id="8550443994-61">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·233774499ab0f84695a68f4bb5248c7b76e9f74bac376abb019b4df6a073c7b1·...·]-60">}</span><span·class="w">622 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-61">(</span><span·class="p"·data-group-id="1433751148-61">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·8f90c0e0bef95008ba7676b60adf6e884f08cdb548458002237e21fe07776096·...·]-60">}</span><span·class="w">
623 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-63">(</span><span·class="p"·data-group-id="8550443994-63">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·c5f60e51e8d680df8988c865a34f0599cf040538aee5bed117c5073298e61c88·...·]-53">]</span><span·class="w">623 ··················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-63">(</span><span·class="p"·data-group-id="1433751148-63">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·636b0b6eefc2517ed6b6ee1ec6fad2676e8e4b6d495859194368f050d4f1f3d1·...·]-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="8550443994-64">[</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-66"[·...·truncated·by·diffoscope;·len:·104,·SHA:·3ef2aa955a5aa03d587a4aa43b368c1d4c0d4704720b190c052a3495d93b25c6·...·]-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="1433751148-64">[</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-66"[·...·truncated·by·diffoscope;·len:·104,·SHA:·ab4d0475e373896402293c8f80c038761c7be03af13557ad2030993cdde76892·...·]-65">}</span><span·class="w">
625 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-67">}</span><span·class="w">625 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-67">}</span><span·class="w">
626 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-69">(</span><span·class="p"·data-group-id="8550443994-69">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·ab127a8a08e5313870391b80e0814ff6fb190d38150333920c48c514b4c780d0·...·]-68">}</span><span·class="w">626 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-69">(</span><span·class="p"·data-group-id="1433751148-69">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·539601dace5924f61156fe1837ce615b7e8eb71ef5196e0a72ad0042572117a5·...·]-68">}</span><span·class="w">
627 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-71">(</span><span·class="p"·data-group-id="8550443994-71">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·abc6877f9fd731a191ae40bc79d21984cf92e8a1bce9b0f0f87cae018ae7ee5c·...·]-70">}</span><span·class="w">627 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-71">(</span><span·class="p"·data-group-id="1433751148-71">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·a0dbf2155a9c67985e0b4c8714f1e61b1c4eb71ad812de25f49f723627ef5d4f·...·]-70">}</span><span·class="w">
628 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-73">(</span><span·class="p"·data-group-id="8550443994-73">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·27226adc09ac9c17a60e86b919ed96b7b1b3eda652a4409b728c889b21f3c7b2·...·]-72">}</span><span·class="w">628 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-73">(</span><span·class="p"·data-group-id="1433751148-73">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·1f6bcc40e75c35115044fd7d797709973944ca91dedefafed272dc1e0c0ac4b6·...·]-72">}</span><span·class="w">
629 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-75">(</span><span·class="p"·data-group-id="8550443994-75">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·24fe323fd071c1dcdb6f4071296cdeb8a354e56fce9bf5659d214577e4d0b5b7·...·]-74">}</span><span·class="w">629 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-75">(</span><span·class="p"·data-group-id="1433751148-75">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·edacd654c33f55f2afd3b23d298152385ae6913735c39c05d6dbd14ef214206f·...·]-74">}</span><span·class="w">
630 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="8550443994-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="8550443994-77">(</span><span·class="p"·data-group-id="8550443994-77">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·2253a8e7e8c3b13d8fc40b67faaada7091b9e93f083fced342ee8c37a92e17ec·...·]-64">]</span><span·class="w">630 ·····················</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="1433751148-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="1433751148-77">(</span><span·class="p"·data-group-id="1433751148-77">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·102,·SHA:·a980521c15eb48b976bcb0f59d6d4bdeacb350fc7138f7730e56c11a109568bb·...·]-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="8550443994-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="8550443994-78">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·471,·SHA:·338c3825b7e82779730844cbbdbee2cd0ea6debe44484000b19b0a7e263db3e2·...·]9-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="1433751148-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="1433751148-78">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·471,·SHA:·569b973320722bb2ca283522b384d44f6c86f5d3c1c1921339802c45f3a77aa9·...·]9-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="8429875979-3">(</span><span·class="nf">dns_header</span><span·class="p"·data-group-id="8429875979-4">(</span><span·class="p"·data-group-id="8429875979-4">)</span><span·class="p"·data-group-id="8429875979-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="1089468449-3">(</span><span·class="nf">dns_header</span><span·class="p"·data-group-id="1089468449-4">(</span><span·class="p"·data-group-id="1089468449-4">)</span><span·class="p"·data-group-id="1089468449-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="8429875979-5">(</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="8429875979-6">(</span><span·class="p"·data-group-id="8429875979-6">)</span><span·class="p"·data-group-id="8429875979-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="1089468449-5">(</span><span·class="nf">dns_query</span><span·class="p"·data-group-id="1089468449-6">(</span><span·class="p"·data-group-id="1089468449-6">)</span><span·class="p"·data-group-id="1089468449-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="8429875979-7">(</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="8429875979-8">(</span><span·class="p"·data-group-id="8429875979-8">)</span><span·class="p"·data-group-id="8429875979-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="1089468449-7">(</span><span·class="nf">dns_rr</span><span·class="p"·data-group-id="1089468449-8">(</span><span·class="p"·data-group-id="1089468449-8">)</span><span·class="p"·data-group-id="1089468449-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="8429875979-9">(</span><span·class="p">_</span><span·class="p"·data-group-id="8429875979-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="1089468449-9">(</span><span·class="p">_</span><span·class="p"·data-group-id="1089468449-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.33 MB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.3/doc/html/kernel.epub
8.16 KB
zipinfo {}
    
Offset 1, 55 lines modifiedOffset 1, 55 lines modified
1 Zip·file·size:·781162·bytes,·number·of·entries:·531 Zip·file·size:·781156·bytes,·number·of·entries:·53
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:53·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:45·mimetype
3 ?rw-r--r--··6.1·unx····16348·bx·defN·25-Mar-18·07:53·OEBPS/wrap_log_reader.xhtml3 ?rw-r--r--··6.1·unx····16348·bx·defN·25-Mar-18·08:45·OEBPS/wrap_log_reader.xhtml
4 ?rw-r--r--··6.1·unx···118444·bx·defN·25-Mar-18·07:53·OEBPS/trace.xhtml4 ?rw-r--r--··6.1·unx···118444·bx·defN·25-Mar-18·08:45·OEBPS/trace.xhtml
5 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·07:53·OEBPS/title.xhtml5 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·08:45·OEBPS/title.xhtml
6 ?rw-r--r--··6.1·unx····97056·bx·defN·25-Mar-18·07:53·OEBPS/socket_usage.xhtml6 ?rw-r--r--··6.1·unx····97056·bx·defN·25-Mar-18·08:45·OEBPS/socket_usage.xhtml
7 ?rw-r--r--··6.1·unx···385544·bx·defN·25-Mar-18·07:53·OEBPS/socket.xhtml7 ?rw-r--r--··6.1·unx···385544·bx·defN·25-Mar-18·08:45·OEBPS/socket.xhtml
8 ?rw-r--r--··6.1·unx····65084·bx·defN·25-Mar-18·07:53·OEBPS/seq_trace.xhtml8 ?rw-r--r--··6.1·unx····65084·bx·defN·25-Mar-18·08:45·OEBPS/seq_trace.xhtml
9 ?rw-r--r--··6.1·unx····65181·bx·defN·25-Mar-18·07:53·OEBPS/rpc.xhtml9 ?rw-r--r--··6.1·unx····65181·bx·defN·25-Mar-18·08:45·OEBPS/rpc.xhtml
10 ?rw-r--r--··6.1·unx····34976·bx·defN·25-Mar-18·07:53·OEBPS/pg.xhtml10 ?rw-r--r--··6.1·unx····34976·bx·defN·25-Mar-18·08:45·OEBPS/pg.xhtml
11 ?rw-r--r--··6.1·unx····55177·bx·defN·25-Mar-18·07:53·OEBPS/os.xhtml11 ?rw-r--r--··6.1·unx····55177·bx·defN·25-Mar-18·08:45·OEBPS/os.xhtml
12 ?rw-r--r--··6.1·unx···405857·bx·defN·25-Mar-18·07:53·OEBPS/notes.xhtml12 ?rw-r--r--··6.1·unx···405857·bx·defN·25-Mar-18·08:45·OEBPS/notes.xhtml
13 ?rw-r--r--··6.1·unx····59183·bx·defN·25-Mar-18·07:53·OEBPS/net_kernel.xhtml13 ?rw-r--r--··6.1·unx····59183·bx·defN·25-Mar-18·08:45·OEBPS/net_kernel.xhtml
14 ?rw-r--r--··6.1·unx····20333·bx·defN·25-Mar-18·07:53·OEBPS/net_adm.xhtml14 ?rw-r--r--··6.1·unx····20333·bx·defN·25-Mar-18·08:45·OEBPS/net_adm.xhtml
15 ?rw-r--r--··6.1·unx····46156·bx·defN·25-Mar-18·07:53·OEBPS/net.xhtml15 ?rw-r--r--··6.1·unx····46156·bx·defN·25-Mar-18·08:45·OEBPS/net.xhtml
16 ?rw-r--r--··6.1·unx·····3820·bx·defN·25-Mar-18·07:53·OEBPS/nav.xhtml16 ?rw-r--r--··6.1·unx·····3820·bx·defN·25-Mar-18·08:45·OEBPS/nav.xhtml
17 ?rw-r--r--··6.1·unx····13441·bx·defN·25-Mar-18·07:53·OEBPS/logger_std_h.xhtml17 ?rw-r--r--··6.1·unx····13441·bx·defN·25-Mar-18·08:45·OEBPS/logger_std_h.xhtml
18 ?rw-r--r--··6.1·unx····19736·bx·defN·25-Mar-18·07:53·OEBPS/logger_handler.xhtml18 ?rw-r--r--··6.1·unx····19736·bx·defN·25-Mar-18·08:45·OEBPS/logger_handler.xhtml
19 ?rw-r--r--··6.1·unx····27987·bx·defN·25-Mar-18·07:53·OEBPS/logger_formatter.xhtml19 ?rw-r--r--··6.1·unx····27987·bx·defN·25-Mar-18·08:45·OEBPS/logger_formatter.xhtml
20 ?rw-r--r--··6.1·unx····19809·bx·defN·25-Mar-18·07:53·OEBPS/logger_filters.xhtml20 ?rw-r--r--··6.1·unx····19809·bx·defN·25-Mar-18·08:45·OEBPS/logger_filters.xhtml
21 ?rw-r--r--··6.1·unx·····9882·bx·defN·25-Mar-18·07:53·OEBPS/logger_disk_log_h.xhtml21 ?rw-r--r--··6.1·unx·····9882·bx·defN·25-Mar-18·08:45·OEBPS/logger_disk_log_h.xhtml
22 ?rw-r--r--··6.1·unx····64470·bx·defN·25-Mar-18·07:53·OEBPS/logger_cookbook.xhtml22 ?rw-r--r--··6.1·unx····64470·bx·defN·25-Mar-18·08:45·OEBPS/logger_cookbook.xhtml
23 ?rw-r--r--··6.1·unx···102807·bx·defN·25-Mar-18·07:53·OEBPS/logger_chapter.xhtml23 ?rw-r--r--··6.1·unx···102807·bx·defN·25-Mar-18·08:45·OEBPS/logger_chapter.xhtml
24 ?rw-r--r--··6.1·unx···181761·bx·defN·25-Mar-18·07:53·OEBPS/logger.xhtml24 ?rw-r--r--··6.1·unx···181761·bx·defN·25-Mar-18·08:45·OEBPS/logger.xhtml
25 ?rw-r--r--··6.1·unx····36693·bx·defN·25-Mar-18·07:53·OEBPS/kernel_app.xhtml25 ?rw-r--r--··6.1·unx····36693·bx·defN·25-Mar-18·08:45·OEBPS/kernel_app.xhtml
26 ?rw-r--r--··6.1·unx·····1676·bx·defN·25-Mar-18·07:53·OEBPS/introduction_chapter.xhtml26 ?rw-r--r--··6.1·unx·····1676·bx·defN·25-Mar-18·08:45·OEBPS/introduction_chapter.xhtml
27 ?rw-r--r--··6.1·unx····80809·bx·defN·25-Mar-18·07:53·OEBPS/inet_res.xhtml27 ?rw-r--r--··6.1·unx····80809·bx·defN·25-Mar-18·08:45·OEBPS/inet_res.xhtml
28 ?rw-r--r--··6.1·unx···178170·bx·defN·25-Mar-18·07:53·OEBPS/inet.xhtml28 ?rw-r--r--··6.1·unx···178170·bx·defN·25-Mar-18·08:45·OEBPS/inet.xhtml
29 ?rw-r--r--··6.1·unx····19076·bx·defN·25-Mar-18·07:53·OEBPS/heart.xhtml29 ?rw-r--r--··6.1·unx····19076·bx·defN·25-Mar-18·08:45·OEBPS/heart.xhtml
30 ?rw-r--r--··6.1·unx····31324·bx·defN·25-Mar-18·07:53·OEBPS/global_group.xhtml30 ?rw-r--r--··6.1·unx····31324·bx·defN·25-Mar-18·08:45·OEBPS/global_group.xhtml
31 ?rw-r--r--··6.1·unx····51294·bx·defN·25-Mar-18·07:53·OEBPS/global.xhtml31 ?rw-r--r--··6.1·unx····51294·bx·defN·25-Mar-18·08:45·OEBPS/global.xhtml
32 ?rw-r--r--··6.1·unx····54264·bx·defN·25-Mar-18·07:53·OEBPS/gen_udp.xhtml32 ?rw-r--r--··6.1·unx····54264·bx·defN·25-Mar-18·08:45·OEBPS/gen_udp.xhtml
33 ?rw-r--r--··6.1·unx····90671·bx·defN·25-Mar-18·07:53·OEBPS/gen_tcp.xhtml33 ?rw-r--r--··6.1·unx····90671·bx·defN·25-Mar-18·08:45·OEBPS/gen_tcp.xhtml
34 ?rw-r--r--··6.1·unx···196481·bx·defN·25-Mar-18·07:53·OEBPS/gen_sctp.xhtml34 ?rw-r--r--··6.1·unx···196481·bx·defN·25-Mar-18·08:45·OEBPS/gen_sctp.xhtml
35 ?rw-r--r--··6.1·unx···221922·bx·defN·25-Mar-18·07:53·OEBPS/file.xhtml35 ?rw-r--r--··6.1·unx···221922·bx·defN·25-Mar-18·08:45·OEBPS/file.xhtml
36 ?rw-r--r--··6.1·unx····51547·bx·defN·25-Mar-18·07:53·OEBPS/error_logger.xhtml36 ?rw-r--r--··6.1·unx····51547·bx·defN·25-Mar-18·08:45·OEBPS/error_logger.xhtml
37 ?rw-r--r--··6.1·unx·····9371·bx·defN·25-Mar-18·07:53·OEBPS/error_handler.xhtml37 ?rw-r--r--··6.1·unx·····9371·bx·defN·25-Mar-18·08:45·OEBPS/error_handler.xhtml
38 ?rw-r--r--··6.1·unx···105244·bx·defN·25-Mar-18·07:53·OEBPS/erpc.xhtml38 ?rw-r--r--··6.1·unx···105244·bx·defN·25-Mar-18·08:45·OEBPS/erpc.xhtml
39 ?rw-r--r--··6.1·unx····19311·bx·defN·25-Mar-18·07:53·OEBPS/erl_epmd.xhtml39 ?rw-r--r--··6.1·unx····19311·bx·defN·25-Mar-18·08:45·OEBPS/erl_epmd.xhtml
40 ?rw-r--r--··6.1·unx····79832·bx·defN·25-Mar-18·07:53·OEBPS/erl_ddll.xhtml40 ?rw-r--r--··6.1·unx····79832·bx·defN·25-Mar-18·08:45·OEBPS/erl_ddll.xhtml
41 ?rw-r--r--··6.1·unx····10114·bx·defN·25-Mar-18·07:53·OEBPS/erl_boot_server.xhtml41 ?rw-r--r--··6.1·unx····10114·bx·defN·25-Mar-18·08:45·OEBPS/erl_boot_server.xhtml
42 ?rw-r--r--··6.1·unx····14988·bx·defN·25-Mar-18·07:53·OEBPS/eep48_chapter.xhtml42 ?rw-r--r--··6.1·unx····14988·bx·defN·25-Mar-18·08:45·OEBPS/eep48_chapter.xhtml
43 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-erlang-ESPT6BQV.css43 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:45·OEBPS/dist/epub-erlang-ESPT6BQV.css
44 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-LSJCIYTM.js44 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:45·OEBPS/dist/epub-LSJCIYTM.js
45 ?rw-r--r--··6.1·unx···129923·bx·defN·25-Mar-18·07:53·OEBPS/disk_log.xhtml45 ?rw-r--r--··6.1·unx···129923·bx·defN·25-Mar-18·08:45·OEBPS/disk_log.xhtml
46 ?rw-r--r--··6.1·unx·····7455·bx·defN·25-Mar-18·07:53·OEBPS/content.opf46 ?rw-r--r--··6.1·unx·····7455·bx·defN·25-Mar-18·08:45·OEBPS/content.opf
47 ?rw-r--r--··6.1·unx····10083·bx·defN·25-Mar-18·07:53·OEBPS/config.xhtml47 ?rw-r--r--··6.1·unx····10083·bx·defN·25-Mar-18·08:45·OEBPS/config.xhtml
48 ?rw-r--r--··6.1·unx···152547·bx·defN·25-Mar-18·07:53·OEBPS/code.xhtml48 ?rw-r--r--··6.1·unx···152547·bx·defN·25-Mar-18·08:45·OEBPS/code.xhtml
49 ?rw-r--r--··6.1·unx····11265·bx·defN·25-Mar-18·07:53·OEBPS/auth.xhtml49 ?rw-r--r--··6.1·unx····11265·bx·defN·25-Mar-18·08:45·OEBPS/auth.xhtml
50 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:53·OEBPS/assets/logo.png50 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:45·OEBPS/assets/logo.png
51 ?rw-r--r--··6.1·unx····97843·bx·defN·25-Mar-18·07:53·OEBPS/application.xhtml51 ?rw-r--r--··6.1·unx····97843·bx·defN·25-Mar-18·08:45·OEBPS/application.xhtml
52 ?rw-r--r--··6.1·unx····20113·bx·defN·25-Mar-18·07:53·OEBPS/app.xhtml52 ?rw-r--r--··6.1·unx····20113·bx·defN·25-Mar-18·08:45·OEBPS/app.xhtml
53 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:53·META-INF/container.xml53 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:45·META-INF/container.xml
54 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:53·META-INF/com.apple.ibooks.display-options.xml54 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:45·META-INF/com.apple.ibooks.display-options.xml
55 53·files,·3517118·bytes·uncompressed,·772112·bytes·compressed:··78.0%55 53·files,·3517118·bytes·uncompressed,·772106·bytes·compressed:··78.0%
307 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,·Mar·18·2025·07:53: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,·Mar·18·2025·08:45:24,·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="5926857915-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="5926857915-1">}</samp><samp·[·...·truncated·by·diffoscope;·len:·277,·SHA:·428bf57a7a22308b4ee699aca06526ae03bd595acbd314f60bed5590e28ee645·...·]-2">)</samp><samp·class="p">,</samp><samp·class="w">929 </samp><samp·class="p"·data-group-id="1167049877-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="1167049877-1">}</samp><samp·[·...·truncated·by·diffoscope;·len:·277,·SHA:·29cbbb32dc654d83bb8ae311522926477ba229d1b766dda838da9697f8c8587a·...·]-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="5926857915-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="5926857915-3">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·f27cd15551d2442d10a92b6e2d3c8fb5dfe6803868b25fd45c249c98dad7a8a4·...·]-4">)</samp><samp·class="p">,</samp><samp·class="w">931 </samp><samp·class="p"·data-group-id="1167049877-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="1167049877-3">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·0fa115faba5c66dc9cda9997bdeceaa9e48e1d935d969ee8c05730adea2c5d85·...·]-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="7734019241-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:·ff13837ea09bf91d0a5d9640e97215ee5c3c20dfeff920a307734404494cddf6·...·]-1">}</samp></code></pre>719 subscriber:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="1884272100-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:·4dae41487fea1565165bd3ea245bcfb8202340ca4a882131b1b84c500919a713·...·]-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.09 KB
OEBPS/notes.xhtml
    
Offset 23144, 77 lines modifiedOffset 23144, 77 lines modified
0005a670:·7061·6e3e·3c73·7061·6e20·636c·6173·733d··pan><span·class=0005a670:·7061·6e3e·3c73·7061·6e20·636c·6173·733d··pan><span·class=
0005a680:·226e·6322·3e65·726c·616e·673c·2f73·7061··"nc">erlang</spa0005a680:·226e·6322·3e65·726c·616e·673c·2f73·7061··"nc">erlang</spa
0005a690:·6e3e·3c73·7061·6e20·636c·6173·733d·2270··n><span·class="p0005a690:·6e3e·3c73·7061·6e20·636c·6173·733d·2270··n><span·class="p
0005a6a0:·223e·3a3c·2f73·7061·6e3e·3c73·7061·6e20··">:</span><span·0005a6a0:·223e·3a3c·2f73·7061·6e3e·3c73·7061·6e20··">:</span><span·
0005a6b0:·636c·6173·733d·226e·6622·3e6d·6f6e·6974··class="nf">monit0005a6b0:·636c·6173·733d·226e·6622·3e6d·6f6e·6974··class="nf">monit
0005a6c0:·6f72·3c2f·7370·616e·3e3c·7370·616e·2063··or</span><span·c0005a6c0:·6f72·3c2f·7370·616e·3e3c·7370·616e·2063··or</span><span·c
0005a6d0:·6c61·7373·3d22·7022·2064·6174·612d·6772··lass="p"·data-gr0005a6d0:·6c61·7373·3d22·7022·2064·6174·612d·6772··lass="p"·data-gr
0005a6e0:·6f75·702d·6964·3d22·3233·3838·3133·3234··oup-id="238813240005a6e0:·6f75·702d·6964·3d22·3239·3336·3537·3631··oup-id="29365761
0005a6f0:·3339·2d31·223e·283c·2f73·7061·6e3e·3c73··39-1">(</span><s0005a6f0:·3238·2d31·223e·283c·2f73·7061·6e3e·3c73··28-1">(</span><s
0005a700:·7061·6e20·636c·6173·733d·2273·7322·3e70··pan·class="ss">p0005a700:·7061·6e20·636c·6173·733d·2273·7322·3e70··pan·class="ss">p
0005a710:·726f·6365·7373·3c2f·7370·616e·3e3c·7370··rocess</span><sp0005a710:·726f·6365·7373·3c2f·7370·616e·3e3c·7370··rocess</span><sp
0005a720:·616e·2063·6c61·7373·3d22·7022·3e2c·3c2f··an·class="p">,</0005a720:·616e·2063·6c61·7373·3d22·7022·3e2c·3c2f··an·class="p">,</
0005a730:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class0005a730:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class
0005a740:·3d22·7722·3e20·3c2f·7370·616e·3e3c·7370··="w">·</span><sp0005a740:·3d22·7722·3e20·3c2f·7370·616e·3e3c·7370··="w">·</span><sp
0005a750:·616e·2063·6c61·7373·3d22·6e22·3e50·6964··an·class="n">Pid0005a750:·616e·2063·6c61·7373·3d22·6e22·3e50·6964··an·class="n">Pid
0005a760:·3c2f·7370·616e·3e3c·7370·616e·2063·6c61··</span><span·cla0005a760:·3c2f·7370·616e·3e3c·7370·616e·2063·6c61··</span><span·cla
0005a770:·7373·3d22·7022·2064·6174·612d·6772·6f75··ss="p"·data-grou0005a770:·7373·3d22·7022·2064·6174·612d·6772·6f75··ss="p"·data-grou
0005a780:·702d·6964·3d22·3233·3838·3133·3234·3339··p-id="23881324390005a780:·702d·6964·3d22·3239·3336·3537·3631·3238··p-id="2936576128
0005a790:·2d31·223e·293c·2f73·7061·6e3e·3c73·7061··-1">)</span><spa0005a790:·2d31·223e·293c·2f73·7061·6e3e·3c73·7061··-1">)</span><spa
0005a7a0:·6e20·636c·6173·733d·2270·223e·2c3c·2f73··n·class="p">,</s0005a7a0:·6e20·636c·6173·733d·2270·223e·2c3c·2f73··n·class="p">,</s
0005a7b0:·7061·6e3e·3c73·7061·6e20·636c·6173·733d··pan><span·class=0005a7b0:·7061·6e3e·3c73·7061·6e20·636c·6173·733d··pan><span·class=
0005a7c0:·2277·223e·0a20·2020·2020·2020·2020·2020··"w">.···········0005a7c0:·2277·223e·0a20·2020·2020·2020·2020·2020··"w">.···········
0005a7d0:·203c·2f73·7061·6e3e·3c73·7061·6e20·636c···</span><span·cl0005a7d0:·203c·2f73·7061·6e3e·3c73·7061·6e20·636c···</span><span·cl
0005a7e0:·6173·733d·2263·3122·3e25·2520·2e2e·2e3c··ass="c1">%%·...<0005a7e0:·6173·733d·2263·3122·3e25·2520·2e2e·2e3c··ass="c1">%%·...<
0005a7f0:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas0005a7f0:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas
0005a800:·733d·2277·223e·0a20·2020·2020·2020·2020··s="w">.·········0005a800:·733d·2277·223e·0a20·2020·2020·2020·2020··s="w">.·········
0005a810:·2020·203c·2f73·7061·6e3e·3c73·7061·6e20·····</span><span·0005a810:·2020·203c·2f73·7061·6e3e·3c73·7061·6e20·····</span><span·
0005a820:·636c·6173·733d·226e·6622·3e65·7869·743c··class="nf">exit<0005a820:·636c·6173·733d·226e·6622·3e65·7869·743c··class="nf">exit<
0005a830:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas0005a830:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas
0005a840:·733d·2270·2220·6461·7461·2d67·726f·7570··s="p"·data-group0005a840:·733d·2270·2220·6461·7461·2d67·726f·7570··s="p"·data-group
0005a850:·2d69·643d·2232·3338·3831·3332·3433·392d··-id="2388132439-0005a850:·2d69·643d·2232·3933·3635·3736·3132·382d··-id="2936576128-
0005a860:·3222·3e28·3c2f·7370·616e·3e3c·7370·616e··2">(</span><span0005a860:·3222·3e28·3c2f·7370·616e·3e3c·7370·616e··2">(</span><span
0005a870:·2063·6c61·7373·3d22·6e22·3e50·6964·3c2f···class="n">Pid</0005a870:·2063·6c61·7373·3d22·6e22·3e50·6964·3c2f···class="n">Pid</
0005a880:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class0005a880:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class
0005a890:·3d22·7022·3e2c·3c2f·7370·616e·3e3c·7370··="p">,</span><sp0005a890:·3d22·7022·3e2c·3c2f·7370·616e·3e3c·7370··="p">,</span><sp
0005a8a0:·616e·2063·6c61·7373·3d22·7722·3e20·3c2f··an·class="w">·</0005a8a0:·616e·2063·6c61·7373·3d22·7722·3e20·3c2f··an·class="w">·</
0005a8b0:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class0005a8b0:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class
0005a8c0:·3d22·7373·223e·6261·6e67·3c2f·7370·616e··="ss">bang</span0005a8c0:·3d22·7373·223e·6261·6e67·3c2f·7370·616e··="ss">bang</span
0005a8d0:·3e3c·7370·616e·2063·6c61·7373·3d22·7022··><span·class="p"0005a8d0:·3e3c·7370·616e·2063·6c61·7373·3d22·7022··><span·class="p"
0005a8e0:·2064·6174·612d·6772·6f75·702d·6964·3d22···data-group-id="0005a8e0:·2064·6174·612d·6772·6f75·702d·6964·3d22···data-group-id="
0005a8f0:·3233·3838·3133·3234·3339·2d32·223e·293c··2388132439-2">)<0005a8f0:·3239·3336·3537·3631·3238·2d32·223e·293c··2936576128-2">)<
0005a900:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas0005a900:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas
0005a910:·733d·2270·223e·2c3c·2f73·7061·6e3e·3c73··s="p">,</span><s0005a910:·733d·2270·223e·2c3c·2f73·7061·6e3e·3c73··s="p">,</span><s
0005a920:·7061·6e20·636c·6173·733d·2277·223e·0a20··pan·class="w">.·0005a920:·7061·6e20·636c·6173·733d·2277·223e·0a20··pan·class="w">.·
0005a930:·2020·2020·2020·2020·2020·203c·2f73·7061·············</spa0005a930:·2020·2020·2020·2020·2020·203c·2f73·7061·············</spa
0005a940:·6e3e·3c73·7061·6e20·636c·6173·733d·226e··n><span·class="n0005a940:·6e3e·3c73·7061·6e20·636c·6173·733d·226e··n><span·class="n
0005a950:·6322·3e65·726c·616e·673c·2f73·7061·6e3e··c">erlang</span>0005a950:·6322·3e65·726c·616e·673c·2f73·7061·6e3e··c">erlang</span>
0005a960:·3c73·7061·6e20·636c·6173·733d·2270·223e··<span·class="p">0005a960:·3c73·7061·6e20·636c·6173·733d·2270·223e··<span·class="p">
0005a970:·3a3c·2f73·7061·6e3e·3c73·7061·6e20·636c··:</span><span·cl0005a970:·3a3c·2f73·7061·6e3e·3c73·7061·6e20·636c··:</span><span·cl
0005a980:·6173·733d·226e·6622·3e64·656d·6f6e·6974··ass="nf">demonit0005a980:·6173·733d·226e·6622·3e64·656d·6f6e·6974··ass="nf">demonit
0005a990:·6f72·3c2f·7370·616e·3e3c·7370·616e·2063··or</span><span·c0005a990:·6f72·3c2f·7370·616e·3e3c·7370·616e·2063··or</span><span·c
0005a9a0:·6c61·7373·3d22·7022·2064·6174·612d·6772··lass="p"·data-gr0005a9a0:·6c61·7373·3d22·7022·2064·6174·612d·6772··lass="p"·data-gr
0005a9b0:·6f75·702d·6964·3d22·3233·3838·3133·3234··oup-id="238813240005a9b0:·6f75·702d·6964·3d22·3239·3336·3537·3631··oup-id="29365761
0005a9c0:·3339·2d33·223e·283c·2f73·7061·6e3e·3c73··39-3">(</span><s0005a9c0:·3238·2d33·223e·283c·2f73·7061·6e3e·3c73··28-3">(</span><s
0005a9d0:·7061·6e20·636c·6173·733d·226e·223e·4d6f··pan·class="n">Mo0005a9d0:·7061·6e20·636c·6173·733d·226e·223e·4d6f··pan·class="n">Mo
0005a9e0:·6e3c·2f73·7061·6e3e·3c73·7061·6e20·636c··n</span><span·cl0005a9e0:·6e3c·2f73·7061·6e3e·3c73·7061·6e20·636c··n</span><span·cl
0005a9f0:·6173·733d·2270·2220·6461·7461·2d67·726f··ass="p"·data-gro0005a9f0:·6173·733d·2270·2220·6461·7461·2d67·726f··ass="p"·data-gro
0005aa00:·7570·2d69·643d·2232·3338·3831·3332·3433··up-id="2388132430005aa00:·7570·2d69·643d·2232·3933·3635·3736·3132··up-id="293657612
0005aa10:·392d·3322·3e29·3c2f·7370·616e·3e3c·7370··9-3">)</span><sp0005aa10:·382d·3322·3e29·3c2f·7370·616e·3e3c·7370··8-3">)</span><sp
0005aa20:·616e·2063·6c61·7373·3d22·7022·3e2c·3c2f··an·class="p">,</0005aa20:·616e·2063·6c61·7373·3d22·7022·3e2c·3c2f··an·class="p">,</
0005aa30:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class0005aa30:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class
0005aa40:·3d22·7722·3e0a·2020·2020·2020·2020·2020··="w">.··········0005aa40:·3d22·7722·3e0a·2020·2020·2020·2020·2020··="w">.··········
0005aa50:·2020·3c2f·7370·616e·3e3c·7370·616e·2063····</span><span·c0005aa50:·2020·3c2f·7370·616e·3e3c·7370·616e·2063····</span><span·c
0005aa60:·6c61·7373·3d22·6b22·3e72·6563·6569·7665··lass="k">receive0005aa60:·6c61·7373·3d22·6b22·3e72·6563·6569·7665··lass="k">receive
0005aa70:·3c2f·7370·616e·3e3c·7370·616e·2063·6c61··</span><span·cla0005aa70:·3c2f·7370·616e·3e3c·7370·616e·2063·6c61··</span><span·cla
0005aa80:·7373·3d22·7722·3e0a·2020·2020·2020·2020··ss="w">.········0005aa80:·7373·3d22·7722·3e0a·2020·2020·2020·2020··ss="w">.········
0005aa90:·2020·2020·2020·2020·3c2f·7370·616e·3e3c··········</span><0005aa90:·2020·2020·2020·2020·3c2f·7370·616e·3e3c··········</span><
0005aaa0:·7370·616e·2063·6c61·7373·3d22·7022·2064··span·class="p"·d0005aaa0:·7370·616e·2063·6c61·7373·3d22·7022·2064··span·class="p"·d
0005aab0:·6174·612d·6772·6f75·702d·6964·3d22·3233··ata-group-id="230005aab0:·6174·612d·6772·6f75·702d·6964·3d22·3239··ata-group-id="29
0005aac0:·3838·3133·3234·3339·2d34·223e·7b3c·2f73··88132439-4">{</s0005aac0:·3336·3537·3631·3238·2d34·223e·7b3c·2f73··36576128-4">{</s
0005aad0:·7061·6e3e·3c73·7061·6e20·636c·6173·733d··pan><span·class=0005aad0:·7061·6e3e·3c73·7061·6e20·636c·6173·733d··pan><span·class=
0005aae0:·2273·7322·3e26·2333·393b·444f·574e·2623··"ss">&#39;DOWN&#0005aae0:·2273·7322·3e26·2333·393b·444f·574e·2623··"ss">&#39;DOWN&#
0005aaf0:·3339·3b3c·2f73·7061·6e3e·3c73·7061·6e20··39;</span><span·0005aaf0:·3339·3b3c·2f73·7061·6e3e·3c73·7061·6e20··39;</span><span·
0005ab00:·636c·6173·733d·2270·223e·2c3c·2f73·7061··class="p">,</spa0005ab00:·636c·6173·733d·2270·223e·2c3c·2f73·7061··class="p">,</spa
0005ab10:·6e3e·3c73·7061·6e20·636c·6173·733d·2277··n><span·class="w0005ab10:·6e3e·3c73·7061·6e20·636c·6173·733d·2277··n><span·class="w
0005ab20:·223e·203c·2f73·7061·6e3e·3c73·7061·6e20··">·</span><span·0005ab20:·223e·203c·2f73·7061·6e3e·3c73·7061·6e20··">·</span><span·
0005ab30:·636c·6173·733d·226e·223e·4d6f·6e3c·2f73··class="n">Mon</s0005ab30:·636c·6173·733d·226e·223e·4d6f·6e3c·2f73··class="n">Mon</s
Offset 23230, 15 lines modifiedOffset 23230, 15 lines modified
0005abd0:·6e22·3e50·6964·3c2f·7370·616e·3e3c·7370··n">Pid</span><sp0005abd0:·6e22·3e50·6964·3c2f·7370·616e·3e3c·7370··n">Pid</span><sp
0005abe0:·616e·2063·6c61·7373·3d22·7022·3e2c·3c2f··an·class="p">,</0005abe0:·616e·2063·6c61·7373·3d22·7022·3e2c·3c2f··an·class="p">,</
0005abf0:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class0005abf0:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class
0005ac00:·3d22·7722·3e20·3c2f·7370·616e·3e3c·7370··="w">·</span><sp0005ac00:·3d22·7722·3e20·3c2f·7370·616e·3e3c·7370··="w">·</span><sp
0005ac10:·616e·2063·6c61·7373·3d22·7022·3e5f·3c2f··an·class="p">_</0005ac10:·616e·2063·6c61·7373·3d22·7022·3e5f·3c2f··an·class="p">_</
0005ac20:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class0005ac20:·7370·616e·3e3c·7370·616e·2063·6c61·7373··span><span·class
0005ac30:·3d22·7022·2064·6174·612d·6772·6f75·702d··="p"·data-group-0005ac30:·3d22·7022·2064·6174·612d·6772·6f75·702d··="p"·data-group-
0005ac40:·6964·3d22·3233·3838·3133·3234·3339·2d34··id="2388132439-40005ac40:·6964·3d22·3239·3336·3537·3631·3238·2d34··id="2936576128-4
0005ac50:·223e·7d3c·2f73·7061·6e3e·3c73·7061·6e20··">}</span><span·0005ac50:·223e·7d3c·2f73·7061·6e3e·3c73·7061·6e20··">}</span><span·
0005ac60:·636c·6173·733d·2277·223e·203c·2f73·7061··class="w">·</spa0005ac60:·636c·6173·733d·2277·223e·203c·2f73·7061··class="w">·</spa
0005ac70:·6e3e·3c73·7061·6e20·636c·6173·733d·2270··n><span·class="p0005ac70:·6e3e·3c73·7061·6e20·636c·6173·733d·2270··n><span·class="p
0005ac80:·223e·2d26·6774·3b3c·2f73·7061·6e3e·3c73··">-&gt;</span><s0005ac80:·223e·2d26·6774·3b3c·2f73·7061·6e3e·3c73··">-&gt;</span><s
0005ac90:·7061·6e20·636c·6173·733d·2277·223e·203c··pan·class="w">·<0005ac90:·7061·6e20·636c·6173·733d·2277·223e·203c··pan·class="w">·<
0005aca0:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas0005aca0:·2f73·7061·6e3e·3c73·7061·6e20·636c·6173··/span><span·clas
0005acb0:·733d·2273·7322·3e6f·6b3c·2f73·7061·6e3e··s="ss">ok</span>0005acb0:·733d·2273·7322·3e6f·6b3c·2f73·7061·6e3e··s="ss">ok</span>
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="2749437932-1">(</samp><samp·class="p"·data-group-id="2749437932-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="5100017816-1">(</samp><samp·class="p"·data-group-id="5100017816-1">)</samp><samp·class="p">.</samp><samp·class="w">
360 </samp><samp·class="p"·data-group-id="2749437932-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="2749437932-3">[</samp><samp·class="p"·data-group-id="2749437932-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·2e6b6f6b5de9be678ce382e0061334e8edd158c57393acaedb316616a108789f·...·]-2">}</samp></code></pre>360 </samp><samp·class="p"·data-group-id="5100017816-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="5100017816-3">[</samp><samp·class="p"·data-group-id="5100017816-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·603c700c5fe3da44601c6ffa2338d64b272237c0d301b8b91274c12a913b29f1·...·]-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="7728199774-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="0180655464-1">(</samp><samp·class="w">
442 ····</samp><samp·class="nf">fun</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="7728199774-2">(</samp><samp·class="p"·data-group-id="7728199774-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="7728199774-4">#{</samp>[·...·truncated·by·diffoscope;·len:·171,·SHA:·aa04b297448e281978067eff7f4ff82e914701c8b99769132d84158e9b2fd02a·...·]4-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="0180655464-2">(</samp><samp·class="p"·data-group-id="0180655464-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="0180655464-4">#{</samp>[·...·truncated·by·diffoscope;·len:·171,·SHA:·1fd6af4f24ba2f7dd90e620977784818b8363bb90c801112f4d61f2c19aed59d·...·]4-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="7728199774-3">}</samp><samp·class="p"·data-group-id="7728199774-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="0180655464-3">}</samp><samp·class="p"·data-group-id="0180655464-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="7728199774-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="7728199774-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="0180655464-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="0180655464-5">)</samp><samp·class="p">;</samp><samp·class="w">
445 ········</samp><samp·class="p"·data-group-id="7728199774-6">(</samp><samp·class="p">_</samp><samp·class="p"·data-group-id="7728199774-6">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">445 ········</samp><samp·class="p"·data-group-id="0180655464-6">(</samp><samp·class="p">_</samp><samp·class="p"·data-group-id="0180655464-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="7728199774-1">)</samp><samp·class="p">.</samp></code></pre>447 ····</samp><samp·class="k">end</samp><samp·class="p"·data-group-id="0180655464-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="9823517922-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="2209549051-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="9823517922-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="9823517922-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="2209549051-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="2209549051-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="9823517922-3">}</samp><samp·class="p"·data-group-id="9823517922-2">}</samp><samp·class="p"·data-group-id="9823517922-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="2209549051-3">}</samp><samp·class="p"·data-group-id="2209549051-2">}</samp><samp·class="p"·data-group-id="2209549051-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="0720314578-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="2684117007-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="0720314578-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="0720314578-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="2684117007-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="2684117007-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="0720314578-3">}</samp><samp·class="p"·data-group-id="0720314578-2">}</samp><samp·class="p"·data-group-id="0720314578-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="2684117007-3">}</samp><samp·class="p"·data-group-id="2684117007-2">}</samp><samp·class="p"·data-group-id="2684117007-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="3665906629-1">{</samp><samp·class="ss">global_groups</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="3665906629-2">[</samp><samp·class="n">GroupTuple</samp><samp·class="w">·</samp><samp·class="p">:</samp><samp·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·42d211b05c7ec5068d01c0a9bac5449ba71b5dd365018076faa2d66f4bd44b0d·...·]-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="4017048717-1">{</samp><samp·class="ss">global_groups</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="4017048717-2">[</samp><samp·class="n">GroupTuple</samp><samp·class="w">·</samp><samp·class="p">:</samp><samp·class="p"[·...·truncated·by·diffoscope;·len:·268,·SHA:·2dec6398f79120f06a0a8a76b7e49b2cfc7c79e385d00362fcad5625375afabe·...·]-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
    
Offset 803, 25 lines modifiedOffset 803, 25 lines modified
803 time-to-live·(TTL)·for·outgoing·multicast·datagrams·to·control·the·scope·of803 time-to-live·(TTL)·for·outgoing·multicast·datagrams·to·control·the·scope·of
804 the·multicasts.</p><p>Datagrams·with·a·TTL·of·1·are·not·forwarded·beyond·the·local·network.804 the·multicasts.</p><p>Datagrams·with·a·TTL·of·1·are·not·forwarded·beyond·the·local·network.
805 Defaults·to·<code·class="inline">1</code>.</p></li><li><p><strong><code·class="inline">{add_membership, {MultiAddress, InterfaceAddress}}</code></strong>·-805 Defaults·to·<code·class="inline">1</code>.</p></li><li><p><strong><code·class="inline">{add_membership, {MultiAddress, InterfaceAddress}}</code></strong>·-
806 Joins·a·multicast·group.</p></li><li><p><strong><code·class="inline">{drop_membership, {MultiAddress, InterfaceAddress}}</code></strong>·-806 Joins·a·multicast·group.</p></li><li><p><strong><code·class="inline">{drop_membership, {MultiAddress, InterfaceAddress}}</code></strong>·-
807 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.xhtml#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>.807 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.xhtml#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>.
808 When·UDP·packets·arrive·to·the·<code·class="inline">Socket</code>'s·UDP·port,·and·the·socket·is·in808 When·UDP·packets·arrive·to·the·<code·class="inline">Socket</code>'s·UDP·port,·and·the·socket·is·in
809 an·<em>active·mode</em>,·the·packets·are·delivered·as·messages·to·the809 an·<em>active·mode</em>,·the·packets·are·delivered·as·messages·to·the
810 controlling·process·(socket·owner):</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="2256608890-1">{</samp><samp·class="ss">udp</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">Socket</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">PeerIP</samp><samp·class="p">,</samp><samp·class="err"> </samp[·...·truncated·by·diffoscope;·len:·152,·SHA:·853d374f62858a52ab3bc23b9d2c37e3817ed52729b24b43d60afeb06f640135·...·]-1">}</samp><samp·class="w">·</samp><samp·class="c1">%·Without·ancillary·data</samp><samp·class="w">810 controlling·process·(socket·owner):</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="1968764188-1">{</samp><samp·class="ss">udp</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">Socket</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">PeerIP</samp><samp·class="p">,</samp><samp·class="err"> </samp[·...·truncated·by·diffoscope;·len:·152,·SHA:·0d886b56063cf4aae74488226b376ba9a82d50251915f92550d762b85b3b69d1·...·]-1">}</samp><samp·class="w">·</samp><samp·class="c1">%·Without·ancillary·data</samp><samp·class="w">
811 </samp><samp·class="p"·data-group-id="2256608890-2">{</samp><samp·class="ss">udp</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">Socket</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">PeerIP</samp><samp·class="p">,</samp><samp·class="err"> </samp[·...·truncated·by·diffoscope;·len:·232,·SHA:·5c7276765fa4a27848110969c55fa8c6040f3cc2838fc4b020f12daa68a8370f·...·]-2">}</samp><samp·class="w">·</samp><samp·class="c1">%·With·ancillary·data</samp></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.811 </samp><samp·class="p"·data-group-id="1968764188-2">{</samp><samp·class="ss">udp</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">Socket</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">PeerIP</samp><samp·class="p">,</samp><samp·class="err"> </samp[·...·truncated·by·diffoscope;·len:·232,·SHA:·35da52416303316cc2961e1af9007947ec63d267a5a3b7dc6aff52305913f0e3·...·]-2">}</samp><samp·class="w">·</samp><samp·class="c1">%·With·ancillary·data</samp></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.
812 <code·class="inline">Packet</code>·is·a·list·of·bytes·(<code·class="inline">[</code><a·href="../../../../lib/../erts/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>812 <code·class="inline">Packet</code>·is·a·list·of·bytes·(<code·class="inline">[</code><a·href="../../../../lib/../erts/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>
813 is·active·and·a·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:binary/0"><code·class="inline">binary/0</code></a>·if·option·<code·class="inline">binary</code>is·active813 is·active·and·a·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:binary/0"><code·class="inline">binary/0</code></a>·if·option·<code·class="inline">binary</code>is·active
814 (they·are·mutually·exclusive).</p><p>The·message·contains·an·<code·class="inline">AncData</code>·field·only·if·any·of·the·socket814 (they·are·mutually·exclusive).</p><p>The·message·contains·an·<code·class="inline">AncData</code>·field·only·if·any·of·the·socket
815 <a·href="#t:option/0">options</a>·<a·href="inet.xhtml#option-recvtos"><code·class="inline">recvtos</code></a>,815 <a·href="#t:option/0">options</a>·<a·href="inet.xhtml#option-recvtos"><code·class="inline">recvtos</code></a>,
816 <a·href="inet.xhtml#option-recvtclass"><code·class="inline">recvtclass</code></a>·or816 <a·href="inet.xhtml#option-recvtclass"><code·class="inline">recvtclass</code></a>·or
817 <a·href="inet.xhtml#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.xhtml#setopts/2"><code·class="inline">inet:setopts/2</code></a>·for·details),817 <a·href="inet.xhtml#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.xhtml#setopts/2"><code·class="inline">inet:setopts/2</code></a>·for·details),
818 transitions·to·passive·(<code·class="inline">{active, false}</code>)·mode·(<code·class="inline">N</code>·counts·down·to·<code·class="inline">0</code>),818 transitions·to·passive·(<code·class="inline">{active, false}</code>)·mode·(<code·class="inline">N</code>·counts·down·to·<code·class="inline">0</code>),
819 the·controlling·process·is·notified·by·a·message·on·this·form:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="6642165921-1">{</samp><samp·class="ss">udp_passive</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">Socket</samp><samp·class="p"·data-group-id="6642165921-1">}</samp></code></pre><p>If·the·OS·protocol·stack·reports·an·error·for·the·socket,·the·following819 the·controlling·process·is·notified·by·a·message·on·this·form:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="0915739081-1">{</samp><samp·class="ss">udp_passive</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">Socket</samp><samp·class="p"·data-group-id="0915739081-1">}</samp></code></pre><p>If·the·OS·protocol·stack·reports·an·error·for·the·socket,·the·following
820 message·is·sent·to·the·controlling·process:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="0736341878-1">{</samp><samp·class="ss">udp_error</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">Socket</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">Reason</samp><samp·class="p"·data-group-id="0736341878-1">}</samp></code></pre><p><code·class="inline">Reason</code>·is·mostly·a·<a·href="inet.xhtml#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·data820 message·is·sent·to·the·controlling·process:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="6553301171-1">{</samp><samp·class="ss">udp_error</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">Socket</samp><samp·class="p">,</samp><samp·class="err"> </samp><samp·class="n">Reason</samp><samp·class="p"·data-group-id="6553301171-1">}</samp></code></pre><p><code·class="inline">Reason</code>·is·mostly·a·<a·href="inet.xhtml#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
821 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·incoming821 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
822 UDP·packets·that·are·longer·than·the·receive·buffer·option·specifies822 UDP·packets·that·are·longer·than·the·receive·buffer·option·specifies
823 can·be·truncated·without·warning.</p><p>The·default·value·for·the·receive·buffer·option·is·<code·class="inline">{recbuf, 8192}</code>.</p>823 can·be·truncated·without·warning.</p><p>The·default·value·for·the·receive·buffer·option·is·<code·class="inline">{recbuf, 8192}</code>.</p>
824 ··</section>824 ··</section>
825 </section>825 </section>
826 <section·class="detail"·id="recv/2">826 <section·class="detail"·id="recv/2">
  
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="0658941805-1">(</samp><samp·class="ss">localhost</samp><samp·class="p"·data-group-id="0658941805-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="9173250371-1">(</samp><samp·class="ss">localhost</samp><samp·class="p"·data-group-id="9173250371-1">)</samp><samp·class="p">.</samp><samp·class="w">
241 </samp><samp·class="p"·data-group-id="0658941805-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="0658941805-3">[</samp><samp·class="p"·data-group-id="0658941805-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·bf602cfbe8731f9054c08b557d93965cba146928bec749eab96c7a12be2fbf4e·...·]-2">}</samp></code></pre>241 </samp><samp·class="p"·data-group-id="9173250371-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="9173250371-3">[</samp><samp·class="p"·data-group-id="9173250371-4">{</samp><samp·class="s">&quot;arne&quot;</samp><samp·class="p">,</samp><samp·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·e7c354a18b57fca539a391cdbab7200180b241ff2759e83e5f1a24cfa85cf317·...·]-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="8231802325-1">[</span><span·class="p"·data-group-id="8231802325-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8231802325-3">[</span><span·class="p"·data-group-id="8231802325-4">[·...·truncated·by·diffoscope;·len:·379,·SHA:·d4b8fb5d187f0b6eaa16b13d38225cbf6681bb08ff97e9840a9dceaae7860006·...·]-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="3690474482-1">[</span><span·class="p"·data-group-id="3690474482-2">{</span><span·class="n">Application1</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3690474482-3">[</span><span·class="p"·data-group-id="3690474482-4">[·...·truncated·by·diffoscope;·len:·379,·SHA:·5decfd37431e52694164c1c6172bf2f2d9fe3cb7af81d8408062a2b016f1fcea·...·]-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="8231802325-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8231802325-6">[</span><span·class="p"·data-group-id="8231802325-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·379,·SHA:·effc20c6ce9ee3ea5125656706fabcfec44ca775f6c06810be54f60888554259·...·]-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="3690474482-5">{</span><span·class="n">ApplicationN</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3690474482-6">[</span><span·class="p"·data-group-id="3690474482-7">{</span><span·class="n">ParN1</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·379,·SHA:·1fdce91ec5210b63ebcdbeeb489dd08d7b62210d14f9b7404e63374f53262c52·...·]-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="0588224245-1">[</samp><samp·class="ss">cp1@cave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="0588224245-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:·7f097a2051b6fa2296c90fe8a1cdf2b404affa5501028cbd846dbeaafb03cd3e·...·]-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="2279995273-1">[</samp><samp·class="ss">cp1@cave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2279995273-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:·f938f5c0b62409f078373903fbd731562043068d1281637f9567e8a581a300fc·...·]-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.3/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="2254989041-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="2254989041-2">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·621b0c1bc68015c16d47cffc14b8196f70a144c804602cbfc885d3b557779e21·...·]-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="7213510336-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="7213510336-2">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·9e118bb4f295aa9919cc6b5ec23d494f4529a048dab43f5d36e7147f1127d7b7·...·]-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="2254989041-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="2254989041-4">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·6472515e6c86027ca64ce5e7750508bdaafc9bf4e32b53d049403c39c3586033·...·]-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="7213510336-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="7213510336-4">[</span><span·class="n">Reason</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·2013bc3e69db7c0d72040da514e4759829b77b7d69202e42e78cc4f7b9abe350·...·]-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="4513185030-1">[</span><span·class="p"·data-group-id="4513185030-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="7008049124-1">[</span><span·class="p"·data-group-id="7008049124-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
139 ··</span><span·class="p"·data-group-id="4513185030-3">[</span><span·class="p"·data-group-id="4513185030-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">139 ··</span><span·class="p"·data-group-id="7008049124-3">[</span><span·class="p"·data-group-id="7008049124-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
140 ····</span><span·class="p"·data-group-id="4513185030-5">[</span><span·class="p"·data-group-id="4513185030-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="7008049124-5">[</span><span·class="p"·data-group-id="7008049124-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="4513185030-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="4513185030-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;[·...·truncated·by·diffoscope;·len:·494,·SHA:·8a94cd790b057c7654562830a62c627bb05f23e343fc28f0016f67048ce93c6d·...·]-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="7008049124-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="7008049124-8">#{</span><span·class="ss">file</span><span·class="w">·</span><span·class="p">=&gt;[·...·truncated·by·diffoscope;·len:·494,·SHA:·9c6359480b9c68a3c9221f4a4b0cdf61d5eb5f4ad5e88e06cc4d95e2002f78d4·...·]-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="0392568035-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="0392568035-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="5936994094-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="5936994094-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.3/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.3/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="6744467918-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="6744467918-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="3809119019-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="3809119019-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="6744467918-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="6744467918-3">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·265,·SHA:·f6f27971f9c5b55067c8bfa1c5b334fb1684455f817ee78fd0be174baa06012a·...·]-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="3809119019-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="3809119019-3">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·265,·SHA:·17e8f8b849a7029939b78b6562d875ee5f7bdbacda749031a2930219f76064b5·...·]-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="6744467918-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="6744467918-5">[</span><span·class="n">Cause</sp[·...·truncated·by·diffoscope;·len:·97,·SHA:·754d6bf1f9ed68b63d5031a6d17ae151f76919a3bf3f31d883b147193074217c·...·]-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="3809119019-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="3809119019-5">[</span><span·class="n">Cause</sp[·...·truncated·by·diffoscope;·len:·97,·SHA:·0b9a8ad7af24498718250aa91b4bd62b7be8ec04b92aad1c7c030e2c71075097·...·]-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="6744467918-6">(</span><span·class="ss">warning</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6744467918-7">#{</span><span·class="w">·</span><span·class="ss">what</span><span·class="w">·</span><span·class="p">=&gt;</sp[·...·truncated·by·diffoscope;·len:·354,·SHA:·76de7e70eae94951521b70d4b02caa026e35e4f40c82cb324dd314582f52516a·...·]-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="3809119019-6">(</span><span·class="ss">warning</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3809119019-7">#{</span><span·class="w">·</span><span·class="ss">what</span><span·class="w">·</span><span·class="p">=&gt;</sp[·...·truncated·by·diffoscope;·len:·354,·SHA:·7811d128f53782d57558aa7f163c1d0fad87b78a92a3379139acf7b91b4aa977·...·]-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="9640717034-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9640717034-2">(</span><span·class="p"·data-group-id="9640717034-3">[</span><span·class="p"·data-group-id="9640717034-3">]</span><span·class="p"·data-group-id="9640717034-2">)</[·...·truncated·by·diffoscope;·len:·900,·SHA:·db574d71ffabb06d798bffefe426d196e026f756d3c5b6c434250cc72eef6447·...·]-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="6375002045-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6375002045-2">(</span><span·class="p"·data-group-id="6375002045-3">[</span><span·class="p"·data-group-id="6375002045-3">]</span><span·class="p"·data-group-id="6375002045-2">)</[·...·truncated·by·diffoscope;·len:·900,·SHA:·fa9a1bf7d8932185fa368313dbfc8ed15d818bc36858797c658703e4a4a9cc93·...·]-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="9640717034-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9640717034-9">(</span><span·class="n">What</span><span·class="p"·data-group-id="9640717034-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·727,·SHA:·47fd1693954928aa6aaf30d394083099355678862262d5a31dca973c33d2768f·...·]-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="6375002045-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6375002045-9">(</span><span·class="n">What</span><span·class="p"·data-group-id="6375002045-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·727,·SHA:·df89c4327161f92333e7340650a2ed99fd4de4ace50c4f900e6ad5b5111d1365·...·]-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="9640717034-12">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9640717034-13">(</span><span·class="p"·data-group-id="9640717034-14">[</span><span·class="p"·data-group-id="9640717034-14">]</span><span·class="p"·data-group-id="9640717034-13[·...·truncated·by·diffoscope;·len:·859,·SHA:·415fe4bd3daa339d24b446531a4694617a81f401a26b34f7571d39eb1d80432e·...·]-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="6375002045-12">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6375002045-13">(</span><span·class="p"·data-group-id="6375002045-14">[</span><span·class="p"·data-group-id="6375002045-14">]</span><span·class="p"·data-group-id="6375002045-13[·...·truncated·by·diffoscope;·len:·859,·SHA:·7ea52e987a2ae10fae758532a6f33d469a92ffc14b50cdef9876c9bf3f2af6fd·...·]-18">]</span><span·class="p">,</span><span·class="w">
2359 ···············</span><span·class="p"·data-group-id="9640717034-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="9640717034-19">}</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·7734c6d9bb4012857bbc93266752d3561b1b227477c3ee14e04d05b38f769fea·...·]-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="6375002045-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="6375002045-19">}</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·a4032f8ac1763c54893c2cf4563043e99a0641285ed1a7cf03d0bbd1f13e8c57·...·]-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="4674834124-1">(</span><span·class="ss">application</span><span·class="p"·data-group-id="4674834124-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="3211766544-1">(</span><span·class="ss">application</span><span·class="p"·data-group-id="3211766544-1">)</span><span·class="p">.</span><span·class="w">
2664 </span><span·class="nf">start</span><span·class="p"·data-group-id="4674834124-2">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4674834124-3">[</span><span·class="p"·data-group-id="4674834124-3">]</span><span·class="p"·data-group-id="4674834124-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="3211766544-2">(</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3211766544-3">[</span><span·class="p"·data-group-id="3211766544-3">]</span><span·class="p"·data-group-id="3211766544-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="4674834124-4">(</span><span·class="p"·data-group-id="4674834124-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="4674834124-5">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·251,·SHA:·e270e3d50d3ee8ca218912f65907b4808d839e2a01f495f8a119e8e6d5c637e5·...·]4-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="3211766544-4">(</span><span·class="p"·data-group-id="3211766544-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="3211766544-5">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·251,·SHA:·523c110a6a6b84cc2a239e3da887663e4cc498a2203cb0818774c1ea2fbf9b8c·...·]4-4">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
2666 ········</span><span·class="p"·data-group-id="4674834124-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="4674834124-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">2666 ········</span><span·class="p"·data-group-id="3211766544-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="3211766544-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="4674834124-8">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="4674834124-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="3211766544-8">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="3211766544-8">)</span><span·class="p">,</span><span·class="w">
2668 ············</span><span·class="p"·data-group-id="4674834124-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="4674834124-10">[</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·62,·SHA:·c167b151bb58aa7c4e99dcdeb24bd9cfe9a33432e2ad2b2b0fa52a131eb47f16·...·]4-9">}</span><span·class="p">;</span><span·class="w">2668 ············</span><span·class="p"·data-group-id="3211766544-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="3211766544-10">[</span><span·class="p"·data-group-id="3[·...·truncated·by·diffoscope;·len:·62,·SHA:·22c29db37a2106a88c2d85f221fa226d2f4d1f4d61f07fb8e6a3c4251c446d34·...·]4-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="8856698201-1">[</span><span·class="p"·data-group-id="8856698201-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="8229838027-1">[</span><span·class="p"·data-group-id="8229838027-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
2676 ··</span><span·class="p"·data-group-id="8856698201-3">[</span><span·class="p"·data-group-id="8856698201-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">2676 ··</span><span·class="p"·data-group-id="8229838027-3">[</span><span·class="p"·data-group-id="8229838027-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="8856698201-5">[</span><span·class="p"·data-group-id="8856698201-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">undefin[·...·truncated·by·diffoscope;·len:·262,·SHA:·0787947147a6579a8397d019cb97564d3de7c2b8bf03b7cade162fd8e6aa11c9·...·]-2">}</span><span·class="p">,</span><span·class="w">2678 ····</span><span·class="p"·data-group-id="8229838027-5">[</span><span·class="p"·data-group-id="8229838027-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">undefin[·...·truncated·by·diffoscope;·len:·262,·SHA:·baae09562a60ab1f59dfb1c250ecfb4f2a413b9fd1bc91f2c49db1144b591a82·...·]-2">}</span><span·class="p">,</span><span·class="w">
2679 ·</span><span·class="p"·data-group-id="8856698201-7">{</span><span·class="ss">my_app</span><span·class="p">,</span><span·class="w">2679 ·</span><span·class="p"·data-group-id="8229838027-7">{</span><span·class="ss">my_app</span><span·class="p">,</span><span·class="w">
2680 ··</span><span·class="p"·data-group-id="8856698201-8">[</span><span·class="p"·data-group-id="8856698201-9">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">2680 ··</span><span·class="p"·data-group-id="8229838027-8">[</span><span·class="p"·data-group-id="8229838027-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="8856698201-10">[</span><span·class="p"·data-group-id="8856698201-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_ha[·...·truncated·by·diffoscope;·len:·477,·SHA:·f5b4ec210fd302bf8ef69a4981b942f5f49cc3f89f8c14897d545116d70a6a70·...·]-1">]</span><span·class="p">.</span></code></pre>2682 ····</span><span·class="p"·data-group-id="8229838027-10">[</span><span·class="p"·data-group-id="8229838027-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_ha[·...·truncated·by·diffoscope;·len:·477,·SHA:·c18d527444df2dac6538f26f67336b4126b022818cc59c57b56a2d483a9fce75·...·]-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.3/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.3/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="4242772198-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="9823894782-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="4242772198-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="4242772198-2">}</span><span·class="p"·data-group-id="4242772198-1">)</span><span·class="p">.</span></code></pre>3581 »       ······</span><span·class="p"·data-group-id="9823894782-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="9823894782-2">}</span><span·class="p"·data-group-id="9823894782-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.3/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="3493066908-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="3493066908-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="8203150452-1">(</span><span·class="s">&quot;kernel/include/logger.hrl&quot;</span><span·class="p"·data-group-id="8203150452-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="1193013616-1">(</span><span·class="s">&quot;The·file·does·not·exist:·~ts&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1193013616-2">[</span><span·class="n">Filename</span><span·class="p"·data-group-id="1193013616-2">]</span><span·clas[·...·truncated·by·diffoscope;·len:·367,·SHA:·e389cd8a6d51182c47acaae1f02733cefbd75c90842883c04189186581df3d4b·...·]-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="6836323872-1">(</span><span·class="s">&quot;The·file·does·not·exist:·~ts&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="6836323872-2">[</span><span·class="n">Filename</span><span·class="p"·data-group-id="6836323872-2">]</span><span·clas[·...·truncated·by·diffoscope;·len:·367,·SHA:·614a729737922b72c65ea53179004292ac1aa85c6aa8570cb7655200326a8e63·...·]-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="4420940317-1">(</span><span·class="p"·data-group-id="4420940317-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:·34d6a4167fb78ce120716224234e13bd5783b110231b11d54a3d94702cb9930a·...·]-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="3514745613-1">(</span><span·class="p"·data-group-id="3514745613-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:·1e8a6e12f100bbbc198a0283944f9b3e1bccecaa410cf1620083526a8c933a2e·...·]-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="6347555545-1">(</span><span·class="p"·data-group-id="6347555545-2">(</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">report</span><span·class="p"·data-group-id="6347555545-3">(</span><span·class="p"·data-group-id="6347555545-3">)</span><span·class="p"·data-group-id="6347555545-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6347555545-4">{</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6347555545-5">(</span><span·class="p"·data-group-id="6347555545-5">)</span><span·class="p">,</span><span·class="p"·data-group-id="6347555545-6">[</span><span·class="nf">term</span><span·class="p"·data-group-id="6347555545-7">(</span><span·class="p"·data-group-id="6347555545-7">)</span><span·class="p"·data-group-id="6347555545-6">]</span><span·class="p"·data-group-id="6347555545-4">}</span><span·class="p"·data-group-id="6347555545-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="2480531776-1">(</span><span·class="p"·data-group-id="2480531776-2">(</span><span·c[·...·truncated·by·diffoscope;·len:·924,·SHA:·aabbc9d3aa2daa2d0d3445f98788da28260334b5fe916ecb9b31db52cffde69a·...·]224 arguments:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">fun</span><span·class="p"·data-group-id="3191570928-1">(</span><span·class="p"·data-group-id="3191570928-2">(</span><span·class="nc">logger</span><span·class="p">:</span><span·c[·...·truncated·by·diffoscope;·len:·958,·SHA:·7955bd7acd34f231b24dfd941f00fb8b4efcbce89064be7aa61174f8776591d9·...·]
 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="7746456781-1">(</span><span·class="p"·data-group-id="7746456781-2">(</span><span·class="nc">logger</span><span·class="p">:</span><span·class="nf">report</span><span·class="p"·data-group-id="7746456781-3">(</span><span·class="p"·data-group-id="7746456781-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="7746456781-4">(</span><span·class="p"·data-group-id="7746456781-4">)</span><span·class="p"·data-group-id="7746456781-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="7746456781-5">(</span><span·class="p"·data-group-id="7746456781-5">)</span><span·class="p"·data-group-id="7746456781-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="1400566189-1">(</span><span·class="p"·data-group-id="1400566189-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:·361,·SHA:·4d8a7e14f8908aa74f4c57604fea6716eb62372960c45d6ff50c295fd272d336·...·]-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="1767783677-1">(</span><span·class="p"·data-group-id="1767783677-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:·361,·SHA:·476937b42624f8fbd844a706b523392a24942b86a1e8fa7b7ce859e1627ac90d·...·]-2">}</span><span·class="p">,</span><span·class="w">
231 ·············</span><span·class="p"·data-group-id="1400566189-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="1400566189-4">(</span><span·class="n">R</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·596,·SHA:·234687b9517edfc76c424866c7294c7df202796bd6f40fc7b000756060d68da8·...·]-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="1767783677-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="1767783677-4">(</span><span·class="n">R</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·596,·SHA:·7ba2f1269c907ace11df12c28b13dd6c941109e4cee5976c1a3954442511068b·...·]-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="7471765400-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="7471765400-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="9598831658-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="9598831658-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="9133678869-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="9133678869-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="1689366029-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="1689366029-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="9849927939-1">(</span><span·class="n">FilterId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9849927939-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:·373178de029cd236b1942c745f28aba801cafe7d1541656d8162a3d27a294b90·...·]-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="7515932860-1">(</span><span·class="n">FilterId</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7515932860-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:·6ea6f0de214352e9740217b2bddeca171c7de306e4c7b2b615c40f4c3490332c·...·]-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="9059251582-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="9059251582-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="7669040562-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="7669040562-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.1/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="5579456628-1">[</span><span·class="p"·data-group-id="5579456628-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">449 <a·href="../../../../lib/stdlib-6.2.1/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="1615917837-1">[</span><span·class="p"·data-group-id="1615917837-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
450 ··</span><span·class="p"·data-group-id="5579456628-3">[</span><span·class="p"·data-group-id="5579456628-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">450 ··</span><span·class="p"·data-group-id="1615917837-3">[</span><span·class="p"·data-group-id="1615917837-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
451 ····</span><span·class="p"·data-group-id="5579456628-5">[</span><span·class="p"·data-group-id="5579456628-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="1615917837-5">[</span><span·class="p"·data-group-id="1615917837-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="1615917837-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="1615917837-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="1615917837-8">}</span><span·class="p"·data-group-id="1615917837-7">}</span><span·class="p"·data-group-id="1615917837-6">}</span><span·class="w">··</span><span·class="c1">%·Config}</span><span·class="w">
 453 ····</span><span·class="p"·data-group-id="1615917837-5">]</span><span·class="p"·data-group-id="1615917837-4">}</span><span·class="p"·data-group-id="1615917837-3">]</span><span·class="p"·data-group-id="1615917837-2">}</span><span·class="p"·data-group-id="1615917837-1">]</span><span·class="p">.</span></code></pre><p>Modify·the·default·handler·to·print·each·log·event·as·a·single·line:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="7683353082-1">[</span><span·class="p"·data-group-id="7683353082-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
452 ······</span><span·class="p"·data-group-id="5579456628-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="5579456628-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="5579456628-8">}</span><span·class="p"·data-group-id="5579456628-7">}</span><span·class="p"·data-group-id="5579456628-6">}</span><span·class="w">··</span><span·class="c1">%·Config}</span><span·class="w"> 
453 ····</span><span·class="p"·data-group-id="5579456628-5">]</span><span·class="p"·data-group-id="5579456628-4">}</span><span·class="p"·data-group-id="5579456628-3">]</span><span·class="p"·data-group-id="5579456628-2">}</span><span·class="p"·data-group-id="5579456628-1">]</span><span·class="p">.</span></code></pre><p>Modify·the·default·handler·to·print·each·log·event·as·a·single·line:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="2288724952-1">[</span><span·class="p"·data-group-id="2288724952-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w"> 
454 ··</span><span·class="p"·data-group-id="2288724952-3">[</span><span·class="p"·data-group-id="2288724952-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w"> 
455 ····</span><span·class="p"·data-group-id="2288724952-5">[</span><span·class="p"·data-group-id="2288724952-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="2288724952-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="2288724952-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2288724952-9">#{</span><span·class="ss">single_line</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="2288724952-9">}</span><span·class="p"·data-group-id="2288724952-8">}</span><span·class="p"·data-group-id="2288724952-7">}</span><span·class="p"·data-group-id="2288724952-6">}</span><span·class="w"> 
457 ····</span><span·class="p"·data-group-id="2288724952-5">]</span><span·class="p"·data-group-id="2288724952-4">}</span><span·class="p"·data-group-id="2288724952-3">]</span><span·class="p"·data-group-id="2288724952-2">}</span><span·class="p"·data-group-id="2288724952-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="5376068206-1">[</span><span·class="p"·data-group-id="5376068206-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w"> 
459 ··</span><span·class="p"·data-group-id="5376068206-3">[</span><span·class="p"·data-group-id="5376068206-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">454 ··</span><span·class="p"·data-group-id="7683353082-3">[</span><span·class="p"·data-group-id="7683353082-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
460 ····</span><span·class="p"·data-group-id="5376068206-5">[</span><span·class="p"·data-group-id="5376068206-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="7683353082-5">[</span><span·class="p"·data-group-id="7683353082-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="7683353082-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="7683353082-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7683353082-9">#{</span><span·class="ss">single_line</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="ss">true</span><span·class="p"·data-group-id="7683353082-9">}</span><span·class="p"·data-group-id="7683353082-8">}</span><span·class="p"·data-group-id="7683353082-7">}</span><span·class="p"·data-group-id="7683353082-6">}</span><span·class="w">
 457 ····</span><span·class="p"·data-group-id="7683353082-5">]</span><span·class="p"·data-group-id="7683353082-4">}</span><span·class="p"·data-group-id="7683353082-3">]</span><span·class="p"·data-group-id="7683353082-2">}</span><span·class="p"·data-group-id="7683353082-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="6132847832-1">[</span><span·class="p"·data-group-id="6132847832-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
 459 ··</span><span·class="p"·data-group-id="6132847832-3">[</span><span·class="p"·data-group-id="6132847832-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
 460 ····</span><span·class="p"·data-group-id="6132847832-5">[</span><span·class="p"·data-group-id="6132847832-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="5376068206-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="5376068206-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">461 ······</span><span·class="p"·data-group-id="6132847832-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="6132847832-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">
462 ························</span><span·class="p"·data-group-id="5376068206-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="5376068206-10">[</span><span·class="ss">time</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·494,·SHA:·97c77948063529f68f87d64dd2215490824e4659c66e7a74141ed3d525107ff0·...·]-6">}</span><span·class="w">462 ························</span><span·class="p"·data-group-id="6132847832-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="6132847832-10">[</span><span·class="ss">time</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·494,·SHA:·c803530d2ba93b39a2fe4e20c76e020fb7147310984486701d9b2f0cad303c64·...·]-6">}</span><span·class="w">
463 ····</span><span·class="p"·data-group-id="5376068206-5">]</span><span·class="p"·data-group-id="5376068206-4">}</span><span·class="p"·data-group-id="5376068206-3">]</span><span·class="p"·data-group-id="5376068206-2">}</span><span·class="p"·data-group-id="5376068206-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="6132847832-5">]</span><span·class="p"·data-group-id="6132847832-4">}</span><span·class="p"·data-group-id="6132847832-3">]</span><span·class="p"·data-group-id="6132847832-2">}</span><span·class="p"·data-group-id="6132847832-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="4920087693-1">[</span><span·class="p"·data-group-id="4920087693-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="9470010231-1">[</span><span·class="p"·data-group-id="9470010231-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
466 ··</span><span·class="p"·data-group-id="4920087693-3">[</span><span·class="p"·data-group-id="4920087693-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">466 ··</span><span·class="p"·data-group-id="9470010231-3">[</span><span·class="p"·data-group-id="9470010231-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
467 ····</span><span·class="p"·data-group-id="4920087693-5">[</span><span·class="p"·data-group-id="4920087693-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="9470010231-5">[</span><span·class="p"·data-group-id="9470010231-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="4920087693-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="9470010231-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="4920087693-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="4920087693-8">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·d759333e441b1c28229293f0320a828f8e075fa8918f4856f1b5c831eaea4cd3·...·]-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="9470010231-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="9470010231-8">}</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·67,·SHA:·aecc95551afbc1c32de91c0d7b6267aa5c8ba4df182f4e0730c51454db1cc3dd·...·]-6">}</span><span·class="p">,</span><span·class="w">
470 ·····</span><span·class="p"·data-group-id="4920087693-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="9470010231-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="4920087693-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="9470010231-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="4920087693-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="4920087693-11">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·8e8286b6ab63cff27c9102dc1c3efaaac005a9652528e9c8ecf679ea8448e7e2·...·]-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="9470010231-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="9470010231-11">}</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·69,·SHA:·4ed8b99c49583330bc028290d39985ee4aedc92526ceaebe248572fd92fc933c·...·]-9">}</span><span·class="w">
473 ····</span><span·class="p"·data-group-id="4920087693-5">]</span><span·class="p"·data-group-id="4920087693-4">}</span><span·class="p"·data-group-id="4920087693-3">]</span><span·class="p"·data-group-id="4920087693-2">}</span><span·class="p"·data-group-id="4920087693-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="9470010231-5">]</span><span·class="p"·data-group-id="9470010231-4">}</span><span·class="p"·data-group-id="9470010231-3">]</span><span·class="p"·data-group-id="9470010231-2">}</span><span·class="p"·data-group-id="9470010231-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="4145312360-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="9410323276-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">
Max diff block lines reached; 57976/103491 bytes (56.02%) of diff not shown.
94.2 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.3/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="0946744457-1">(</span><span·class="ss">primary</span><span·class="p"·data-group-id="0946744457-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="0185252775-1">(</span><span·class="ss">primary</span><span·class="p"·data-group-id="0185252775-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="0946744457-2">(</span><span·class="ss">none</span><span·class="p"·data-group-id="0946744457-2">)</span></code></pre><p>It·is·also·possible·to·fetch·the·configuration·using152 ········</span><span·class="p"·data-group-id="0185252775-2">(</span><span·class="ss">none</span><span·class="p"·data-group-id="0185252775-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="7606067406-1">(</span><span·class="ss">handlers</span><span·class="p"·data-group-id="7606067406-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="1558654858-1">(</span><span·class="ss">handlers</span><span·class="p"·data-group-id="1558654858-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="7606067406-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="7606067406-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">sasl</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·e1686332e4765dbbd306fab51cfb570bcadb891438a5b5fb31ee413d8842ebc4·...·]-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="1558654858-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="1558654858-3">[</span><span·class="ss">otp</span><span·class="p">,</span><span·class="ss">sasl</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·be270634dc80e83b6f4122af664685ec04f1a3202cdbed5ba59f7000e31a7ab3·...·]-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="7606067406-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="7606067406-5">[</span><span·class="p"·data-group-id="7606067406-5">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·3596b7a078ee564900c72c775e845226258f9353bbdae429a4b03e2b07a29fe8·...·]-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="1558654858-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="1558654858-5">[</span><span·class="p"·data-group-id="1558654858-5">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·3d2a666020838c70c145239936fe463a805cad0fcd05ad367c8f9f1743aeafa9·...·]-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="7241021718-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="7241021718-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="7774488140-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="7774488140-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="8761879716-1">[</span><span·class="p"·data-group-id="8761879716-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">236 </span><span·class="p"·data-group-id="1710234879-1">[</span><span·class="p"·data-group-id="1710234879-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
237 ··</span><span·class="p"·data-group-id="8761879716-3">[</span><span·class="p"·data-group-id="8761879716-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">237 ··</span><span·class="p"·data-group-id="1710234879-3">[</span><span·class="p"·data-group-id="1710234879-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
238 ····</span><span·class="p"·data-group-id="8761879716-5">[</span><span·class="p"·data-group-id="8761879716-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="1710234879-5">[</span><span·class="p"·data-group-id="1710234879-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="8761879716-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="8761879716-8">{</span><span·class="ss">logger_formatter</span><span·c[·...·truncated·by·diffoscope;·len:·584,·SHA:·d077be0efd0d1dcba01542a1765f9007a3335c98f42077f427265100c0469754·...·]-1">]</span><span·class="p">.</span><span·class="w">239 ······</span><span·class="p"·data-group-id="1710234879-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="1710234879-8">{</span><span·class="ss">logger_formatter</span><span·c[·...·truncated·by·diffoscope;·len:·584,·SHA:·46923551880c41260578f0b31f6dcf58c3a55a13467b1af3fae7f2cf3b7d8aa7·...·]-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="8761879716-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="8761879716-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="1710234879-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="1710234879-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="8761879716-11">(</span><span·class="s">&quot;Oh·noes,·an·error&quot;</span><span·class="p"·data-group-id="8761879716-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="1710234879-11">(</span><span·class="s">&quot;Oh·noes,·an·error&quot;</span><span·class="p"·data-group-id="1710234879-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="2908876014-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="2908876014-2">{</span><span·class="ss">logg[·...·truncated·by·diffoscope;·len:·268,·SHA:·a78d75694012484fad83cb6a42143fce85089688959be52d7a9be08a163d8bf6·...·]-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="6948295901-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="6948295901-2">{</span><span·class="ss">logg[·...·truncated·by·diffoscope;·len:·268,·SHA:·869abf9a1aff02a251ca9fcf4755ece9a05f95241aedda3d419db248ed1baff3·...·]-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="2908876014-4">(</span><span·class="s">&quot;Oh·noes,·another·error&quot;</span><span·class="p"·data-group-id="2908876014-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="6948295901-4">(</span><span·class="s">&quot;Oh·noes,·another·error&quot;</span><span·class="p"·data-group-id="6948295901-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="3941896803-1">[</span><span·class="p"·data-group-id="3941896803-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">254 </span><span·class="p"·data-group-id="2669247468-1">[</span><span·class="p"·data-group-id="2669247468-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
255 ··</span><span·class="p"·data-group-id="3941896803-3">[</span><span·class="p"·data-group-id="3941896803-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">255 ··</span><span·class="p"·data-group-id="2669247468-3">[</span><span·class="p"·data-group-id="2669247468-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
256 ····</span><span·class="p"·data-group-id="3941896803-5">[</span><span·class="p"·data-group-id="3941896803-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="2669247468-5">[</span><span·class="p"·data-group-id="2669247468-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="3941896803-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="3941896803-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">257 ······</span><span·class="p"·data-group-id="2669247468-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="2669247468-8">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">
258 ········</span><span·class="p"·data-group-id="3941896803-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="3941896803-10">[</span><span·class="ss">time</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1058,·SHA:·c1e9b08147d597e608fea515132726d08a1e0c3270260f1a469a2b16837e0985·...·]-1">]</span><span·class="p">.</span><span·class="w">258 ········</span><span·class="p"·data-group-id="2669247468-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="2669247468-10">[</span><span·class="ss">time</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·1058,·SHA:·1e5e3a50c88c50c2f9e8b7944219884ad57b3e358fa7dcc8988395bbc4fc8122·...·]-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="3941896803-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="3941896803-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="2669247468-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="2669247468-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="3941896803-12">(</span><span·class="s">&quot;Oh·noes,·more·errors&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="3941896803-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:·7b12b927a193d2e145eb4abbf8a4e59999498a93229d33759bf19cc82ec1d7c3·...·]-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="2669247468-12">(</span><span·class="s">&quot;Oh·noes,·more·errors&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="2669247468-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:·8bee2a911e26ac6ea89b133082493d5e3987a33b82942f7756408530afa650eb·...·]-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="9037001315-1">[</span><span·class="p"·data-group-id="9037001315-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">278 </span><span·class="p"·data-group-id="5918624988-1">[</span><span·class="p"·data-group-id="5918624988-2">{</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">
279 ··</span><span·class="p"·data-group-id="9037001315-3">[</span><span·class="p"·data-group-id="9037001315-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">279 ··</span><span·class="p"·data-group-id="5918624988-3">[</span><span·class="p"·data-group-id="5918624988-4">{</span><span·class="ss">logger</span><span·class="p">,</span><span·class="w">
280 ····</span><span·class="p"·data-group-id="9037001315-5">[</span><span·class="p"·data-group-id="9037001315-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="5918624988-5">[</span><span·class="p"·data-group-id="5918624988-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="9037001315-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="9037001315-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="5918624988-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="5918624988-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="9037001315-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="5918624988-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="9037001315-9">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9037001315-10">#{</span><span·class="p"·data-group-id="9037001315-10">}</span><span·class="p"·data-group-id="903700[·...·truncated·by·diffoscope;·len:·375,·SHA:·967ba008ee1bed4593b87f8edbb14753d68da11a47072934b64ea8ce25f9d43d·...·]-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="5918624988-9">{</span><span·class="ss">logger_formatter</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5918624988-10">#{</span><span·class="p"·data-group-id="5918624988-10">}</span><span·class="p"·data-group-id="591862[·...·truncated·by·diffoscope;·len:·375,·SHA:·325ad17f6064e47dab1ed7eb08c6c5fe417cb3a0145a4cb1e345ec109d3cdc8d·...·]-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="9037001315-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="9037001315-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="5918624988-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="5918624988-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="9037001315-12">(</span><span·class="s">&quot;Oh·noes,·even·more·errors&quot;</span><span·class="p"·data-group-id="9037001315-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="5918624988-12">(</span><span·class="s">&quot;Oh·noes,·even·more·errors&quot;</span><span·class="p"·data-group-id="5918624988-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="9037001315-13">(</span><span·class="p"·data-group-id="9037001315-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="5918624988-13">(</span><span·class="p"·data-group-id="5918624988-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.3/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="0727146278-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="5777969880-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="0727146278-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="0727146278-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="5777969880-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="5777969880-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="0727146278-3">}</span><span·class="p"·data-group-id="0727146278-2">}</span><span·class="p"·data-group-id="0727146278-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="5777969880-3">}</span><span·class="p"·data-group-id="5777969880-2">}</span><span·class="p"·data-group-id="5777969880-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.3/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="5088862440-1">[</span><span·class="ss">otp</span><span·class="p"·data-group-id="5088862440-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="7782744412-1">[</span><span·class="ss">otp</span><span·class="p"·data-group-id="7782744412-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="5088862440-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="5088862440-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="7782744412-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="7782744412-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="7010693310-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="7010693310-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="2218203867-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="2218203867-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="7010693310-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:·512,·SHA:·9b45656553d368845a0bea73e90ad3ae0ab991175cbdf601993d4759ef1502a2·...·]-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="2218203867-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:·512,·SHA:·289c5a96543bb74cccd5497b93604b0064368c26054b3b464849d97963af9215·...·]-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="7010693310-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="7010693310-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="2218203867-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="2218203867-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="2394356113-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="2394356113-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="5467256389-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="5467256389-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="2394356113-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:·1c0fe901305c3507172f6529cfdc4947cba43d97d6f0050ab393ee3fd1f190b5·...·]-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="5467256389-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:·d9d5c7af7cef0ed449f4ab24b5b39410031ab9506ee447ea6791023974cae4de·...·]-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="2394356113-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="2394356113-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="5467256389-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="5467256389-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.3/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="4364621330-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="9994584196-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="4364621330-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="4364621330-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="9994584196-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="9994584196-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="4364621330-3">}</span><span·class="p"·data-group-id="4364621330-2">}</span><span·class="p"·data-group-id="4364621330-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="9994584196-3">}</span><span·class="p"·data-group-id="9994584196-2">}</span><span·class="p"·data-group-id="9994584196-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.1/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.1/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.3/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.3/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.3/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.3/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.3/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="5221238863-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="6816861300-1">(</span><span·class="w">
558 ····</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5221238863-2">(</span><span·class="p"·data-group-id="5221238863-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="5221238863-4">#{</span>[·...·truncated·by·diffoscope;·len:·172,·SHA:·c7320623bbc69dbd33385c30745dc7f9cf9268d1a7c2fccb9a31b5d5948c0a17·...·]-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="6816861300-2">(</span><span·class="p"·data-group-id="6816861300-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="6816861300-4">#{</span>[·...·truncated·by·diffoscope;·len:·172,·SHA:·547e8da9968029f3a952cebe215e81b80ba49d3e78134a9e3eef3fed911b9095·...·]-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="5221238863-3">}</span><span·class="p"·data-group-id="5221238863-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="6816861300-3">}</span><span·class="p"·data-group-id="6816861300-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="5221238863-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="5221238863-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="6816861300-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="6816861300-5">)</span><span·class="p">;</span><span·class="w">
561 ········</span><span·class="p"·data-group-id="5221238863-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="5221238863-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">561 ········</span><span·class="p"·data-group-id="6816861300-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="6816861300-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="5221238863-1">)</span><span·class="p">.</span></code></pre>563 ····</span><span·class="k">end</span><span·class="p"·data-group-id="6816861300-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.3/doc/html/net_adm.html
    
Offset 475, 16 lines modifiedOffset 475, 16 lines modified
475 ···················Name·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>(),475 ···················Name·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>(),
476 ···················Port·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),476 ···················Port·::·<a·href="../../../../erts-15.2.3/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.3/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="4659951917-1">(</span><span·class="p"·data-group-id="4659951917-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.3/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="0365249238-1">(</span><span·class="p"·data-group-id="0365249238-1">)</span><span·class="p">.</span><span·class="w">
481 </span><span·class="p"·data-group-id="4659951917-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4659951917-3">[</span><span·class="p"·data-group-id="4659951917-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·260b542ff965ee8eceacbe61e94bbbe7ab2095b80112098ecf2c1bfc6ffd7c1b·...·]-2">}</span></code></pre>481 </span><span·class="p"·data-group-id="0365249238-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0365249238-3">[</span><span·class="p"·data-group-id="0365249238-4">{</span><span·class="s">&quot;arne&quot;</span><span·class="p">,</span><span·class="mi[·...·truncated·by·diffoscope;·len:·161,·SHA:·617d20e4c8c16347380a4b011373360df9f68bb962ba17696ff1c06767555cfd·...·]-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.3/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.3/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/4</code></a>·and131 implement·parts·of·the·BIFs·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#spawn/4"><code·class="inline">spawn/4</code></a>·and
132 <a·href="../../../../erts-15.2.3/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.3/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="5845700184-1">(</span><span·class="ss">foobar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5845700184-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:·fbe6d058a56b8b865552c0f45db1f4fb910ac6d42a04163bbbdccad4d188bc82·...·]-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="9371402161-1">(</span><span·class="ss">foobar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9371402161-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:·98b4dc3936ec77c850223c0530a66e485884641e37992297a92029359315fdce·...·]-1">)</span><span·class="p">.</span><span·class="w">
134 </span><span·class="p"·data-group-id="5845700184-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="5845700184-3">}</span><span·class="w">134 </span><span·class="p"·data-group-id="9371402161-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="9371402161-3">}</span><span·class="w">
135 </span><span·class="p"·data-group-id="5845700184-4">(</span><span·class="ss">foobar@gringotts</span><span·class="p"·data-group-id="5845700184-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="9371402161-4">(</span><span·class="ss">foobar@gringotts</span><span·class="p"·data-group-id="9371402161-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.3/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.3/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="7250789678-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="7250789678-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·197,·SHA:·4e4b8281e9486ff5ef141d7e366acc178eb566cd4cecd4a837a6ba83582c8c4d·...·]-2">}</span><span·class="w">653 follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8083551935-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="8083551935-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·197,·SHA:·310183050b04d108e84514ba7176fe8a89b560904d43f75b41af4b01204d037c·...·]-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="7250789678-3">(</span><span·class="p"·data-group-id="7250789678-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="8083551935-3">(</span><span·class="p"·data-group-id="8083551935-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.3/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.3/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="8030927372-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="8030927372-1">}</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·c8ca8a4540b9640571b533b2daf3b4f2aa7041f78f803be98ec80f4d5f51c37f·...·]-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="9849076390-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="9849076390-1">}</span><[·...·truncated·by·diffoscope;·len:·347,·SHA:·2d7f58ec2a84320acf2de791372af41b1454ce9581818acc604c7f416ccd255a·...·]-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="8030927372-3">(</span><span·class="p"·data-group-id="8030927372-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="9849076390-3">(</span><span·class="p"·data-group-id="9849076390-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="8030927372-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="8030927372-4">}</span><span·class="w">·</span><span·class="p">|</span><spa[·...·truncated·by·diffoscope;·len:·320,·SHA:·bddac8e82a41dbbea8f8dc65f4a32efed7ec7ee39b74de8075bff15dee4fbb83·...·]-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="9849076390-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="9849076390-4">}</span><span·class="w">·</span><span·class="p">|</span><spa[·...·truncated·by·diffoscope;·len:·320,·SHA:·c979aefe83a0f2c31a0b75689ada64f31800b124e7eda40a63b99d010302148b·...·]-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.3/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.3/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="2247432278-1">(</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2247432278-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:·79e7c8b2e0cd7c9d667136f8b0327ee28ab4ef98a69b065475b5a5af42d48d84·...·]-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="1194767439-1">(</span><span·class="ss">true</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1194767439-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:·fbd18c93bc7f6165920fa63042e18d93d20ea5c22897548c6f7fc46a8215c821·...·]-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="2247432278-3">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="2247432278-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="2247432278[·...·truncated·by·diffoscope;·len:·53,·SHA:·93b42258da19b41e29f710132039c4bbb12ff4e31f5c5cc8c27229ffe300f459·...·]-4">)</span><span·class="p">.</span><span·class="w">695 </span><span·class="p"·data-group-id="1194767439-3">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="1194767439-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="1194767439[·...·truncated·by·diffoscope;·len:·53,·SHA:·2f90e2971f1447a5cdf4a8a0f12f84e17323906ee27fcf3b6aef51c9a4e3a896·...·]-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="2247432278-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="1194767439-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="2247432278-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:·728dce8d857276b3544e61d41cceb153d723fc9719082eee1eb410fc7bbbe90e·...·]-5">}</span><span·class="w">697 ··················</span><span·class="p"·data-group-id="1194767439-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:·2854e3741d1c237c9fd85780ebf8cc29c364b789d415b0440589bfe2bd6767e0·...·]-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="2247432278-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="1194767439-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="2247432278-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:·82918736693a714fc97bd2ae9288ab8e2700b4ac8814c63d39f2c34a4465a3cb·...·]-7">}</span><span·class="w">699 ··················</span><span·class="p"·data-group-id="1194767439-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:·4cd3a18f08618bea33dcdb32b23281d8c4fb7c143f0f25a215aa7eaa59353e5a·...·]-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="2247432278-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="1194767439-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="2247432278-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="1194767439-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="2247432278-10">}</span><span·class="p"·data-group-id="2247432278-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="1194767439-10">}</span><span·class="p"·data-group-id="1194767439-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="2247432278-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="1194767439-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="2247432278-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="1194767439-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="2247432278-12">}</span><span·class="p"·data-group-id="2247432278-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="1194767439-12">}</span><span·class="p"·data-group-id="1194767439-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="2247432278-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="1194767439-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="2247432278-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:·3a3dcfd66622c1c438de235e31d3fb415c1fe98b9a0ce6d161dd831a488e7696·...·]-13">}</span><span·class="w">707 ··················</span><span·class="p"·data-group-id="1194767439-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:·2deefe1afe1f36411837e290e88325bfc5e0eb9785859c030b080566bf3691c2·...·]-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="2247432278-15">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="2247432278-15">)</span><span·class="mi">3</span><span·class="o">&gt;</span></code></pre>709 </span><span·class="p"·data-group-id="1194767439-15">(</span><span·class="ss">a@localhost</span><span·class="p"·data-group-id="1194767439-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.3/doc/html/notes.html
    
Offset 4073, 20 lines modifiedOffset 4073, 20 lines modified
4073 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.3/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·behaved4073 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.3/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·behaved
4074 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could4074 completely·asynchronous.·This·had·one·undesirable·effect,·though.·You·could
4075 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you4075 never·know·when·you·were·guaranteed·<em>not</em>·to·be·affected·by·a·link·that·you
4076 had·unlinked·or·a·monitor·that·you·had·demonitored.</p><p>The·new·behavior·of·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·can·be4076 had·unlinked·or·a·monitor·that·you·had·demonitored.</p><p>The·new·behavior·of·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#unlink/1"><code·class="inline">unlink/1</code></a>·and·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#demonitor/2"><code·class="inline">erlang:demonitor/2</code></a>·can·be
4077 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink4077 viewed·as·two·operations·performed·atomically.·Asynchronously·send·an·unlink
4078 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or4078 signal·or·a·demonitor·signal,·and·ignore·any·future·results·of·the·link·or
4079 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did4079 monitor.</p><p><em>NOTE</em>:·This·change·can·cause·some·obscure·code·to·fail·which·previously·did
4080 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="9627351161-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="9627351161-1">)</span><span·class="p">,</span><span·class="w">4080 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="1737657004-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="1737657004-1">)</span><span·class="p">,</span><span·class="w">
4081 ············</span><span·class="c1">%%·...</span><span·class="w">4081 ············</span><span·class="c1">%%·...</span><span·class="w">
4082 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="9627351161-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="9627351161-2">)</span><span·class="p">,</span><span·class="w">4082 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="1737657004-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="1737657004-2">)</span><span·class="p">,</span><span·class="w">
4083 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="9627351161-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="9627351161-3">)</span><span·class="p">,</span><span·class="w">4083 ············</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">demonitor</span><span·class="p"·data-group-id="1737657004-3">(</span><span·class="n">Mon</span><span·class="p"·data-group-id="1737657004-3">)</span><span·class="p">,</span><span·class="w">
4084 ············</span><span·class="k">receive</span><span·class="w">4084 ············</span><span·class="k">receive</span><span·class="w">
4085 ················</span><span·class="p"·data-group-id="9627351161-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:·c2c160cc10fd3ce2f2687d93c939568b5b81cb9b42ee520275b18e6e60f46583·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">4085 ················</span><span·class="p"·data-group-id="1737657004-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:·f12cfe5a44a3c2e413cde5c2cc55f2535cd3f0707555327ed731cf67a8aa82b1·...·]-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">ok</span><span·class="w">
4086 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">4086 ············</span><span·class="c1">%%·We·were·previously·guaranteed·to·get·a·down·message</span><span·class="w">
4087 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">4087 ············</span><span·class="c1">%%·(since·we·exited·the·process·ourself),·so·we·could</span><span·class="w">
4088 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">4088 ············</span><span·class="c1">%%·in·this·case·leave·out:</span><span·class="w">
4089 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">4089 ············</span><span·class="c1">%%·after·0·-&gt;·ok</span><span·class="w">
4090 ············</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·the4090 ············</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
4091 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,4091 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,
4092 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.3/doc/html/erlang.html#halt/1"><code·class="inline">erlang:halt/1</code></a>·does·not4092 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.3/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.3/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.3/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.3/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="4703532288-1">(</span><span·class="s">&quot;ls&quot;</span><span·class="p"·data-group-id="4703532288-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="8609343764-1">(</span><span·class="s">&quot;ls&quot;</span><span·class="p"·data-group-id="8609343764-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="4703532288-2">(</span><span·class="s">&quot;dir&quot;</span><span·class="p"·data-group-id="4703532288-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="8609343764-2">(</span><span·class="s">&quot;dir&quot;</span><span·class="p"·data-group-id="8609343764-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="8956142365-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="8956142365-2">#{</span><span·class="w">·</span><span·class="ss">max_size</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·192,·SHA:·efb858b98a0c272a4e386aab759eaeacab5f2c8f0d8ad61e3c761dec5b0e841f·...·]-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="3457482539-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="3457482539-2">#{</span><span·class="w">·</span><span·class="ss">max_size</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·192,·SHA:·aed907f7c237e003218b469f88fbd204e2881031b966b0a54afa9ecafe14db5b·...·]-1">)</span><span·class="p">.</span><span·class="w">
651 </span><span·class="p"·data-group-id="8956142365-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:·763,·SHA:·15ceed45ce412b232cae0f239cb5ee55295075c8df841f20dafa41072e8c4a25·...·]-3">]</span></code></pre></li></ul>651 </span><span·class="p"·data-group-id="3457482539-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:·763,·SHA:·843e15de5a2893bb1e4af8c24cedd096200a0f7fbdc53724f45aebad88313640·...·]-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="0313409258-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="0313409258-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:·10d740502e12d86cf08416841b70e96d0e20f06913ff1047cd79d827ffbc8fec·...·]-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="3017874626-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="3017874626-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:·eb5048c41409b51cc1d9e13b8bd9535a3fdca6298087bca676b59adb14c4b2c1·...·]-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.3/doc/html/time_correction.html#os-system-time">OS·system·time</a>1079 <p>Returns·the·current·<a·href="../../../../erts-15.2.3/doc/html/time_correction.html#os-system-time">OS·system·time</a>
1080 in·the·same·format·as·<a·href="../../../../erts-15.2.3/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.1/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.3/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.1/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.1/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.1/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="6868307621-1">(</span><span·class="ss">print_time</span><span·class="p"·data-group-id="6868307621-1">)</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="6470289483-1">(</span><span·class="ss">print_time</span><span·class="p"·data-group-id="6470289483-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="6868307621-2">(</span><span·class="p"·data-group-id="6868307621-3">[</span><span·class="ss">format_utc_timestamp</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6868307621-3">]</span><span·class="p"·data-group-id="68683[·...·truncated·by·diffoscope;·len:·5,·SHA:·8d4d8a343608be3cb18caf9034da8b1cd465b588867398032fcdf1d2a33753d8·...·]-2">)</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="6470289483-2">(</span><span·class="p"·data-group-id="6470289483-3">[</span><span·class="ss">format_utc_timestamp</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="6470289483-3">]</span><span·class="p"·data-group-id="64702[·...·truncated·by·diffoscope;·len:·5,·SHA:·866d002dec5efe45cc3c0c9fac80024f5053ed4a00a302652530ffc09062ea68·...·]-2">)</span><span·class="p">.</span><span·class="w">
1088 </span><span·class="nf">format_utc_timestamp</span><span·class="p"·data-group-id="6868307621-4">(</span><span·class="p"·data-group-id="6868307621-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="6470289483-4">(</span><span·class="p"·data-group-id="6470289483-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="6868307621-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="6868307621-5">}</span><span·class="w">·</span><span·class="o">=</span><span·clas[·...·truncated·by·diffoscope;·len:·191,·SHA:·eb50f46a738efed53cbe9040bc7045ed62dd31d472a0da83a687f98610f2adda·...·]-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="6470289483-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="6470289483-5">}</span><span·class="w">·</span><span·class="o">=</span><span·clas[·...·truncated·by·diffoscope;·len:·191,·SHA:·56a76e30507cf9b42933f32d4bdc9921ffc08e5499a89bd2be6346b5aa0fdb1d·...·]-6">)</span><span·class="p">,</span><span·class="w">
1090 ····</span><span·class="p"·data-group-id="6868307621-7">{</span><span·class="p"·data-group-id="6868307621-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="6868307621-8">}</span>[·...·truncated·by·diffoscope;·len:·304,·SHA:·d18982cbf01cf59a84c711d58e298ae567826ce3e065860dca6f526972b47e87·...·]-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">1090 ····</span><span·class="p"·data-group-id="6470289483-7">{</span><span·class="p"·data-group-id="6470289483-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="6470289483-8">}</span>[·...·truncated·by·diffoscope;·len:·304,·SHA:·55a338eafc6a4e91161029e9b06926e751e1e317c7a49f222522fa85f6c934be·...·]-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="6868307621-10">(</span><span·class="n">TS</span><span·class="p"·data-group-id="6868307621-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="6470289483-10">(</span><span·class="n">TS</span><span·class="p"·data-group-id="6470289483-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="6868307621-11">(</span><span·class="n">Month</span><span·class="p">,</span><span·class="p"·data-group-id="6868307621-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="6470289483-11">(</span><span·class="n">Month</span><span·class="p">,</span><span·class="p"·data-group-id="6470289483-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="6868307621-12">}</span><span·class="p"·data-group-id="6868307621-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="6470289483-12">}</span><span·class="p"·data-group-id="6470289483-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="6868307621-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="6470289483-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="6868307621-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><s[·...·truncated·by·diffoscope;·len:·1003,·SHA:·76b0b88fee330132b9677fbaea8920a8488559e128c8a84c59e74db30757a25a·...·]-1">)</span><span·class="p">.</span><span·class="w">1095 ····</span><span·class="p"·data-group-id="6470289483-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><s[·...·truncated·by·diffoscope;·len:·1003,·SHA:·60c5a6de6c461fadf6fc24553b501823773a805d8788b19695a3a3070bdaecd6·...·]-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.3/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.3/doc/html/erlang.html#t:atom/0">atom</a>())·->·{<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:reference/0">reference</a>(),·#{<a·href="#t:group/0">group</a>()·=>·[<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:atom/0">atom</a>())·->·{<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:reference/0">reference</a>(),·#{<a·href="#t:group/0">group</a>()·=>·[<a·href="../../../../erts-15.2.3/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="0334001095-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:·a51d8447050f10203b96637ebc0bacebbada17e7ba04d07e85a6e76395b86677·...·]-1">}</span></code></pre>840 subscriber:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="9017782314-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:·02157cadbbe6652c8b20e4a5d76a1970672164d2d42ae1fc63e8380c7f4fbe8d·...·]-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.3/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.3/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.3/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="1780265384-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="1780265384-1">}</span><span·[·...·truncated·by·diffoscope;·len:·277,·SHA:·6994684fb792b31e1113b9037b45d02d6dd652a55858890b6893736cbda04d32·...·]-2">)</span><span·class="p">,</span><span·class="w">1050 </span><span·class="p"·data-group-id="5190848139-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="5190848139-1">}</span><span·[·...·truncated·by·diffoscope;·len:·277,·SHA:·eb4ee95a32b8057d8f579b817a3b8383c3063a46bc850754362492a1504bd034·...·]-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="1780265384-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="1780265384-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·92d640102a005e23162e103788a3431d2bdb12c83193a6c25077eb2249c59b84·...·]-4">)</span><span·class="p">,</span><span·class="w">1052 </span><span·class="p"·data-group-id="5190848139-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="5190848139-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·608,·SHA:·dd5e3b93c87d792a42caca9b7101646e73435a904e5e77ae8a75d06d2590fddd·...·]-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.3/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="3690150759-1">(</span><span·class="p"·data-group-id="3690150759-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="1465922431-1">(</span><span·class="p"·data-group-id="1465922431-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="3690150759-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="3690150[·...·truncated·by·diffoscope;·len:·3,·SHA:·b967fb22d506bda1b4d8a878f46c85862f5d71bb7669ecc6b0fe65f5ad19f844·...·]-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="1465922431-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="1465922[·...·truncated·by·diffoscope;·len:·3,·SHA:·0a1f1256f9bac68e806442aa76455bb761af5414855efa23c1b3fd54477c0ba1·...·]-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="3690150759-3">(</span><span·class="p"·data-group-id="3690150759-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="1465922431-3">(</span><span·class="p"·data-group-id="1465922431-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="4293423843-1">(</span><span·class="ss">seqex</span><span·class="p"·data-group-id="4293423843-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="7615082946-1">(</span><span·class="ss">seqex</span><span·class="p"·data-group-id="7615082946-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="4293423843-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="4293423843-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="7615082946-2">(</span><span·class="ss">export_all</span><span·class="p"·data-group-id="7615082946-2">)</span><span·class="p">.</span><span·class="w">
  
292 </span><span·class="nf">loop</span><span·class="p"·data-group-id="4293423843-3">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4293423843-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="7615082946-3">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7615082946-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="4293423843-4">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="4293423843-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">294 ········</span><span·class="p"·data-group-id="7615082946-4">{</span><span·class="n">Port</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="7615082946-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="4293423843-5">(</span><span·class="ss">label</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="4293423843-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="7615082946-5">(</span><span·class="ss">label</span><span·class="p">,</span><span·class="mi">17</span><span·class="p"·data-group-id="7615082946-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="4293423843-6">(</span><span·class="ss">&#39;receive&#39;</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="4293423843-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="7615082946-6">(</span><span·class="ss">&#39;receive&#39;</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="7615082946-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="4293423843-7">(</span><span·class="ss">print</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="4293423843-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="7615082946-7">(</span><span·class="ss">print</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="7615082946-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="4293423843-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="4293423843-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="7615082946-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="7615082946-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="4293423843-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4293423843-10">(</span><span·class="p"·data-group-id="4293423843-10">)</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="42934238[·...·truncated·by·diffoscope;·len:·2,·SHA:·44cb730c420480a0477b505ae68af508fb90f96cf0ec54c6ad16949dd427f13a·...·]-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="7615082946-9">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7615082946-10">(</span><span·class="p"·data-group-id="7615082946-10">)</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="76150829[·...·truncated·by·diffoscope;·len:·2,·SHA:·25fc0e7096fc653718202dc30b0c580b8ab87eac11a700cba03a7c021bc35b0c·...·]-9">}</span><span·class="p">;</span><span·class="w">
300 ········</span><span·class="p"·data-group-id="4293423843-11">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="4293423843-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">300 ········</span><span·class="p"·data-group-id="7615082946-11">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="7615082946-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="4293423843-12">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4293423843-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:·192,·SHA:·97d7873cd8b6a4622d3463069bf52ac02c87309b6d28f91852cd19dfeb9cf106·...·]-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="7615082946-12">(</span><span·class="n">Port</span><span·class="p"·data-group-id="7615082946-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:·192,·SHA:·ffce3e5d60375e4847ec0e82eefe4a64a4c1054ada605c2804c8e98d9a6d29cf·...·]-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="8788864896-2">{</span><span·class="n">PortController</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="8788864896-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">305 ········</span><span·class="p"·data-group-id="2475720244-2">{</span><span·class="n">PortController</span><span·class="p">,</span><span·class="n">Message</span><span·class="p"·data-group-id="2475720244-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="8788864896-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="8788864896-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="2475720244-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="2475720244-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="8788864896-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="8788864896-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="2475720244-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="2475720244-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="8788864896-5">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="8788864896-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="2475720244-5">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="n">Ack</span><span·class="p"·data-group-id="2475720244-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="8788864896-6">(</span><span·class="p"·data-group-id="8788864896-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:·434,·SHA:·96144b05f52df330ceba567499cb671bbdf26b07d8f8595c0b38adc6f1c5995a·...·]-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="2475720244-6">(</span><span·class="p"·data-group-id="2475720244-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:·434,·SHA:·70be2c8da37e83ce28ec8cbf4e03e1dea89f6d83c825570ac9f6301836713b42·...·]-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="7733565266-2">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7733565266-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="5268637481-2">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5268637481-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="7733565266-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="7733565266-3">}</span><span·class="w">313 </span><span·class="p"·data-group-id="5268637481-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="5268637481-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="7733565266-4">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7733565266-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="5268637481-4">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="5268637481-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="7733565266-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="7733565266-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="5268637481-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="5268637481-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="7733565266-6">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="p"·data-group-id="7733565266-7">{</span><span·class="ss">received</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="77335652[·...·truncated·by·diffoscope;·len:·55,·SHA:·54c1141576635c8b90348d3ce56ef375905c46b33b6c8fe60591d92766ad08f6·...·]-6">}</span></code></pre><p>The·implementation·of·a·system·tracer·process·that·produces·this·printout·can317 </span><span·class="p"·data-group-id="5268637481-6">{</span><span·class="ss">ack</span><span·class="p">,</span><span·class="p"·data-group-id="5268637481-7">{</span><span·class="ss">received</span><span·class="p">,</span><span·class="ss">the_message</span><span·class="p"·data-group-id="52686374[·...·truncated·by·diffoscope;·len:·55,·SHA:·32e08310ba3a9af627919e0bb335fd656fb4fc7df055fca9174bc97d2ee9c90f·...·]-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="6322559948-1">(</span><span·class="p"·data-group-id="6322559948-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="9373648309-1">(</span><span·class="p"·data-group-id="9373648309-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="6322559948-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="6322559948-2">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">320 ········</span><span·class="p"·data-group-id="9373648309-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="9373648309-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="6322559948-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="6322559948-3">)</span><span·class="p">;</span><span·class="w">321 ···········</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="9373648309-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="9373648309-3">)</span><span·class="p">;</span><span·class="w">
322 ········</span><span·class="p"·data-group-id="6322559948-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="6322559948-4">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">322 ········</span><span·class="p"·data-group-id="9373648309-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="9373648309-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="6322559948-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="6322559948-5">)</span><span·class="p">;</span><span·class="w">323 ···········</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="9373648309-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="9373648309-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="6322559948-6">(</span><span·class="p"·data-group-id="6322559948-6">)</span><span·class="p">.</span><span·class="w">326 ····</span><span·class="nf">tracer</span><span·class="p"·data-group-id="9373648309-6">(</span><span·class="p"·data-group-id="9373648309-6">)</span><span·class="p">.</span><span·class="w">
  
327 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="6322559948-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="6322559948-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="9373648309-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="9373648309-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="6322559948-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="6322559948-9">[</span><span·class="n">Label</span><span·class="p"·data-group-id="6322559948-9"[·...·truncated·by·diffoscope;·len:·50,·SHA:·f0b2bcdd20f62f7dde756f653092ac8add183d6830fb7d0e645402b5f3e26456·...·]-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="9373648309-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="9373648309-9">[</span><span·class="n">Label</span><span·class="p"·data-group-id="9373648309-9"[·...·truncated·by·diffoscope;·len:·50,·SHA:·f030b2531ccc878f4f7a0e0a86482f074d922b8526e7fa79107b7bc7be97f1b1·...·]-8">)</span><span·class="p">,</span><span·class="w">
329 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="6322559948-10">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="6322559948-10">)</span><span·class="p">;</span><span·class="w">329 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="9373648309-10">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="9373648309-10">)</span><span·class="p">;</span><span·class="w">
330 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="6322559948-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="6322559948-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="9373648309-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="9373648309-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="6322559948-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="6322559948-13">[</span><span·class="n">Labe[·...·truncated·by·diffoscope;·len:·152,·SHA:·602cd0d40eb08c1b8780ecf658ae4fd75a97f06690e79bff6e7a66ed38b6ddc5·...·]-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="9373648309-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="9373648309-13">[</span><span·class="n">Labe[·...·truncated·by·diffoscope;·len:·152,·SHA:·db452ee11e3e383cc2843fc5073ea46990b0cb1e937cdda0b4c7376bac82237b·...·]-12">)</span><span·class="p">,</span><span·class="w">
332 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="6322559948-14">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="6322559948-14">)</span><span·class="p">.</span><span·class="w">332 ····</span><span·class="nf">print_trace</span><span·class="p"·data-group-id="9373648309-14">(</span><span·class="n">TraceInfo</span><span·class="p"·data-group-id="9373648309-14">)</span><span·class="p">.</span><span·class="w">
  
333 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="6322559948-15">(</span><span·class="p"·data-group-id="6322559948-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:·62f8136b54dd03e0aa3f31c8f0a9c2df3bb45862b6e85a923884408acf99eb01·...·]-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="9373648309-15">(</span><span·class="p"·data-group-id="9373648309-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:·3f0b419e53714aeb40ce2bbdd12855a17ab09813b5a83dcc38766f2bb68cfec0·...·]-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="6322559948-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:·2df8e9bcebaf0c3b2977b037c22820d164de3248184d2f0f245b64953b3f6676·...·]-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="9373648309-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:·ed069d0c6cdd9468e49dd1bc922a544aa644c41f5f7ec85bf802e26b34d836c1·...·]-17">)</span><span·class="p">;</span><span·class="w">
335 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="6322559948-19">(</span><span·class="p"·data-group-id="6322559948-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:·9a87719f4f07d6c5d1fd58c60cd47cd446c773fd899f4264f46d79e68be17e05·...·]-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="9373648309-19">(</span><span·class="p"·data-group-id="9373648309-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:·268034e6c2ce1ea590dcf90e46996fa1113ca4c0ddce9f6201408d04f6de86f6·...·]-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="6322559948-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="9373648309-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="6322559948-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="6322559948-22">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·2332a291ea7550723546fb508e746899799611cdd8931be3f04909c2e995211c·...·]-21">)</span><span·class="p">;</span><span·class="w">337 ··············</span><span·class="p"·data-group-id="9373648309-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="9373648309-22">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·d7efc7cb9258f91ac96e46ddcb077bab29e88073fbbe1d66560b476e862f451c·...·]-21">)</span><span·class="p">;</span><span·class="w">
338 </span><span·class="nf">print_trace</span><span·class="p"·data-group-id="6322559948-23">(</span><span·class="p"·data-group-id="6322559948-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:·3360d2cf02f779d61150b8455caa0081c1db08cef52d5b7a649525b973a850df·...·]-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="9373648309-23">(</span><span·class="p"·data-group-id="9373648309-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:·2c1eefdfc8b5f87ef0bd98bfba7047796b95b4bafdec2f591e06d90bced0aa8f·...·]-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="6322559948-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="9373648309-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="6322559948-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="6322559948-26">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·2332a291ea7550723546fb508e746899799611cdd8931be3f04909c2e995211c·...·]-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="9373648309-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="9373648309-26">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·d7efc7cb9258f91ac96e46ddcb077bab29e88073fbbe1d66560b476e862f451c·...·]-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="2248576015-1">(</span><span·class="p"·data-group-id="2248576015-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="4592354026-1">(</span><span·class="p"·data-group-id="4592354026-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="2248576015-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="2248576015-3">[</span><span·class="p"·data-group-id="2248576015-3">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·8705b800d94928baaeaef2e115d7acfbfccf81127d1a11932665fba48b81bf83·...·]-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="4592354026-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="4592354026-3">[</span><span·class="p"·data-group-id="4592354026-3">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·3ef3f45c3589c66ff8d79e830176a0e3b83a0123883f877bfcf6fbe9f9c12edc·...·]-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="2248576015-4">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="2248576015-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="4592354026-4">(</span><span·class="n">Pid</span><span·class="p"·data-group-id="4592354026-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="9485437227-1">(</span><span·class="p"·data-group-id="9485437227-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="0855462032-1">(</span><span·class="p"·data-group-id="0855462032-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="9485437227-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="9485437227-3">[</span><spa[·...·truncated·by·diffoscope;·len:·118,·SHA:·daaad97c5e6845fc76cebb27473be92d5de772dae3f8e3fcd1672c57794a52c2·...·]-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="0855462032-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="0855462032-3">[</span><spa[·...·truncated·by·diffoscope;·len:·118,·SHA:·0eecc5f169b33452ac4261e0ba78f4b1846da8fae7f6d8611135becc43c01c25·...·]-2">)</span><span·class="p">,</span><span·class="w">
346 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="9485437227-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="9485437227-5">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">[·...·truncated·by·diffoscope;·len:·308,·SHA:·73163780b08fb4bdc70b77beb931cdfaaee66be5eff263575b28dc8b41c40dd2·...·]-4">)</span><span·class="p">,</span><span·class="w">346 ····</span><span·class="nf">register</span><span·class="p"·data-group-id="0855462032-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="0855462032-5">(</span><span·class="o">?</span><span·class="n">MODULE</span><span·class="p">[·...·truncated·by·diffoscope;·len:·308,·SHA:·c18fab0e7cd0c3e678795cc9782420282f5cbda87e5b30b6d5be7fada4f9341b·...·]-4">)</span><span·class="p">,</span><span·class="w">
347 ····</span><span·class="nf">start</span><span·class="p"·data-group-id="9485437227-7">(</span><span·class="p"·data-group-id="9485437227-7">)</span><span·class="p">,</span><span·class="w">347 ····</span><span·class="nf">start</span><span·class="p"·data-group-id="0855462032-7">(</span><span·class="p"·data-group-id="0855462032-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="9485437227-8">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="ss">message</span><span·class="p"·data-group-id="9485437227-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="0855462032-8">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="ss">message</span><span·class="p"·data-group-id="0855462032-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="8058133246-1">(</span><span·class="p"·data-group-id="8058133246-2">[</span><span·class="p"·data-group-id="8058133246-2">]</span><span·class="p"·data-group-id="8058133246-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="5379396887-1">(</span><span·class="p"·data-group-id="5379396887-2">[</span><span·class="p"·data-group-id="5379396887-2">]</span><span·class="p"·data-group-id="5379396887-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="8058133246-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="8058133246-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="5379396887-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="5379396887-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="8058133246-4">(</span><span·class="n">OldToken</span><span·class="p"·data-group-id="8058133246-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="5379396887-4">(</span><span·class="n">OldToken</span><span·class="p"·data-group-id="5379396887-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.3/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.3/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.3/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.3/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.3/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="9652216303-1">{</span><span·class="ss">select</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9652216303-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:·948c9a459cdbf32d371ba855549f507214c9b1b51ec0363776009383da365d8f·...·]-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="3590824532-1">{</span><span·class="ss">select</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3590824532-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:·39bfc82467bdd8284ef94d98e756a74ae4d98ad9d4a7da2394d21c79345c7a34·...·]-3">)</span><span·class="p">,</span><span·class="w">
176 ····</span><span·class="p"·data-group-id="9652216303-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="9652216303-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·280,·SHA:·abafe7c33b9a216cbecdec00fe303fc4bee4ca5ee43082092ea5b1cfa9b8f85d·...·]-5">)</span><span·class="p">,</span><span·class="w">176 ····</span><span·class="p"·data-group-id="3590824532-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="3590824532-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·280,·SHA:·da27ab6dc95f856de2a64835a9e1be8d898b942f4be90327466e9e999dd505d9·...·]-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="4915565353-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="4915565353-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="7647945383-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="7647945383-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
210 ···</span><span·class="p"·data-group-id="4915565353-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="4915565353-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·348,·SHA:·1764413200d413fc617214506d7b94211063853b71391c4fc37292917e98627a·...·]3-3">)</span><span·class="p">,</span><span·class="w">210 ···</span><span·class="p"·data-group-id="7647945383-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="7647945383-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·348,·SHA:·dab61d2a1ef65697d3be9bb281de786d2433f873f24216dac76ff75df975d1ac·...·]3-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="4915565353-4">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4915565353-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="7647945383-4">(</span><span·class="n">Sock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7647945383-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="4915565353-5">}</span><span·class="p"·data-group-id="4915565353-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="7647945383-5">}</span><span·class="p"·data-group-id="7647945383-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="4915565353-6">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="4915565353-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="4915565353-7">(</span><span·class="n">Sock</span><span·cla[·...·truncated·by·diffoscope;·len:·111,·SHA:·36fa24668e1d234a11bc7413bbb2e5bf3ee7901b56a054c3d151e8b54073577f·...·]</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="7647945383-6">&lt;&lt;</span><span·class="s">&quot;hello&quot;</span><span·class="p"·data-group-id="7647945383-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="7647945383-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="7647945383-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="4915565353-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="4915565353-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="7647945383-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="7647945383-8">)</span><span·class="p">,</span><span·class="w">
217 ···</span><span·class="p"·data-group-id="4915565353-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="4915565353-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·194,·SHA:·dcf3a35fa960ad9884a13af67cd68641541d85e42b5fa0fa1610487fc6c11d73·...·]3-10">)</span><span·class="p">,</span><span·class="w">217 ···</span><span·class="p"·data-group-id="7647945383-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="7647945383-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·194,·SHA:·2620a7f746ea0e7d3f80b317a9c4fdc9bf789628eec2a46100649c3f91492823·...·]3-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="4915565353-11">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="4915565353-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="7647945383-11">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7647945383-11">)</span><span·class="p">.</span><span·class="w">
  
219 </span><span·class="nf">server</span><span·class="p"·data-group-id="4915565353-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="4915565353-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="7647945383-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="7647945383-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
220 ···</span><span·class="p"·data-group-id="4915565353-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="4915565353-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·352,·SHA:·19bbc11bbd73792398676f7840136eb3f5fdc487a81ba1ef7bb33a1cca77ca92·...·]3-14">)</span><span·class="p">,</span><span·class="w">220 ···</span><span·class="p"·data-group-id="7647945383-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="7647945383-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·352,·SHA:·e827287a331c3a28ce691712ffc393529e8a99f780a572c3b2a88b7ac4dd2ead·...·]3-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="4915565353-15">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4915565353-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="7647945383-15">(</span><span·class="n">LSock</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7647945383-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="4915565353-16">}</span><span·class="p"·data-group-id="4915565353-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="7647945383-16">}</span><span·class="p"·data-group-id="7647945383-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="4915565353-17">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="4915565353-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="7647945383-17">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="7647945383-17">)</span><span·class="p">,</span><span·class="w">
225 ···</span><span·class="p"·data-group-id="4915565353-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="4915565353-18">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·200,·SHA:·93f522359cb29e4a57b0bc624aa488c4d1bc3b7b9618aa18416eeed3f6c17a4b·...·]3-19">)</span><span·class="p">,</span><span·class="w">225 ···</span><span·class="p"·data-group-id="7647945383-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="7647945383-18">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·200,·SHA:·427b9eb58806dff3347286a9b1d7b6e5bdb3fb969a98e481a748d7707c6db4c5·...·]3-19">)</span><span·class="p">,</span><span·class="w">
226 ···</span><span·class="p"·data-group-id="4915565353-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="4915565353-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·196,·SHA:·b8c61660c567fd44859d78db739f5fb853e1533ba82d8131de906ce4de1980bd·...·]3-21">)</span><span·class="p">,</span><span·class="w">226 ···</span><span·class="p"·data-group-id="7647945383-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="7647945383-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·196,·SHA:·5e4823fc25caeff23ede4f0c0a0cdeb983e25a3e97208453d2429ac32001e5ff·...·]3-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="4915565353-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="4915565353-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="7647945383-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="7647945383-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="4915565353-23">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="4915565353-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="7647945383-23">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="7647945383-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="4915565353-24">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="4915565353-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="7647945383-24">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="7647945383-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 4669, 15 lines modifiedOffset 4669, 15 lines modified
4669 with·its·name·and·address.</p></li><li><p><strong><code·class="inline">nread</code></strong>·-·Get·the·number·of·bytes·immediately·available·for·reading4669 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
4670 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.3/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·queue4670 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.3/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
4671 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.3/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·queue4671 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.3/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
4672 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.3/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·read4672 <em>(since·OTP·26.1)</em>.</p><p>Result;·the·number·of·bytes,·<a·href="../../../../erts-15.2.3/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
4673 <em>(since·OTP·26.1)</em>.</p><p>Result;·a·<a·href="../../../../erts-15.2.3/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·a4673 <em>(since·OTP·26.1)</em>.</p><p>Result;·a·<a·href="../../../../erts-15.2.3/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
4674 <em>connected</em>·socket·<em>(since·OTP·26.1)</em>.</p><p>Result;·a·<a·href="../../../../erts-15.2.3/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.4674 <em>connected</em>·socket·<em>(since·OTP·26.1)</em>.</p><p>Result;·a·<a·href="../../../../erts-15.2.3/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.
4675 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">4675 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">
4676 ······</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="5126846066-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="5126846066-1">)</span><span·class="p">,</span><span·class="w">4676 ······</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="3693743766-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="3693743766-1">)</span><span·class="p">,</span><span·class="w">
4677 ······</span><span·class="p">:</span></code></pre></section>4677 ······</span><span·class="p">:</span></code></pre></section>
4678 ··</section>4678 ··</section>
4679 </section>4679 </section>
4680 <section·class="detail"·id="ioctl/3">4680 <section·class="detail"·id="ioctl/3">
  
4681 ··<div·class="detail-header">4681 ··<div·class="detail-header">
4682 ····<a·href="#ioctl/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">4682 ····<a·href="#ioctl/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
Offset 4827, 15 lines modifiedOffset 4827, 15 lines modified
  
4827 ··········<pre·translate="no"><span·class="attribute">-spec</span>·is_supported(Key1·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:boolean/0">boolean</a>().</pre>4827 ··········<pre·translate="no"><span·class="attribute">-spec</span>·is_supported(Key1·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:boolean/0">boolean</a>().</pre>
  
4828 ······</div>4828 ······</div>
  
4829 <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>·tuple4829 <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
4830 or·a·<code·class="inline">{Key1,·list()}</code>·tuple·in·its·returned·list,4830 or·a·<code·class="inline">{Key1,·list()}</code>·tuple·in·its·returned·list,
4831 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="0450134634-1">(</span><span·class="ss">local</span><span·class="p"·data-group-id="0450134634-1">)</span><span·class="p">,</span></code></pre>4831 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="1392509377-1">(</span><span·class="ss">local</span><span·class="p"·data-group-id="1392509377-1">)</span><span·class="p">,</span></code></pre>
4832 ··</section>4832 ··</section>
4833 </section>4833 </section>
4834 <section·class="detail"·id="is_supported/2">4834 <section·class="detail"·id="is_supported/2">
  
4835 ··<div·class="detail-header">4835 ··<div·class="detail-header">
4836 ····<a·href="#is_supported/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">4836 ····<a·href="#is_supported/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
4837 ······<i·class="ri-link-m"·aria-hidden="true"></i>4837 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 4856, 15 lines modifiedOffset 4856, 15 lines modified
4856 ······<div·class="specs">4856 ······<div·class="specs">
  
4857 ··········<pre·translate="no"><span·class="attribute">-spec</span>·is_supported(Key1·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>(),·Key2·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:boolean/0">boolean</a>().</pre>4857 ··········<pre·translate="no"><span·class="attribute">-spec</span>·is_supported(Key1·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>(),·Key2·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>())·->·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:boolean/0">boolean</a>().</pre>
  
4858 ······</div>4858 ······</div>
  
4859 <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>·tuple4859 <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
4860 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="0365122465-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="0365122465-1">)</span><span·class="p">,</span></code></pre>4860 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="3575568477-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="3575568477-1">)</span><span·class="p">,</span></code></pre>
4861 ··</section>4861 ··</section>
4862 </section>4862 </section>
4863 <section·class="detail"·id="listen/1">4863 <section·class="detail"·id="listen/1">
  
4864 ··<div·class="detail-header">4864 ··<div·class="detail-header">
4865 ····<a·href="#listen/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">4865 ····<a·href="#listen/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
4866 ······<i·class="ri-link-m"·aria-hidden="true"></i>4866 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 4947, 15 lines modifiedOffset 4947, 15 lines modified
  
4947 ··········<pre·translate="no"><span·class="attribute">-spec</span>·monitor(Socket·::·<a·href="#t:socket/0">socket</a>())·->·MonitorRef·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:reference/0">reference</a>().</pre>4947 ··········<pre·translate="no"><span·class="attribute">-spec</span>·monitor(Socket·::·<a·href="#t:socket/0">socket</a>())·->·MonitorRef·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:reference/0">reference</a>().</pre>
  
4948 ······</div>4948 ······</div>
  
4949 <p>Start·a·socket·monitor.</p><p>If·the·<code·class="inline">Socket</code>·doesn't·exist·or·when·later·the·monitor·is·triggered,4949 <p>Start·a·socket·monitor.</p><p>If·the·<code·class="inline">Socket</code>·doesn't·exist·or·when·later·the·monitor·is·triggered,
4950 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>4950 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>
4951 with·the·following·pattern:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»       ····</span><span·class="p"·data-group-id="0549602567-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:·93c7fedddf63a2a90b4c5e4e6f99394cedfa5dcbae5f4ed493dd45486de7dda9·...·]-1">}</span></code></pre><p><code·class="inline">Info</code>·is·the·termination·reason·of·the·socket·or·<code·class="inline">nosock</code>·if4951 with·the·following·pattern:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">»       ····</span><span·class="p"·data-group-id="5422520133-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:·24a319dd6b5fa6a6c5136a3b256ef6a332ff6db8c1e2ad2969b1b5a056e92773·...·]-1">}</span></code></pre><p><code·class="inline">Info</code>·is·the·termination·reason·of·the·socket·or·<code·class="inline">nosock</code>·if
4952 <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·an4952 <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
4953 error;·each·call·creates·an·independent·monitor·instance.</p>4953 error;·each·call·creates·an·independent·monitor·instance.</p>
4954 ··</section>4954 ··</section>
4955 </section>4955 </section>
4956 <section·class="detail"·id="number_of/0">4956 <section·class="detail"·id="number_of/0">
  
4957 ··<div·class="detail-header">4957 ··<div·class="detail-header">
141 KB
./usr/share/doc/erlang-doc/html/lib/kernel-10.2.3/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="9452052431-1">(</span><span·class="ss">example</span><span·class="p"·data-group-id="9452052431-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="4974416773-1">(</span><span·class="ss">example</span><span·class="p"·data-group-id="4974416773-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="9452052431-2">(</span><span·class="p"·data-group-id="9452052431-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:·4143de6bff4a2be2b529020c6cf7c4fb947d85c4d5f5d68cdfe790ba73edb535·...·]-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="4974416773-2">(</span><span·class="p"·data-group-id="4974416773-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:·0353646696ae40c36c112bcb8b85f1b7aea2383cead145f28aa80417484de211·...·]-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="9452052431-4">(</span><span·class="p"·data-group-id="9452052431-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:·18b5972c6d65efecf1aa749419ec927714c74e4ac1a21f7e21d8d17cba7c6dca·...·]-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="4974416773-4">(</span><span·class="p"·data-group-id="4974416773-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:·34e671674ac43a48865276f164980f8250ea87b1a33d8218cc08d8745b7e1070·...·]-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="9452052431-6">(</span><span·class="p"·data-group-id="9452052431-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="9452052431-7">}</[·...·truncated·by·diffoscope;·len:·229,·SHA:·5920a1f79122cee5e1e55c69bc15566e07149662346f3c33999c97109f017298·...·]-6">)</span><span·class="w">195 </span><span·class="nf">client</span><span·class="p"·data-group-id="4974416773-6">(</span><span·class="p"·data-group-id="4974416773-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="4974416773-7">}</[·...·truncated·by·diffoscope;·len:·229,·SHA:·747d7780d43dd27ae4f6ac70991eaf7af7892f3478a1c8cf610f62d86af9784f·...·]-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="9452052431-8">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="9452052431-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="9452052431-9"[·...·truncated·by·diffoscope;·len:·76,·SHA:·70ef0d42eaeb06e9ff3ebef01e8c9399ce13ef483891bf211e1d4a431fde4fca·...·]-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="4974416773-8">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="4974416773-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="4974416773-9"[·...·truncated·by·diffoscope;·len:·76,·SHA:·e38ced324b44ba35b29e93b2315a7f4c55b421c01d42f6cbb7a1dda25b80650a·...·]-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
197 ····</span><span·class="p"·data-group-id="9452052431-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="9452052431-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·357,·SHA:·8aa87c4d796fd9ef8ab4483aa1334aca54aac7c57f08f87def3530ba05d5aab3·...·]-11">)</span><span·class="p">,</span><span·class="w">197 ····</span><span·class="p"·data-group-id="4974416773-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="4974416773-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·357,·SHA:·50577a4ea0f9178040731ddd8189d0f4e4639fc8215e3454b3473f8473b868f7·...·]-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="9452052431-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="9452052431-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="4974416773-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="4974416773-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="9452052431-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="9452052431-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="4974416773-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="4974416773-13">)</span><span·class="p">,</span><span·class="w">
200 ····</span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="9452052431-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="9452052431-14">)</span><span·class="p">;</span><span·class="w">200 ····</span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="4974416773-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="4974416773-14">)</span><span·class="p">;</span><span·class="w">
  
201 </span><span·class="nf">client</span><span·class="p"·data-group-id="9452052431-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="9452052431-15">)</span><span·class="w">201 </span><span·class="nf">client</span><span·class="p"·data-group-id="4974416773-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="4974416773-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="9452052431-16">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="9452052431-16">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="9452052431-17">(</span><span·class="[·...·truncated·by·diffoscope;·len:·161,·SHA:·6ef8dddacfdb7465752bf2f8f7445eeb7df534ab3a90b89c3a792edc1e9353c8·...·]-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="4974416773-16">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="4974416773-16">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="4974416773-17">(</span><span·class="[·...·truncated·by·diffoscope;·len:·161,·SHA:·6ad63298ccaab22d13b5703c91a91c59afb8a8a0f6b999465afe5d72a611b882·...·]-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="9452052431-18">(</span><span·class="n">Family</span><span·class="p"·data-group-id="9452052431-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="4974416773-18">(</span><span·class="n">Family</span><span·class="p"·data-group-id="4974416773-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="9452052431-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="4974416773-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="9452052431-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="4974416773-19">}</span><span·class="p">,</span><span·class="w">
208 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="9452052431-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="9452052431-20">)</span><span·class="p">.</span><span·class="w">208 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="4974416773-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="4974416773-20">)</span><span·class="p">.</span><span·class="w">
  
209 </span><span·class="nf">client</span><span·class="p"·data-group-id="9452052431-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="9452052431-21">)</span><span·class="w">209 </span><span·class="nf">client</span><span·class="p"·data-group-id="4974416773-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="4974416773-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="9452052431-22">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="9452052431-22">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="9452052431-23">(</span><span·class="[·...·truncated·by·diffoscope;·len:·161,·SHA:·6ef8dddacfdb7465752bf2f8f7445eeb7df534ab3a90b89c3a792edc1e9353c8·...·]-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="4974416773-22">(</span><span·class="n">ServerPort</span><span·class="p"·data-group-id="4974416773-22">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="4974416773-23">(</span><span·class="[·...·truncated·by·diffoscope;·len:·161,·SHA:·6ad63298ccaab22d13b5703c91a91c59afb8a8a0f6b999465afe5d72a611b882·...·]-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="9452052431-24">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="9452052431-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="4974416773-24">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="4974416773-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="9452052431-25">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="9452052431-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="4974416773-25">(</span><span·class="n">ServerAddr</span><span·class="p"·data-group-id="4974416773-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="9452052431-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="4974416773-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="9452052431-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="4974416773-26">}</span><span·class="p">,</span><span·class="w">
216 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="9452052431-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="9452052431-27">)</span><span·class="p">.</span><span·class="w">216 ····</span><span·class="nf">client</span><span·class="p"·data-group-id="4974416773-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="4974416773-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="9452052431-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="9452052431-28">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·149,·SHA:·45e11db4e02db37bc7805cfe9b03496d88341c42ee1138076aaf9148cfa6c44b·...·]-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="4974416773-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="4974416773-28">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·149,·SHA:·073d959bf540b33cec63aa1e8a2b1a2b6bfadb439bcaeb65f3c53b807723a3e0·...·]-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="9452052431-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="9452052431-31">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="945205243[·...·truncated·by·diffoscope;·len:·55,·SHA:·b035ae2c65d6d66860d7d09fab3c563739160ef37cb0307fc82f74bae948f3e5·...·]-30">)</span><span·class="p">;</span><span·class="w">219 ····</span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="4974416773-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="4974416773-31">(</span><span·class="n">Msg</span><span·class="p"·data-group-id="497441677[·...·truncated·by·diffoscope;·len:·55,·SHA:·75b2d1150ffc59304a894f1b5494d2a6ad91e65a3d6d1dc273a21f664e58aefc·...·]-30">)</span><span·class="p">;</span><span·class="w">
220 </span><span·class="nf">client_exchange</span><span·class="p"·data-group-id="9452052431-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="9452052431-32">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·151,·SHA:·6d8008f86bacdfe394008ef602dc07e2c8850a34362b806440bcab4041ad5e9c·...·]-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="4974416773-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="4974416773-32">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·151,·SHA:·824dacbe81b8c19dfe8221ace9c22a6e2557aaf6211b27ad59d5e97a90c24881·...·]-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="9452052431-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="9452052431-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="4974416773-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="4974416773-34">)</span><span·class="p">,</span><span·class="w">
222 ····</span><span·class="p"·data-group-id="9452052431-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="9452052431-35">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·492,·SHA:·4bf60bbc529db3357db80d68ab40a60b1f1eb659d4855e69c54179c8a7e74cf2·...·]-36">)</span><span·class="p">,</span><span·class="w">222 ····</span><span·class="p"·data-group-id="4974416773-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="4974416773-35">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·492,·SHA:·1967e8b36acbcad2d5b4b329131dac4e664acff8a3ad2ce6f697b8ba6ce4facc·...·]-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="9452052431-38">(</span><span·class="p"·data-group-id="9452052431-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="4974416773-38">(</span><span·class="p"·data-group-id="4974416773-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="9452052431-39">(</span><span·class="mi">0</span><span·class="p"·data-group-id="9452052431-39">)</span><span·class="p">.</span><span·class="w">228 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="4974416773-39">(</span><span·class="mi">0</span><span·class="p"·data-group-id="4974416773-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="9452052431-40">(</span><span·class="p"·data-group-id="9452052431-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:·cdbbd0eaf1df7bdc90e4615b9e2575824804ff0ef27fb948ef681b0c8a4ab7fd·...·]-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="4974416773-40">(</span><span·class="p"·data-group-id="4974416773-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:·2a68e472cba78962c7058719070cb89a8667c32e86a40a291866e6b56db9d504·...·]-40">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="p"·data-group-id="9452052431-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="9452052431-42">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·353,·SHA:·b5c1ecfb624e117fa253601189eb965e1a2aa0c7af916a011e87ec032b5d8039·...·]-43">)</span><span·class="p">,</span><span·class="w">232 ····</span><span·class="p"·data-group-id="4974416773-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="4974416773-42">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·353,·SHA:·051eb9b11104d93512a71ffddc733a27def55f90b5b0579ded77c5e1f5376a4e·...·]-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="9452052431-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="9452052431-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="4974416773-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="4974416773-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="9452052431-45">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="9452052431-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="4974416773-45">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="4974416773-45">)</span><span·class="p">,</span><span·class="w">
235 ····</span><span·class="p"·data-group-id="9452052431-46">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9452052431-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:·33047afae6bff3551ab15e1c1a770db5c01a9cdd55ae9564924f4e61035e013d·...·]-48">)</span><span·class="p">,</span><span·class="w">235 ····</span><span·class="p"·data-group-id="4974416773-46">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4974416773-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:·41c2f42807dac3b706f1d383a31e4b03c0379f2f725a804bee81b77fbd29a120·...·]-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="9452052431-49">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="9452052431-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="4974416773-49">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="4974416773-49">)</span><span·class="p">,</span><span·class="w">
237 ····</span><span·class="p"·data-group-id="9452052431-50">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9452052431-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:·c4b54a05f3c8b7cfab35d05d4533c6fe4c77b226898e469bbcc117eddd576ee7·...·]-50">}</span><span·class="p">;</span><span·class="w">237 ····</span><span·class="p"·data-group-id="4974416773-50">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4974416773-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:·95547916f6c0c2f01e08523b9a09c042081903c63d30b0f065457017a98483b6·...·]-50">}</span><span·class="p">;</span><span·class="w">
  
238 </span><span·class="nf">server</span><span·class="p"·data-group-id="9452052431-52">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9452052431-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="9452052431-5[·...·truncated·by·diffoscope;·len:·79,·SHA:·c16fa00f7356b9fb4daf12e2005e34464a8e37f07237ac5c2b3c6faec8c60011·...·]-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="4974416773-52">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4974416773-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="4974416773-5[·...·truncated·by·diffoscope;·len:·79,·SHA:·9da7c4d7506ab8c9478a46bb10c627ffc788233ee62b7fd14e4874a4bf4e571d·...·]-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="9452052431-54">(</span><span·class="n">Family</span><span·class="p"·data-group-id="9452052431-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="4974416773-54">(</span><span·class="n">Family</span><span·class="p"·data-group-id="4974416773-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="9452052431-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="4974416773-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="9452052431-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="4974416773-55">}</span><span·class="p">,</span><span·class="w">
244 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="9452052431-56">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="9452052431-56">)</span><span·class="p">.</span><span·class="w">244 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="4974416773-56">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="4974416773-56">)</span><span·class="p">.</span><span·class="w">
  
245 </span><span·class="nf">server</span><span·class="p"·data-group-id="9452052431-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="9452052431-57">)</span><span·class="w">245 </span><span·class="nf">server</span><span·class="p"·data-group-id="4974416773-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="4974416773-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="9452052431-58">(</span><span·class="n">Port</span><span·class="p"·data-group-id="9452052431-58">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="9452052431-59">(</span><span·class="n">Por[·...·truncated·by·diffoscope;·len:·150,·SHA:·de945d46ccbefca5d9638108d58c4a48698ceacb33f34c586f3bdb18eca66d7b·...·]-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="4974416773-58">(</span><span·class="n">Port</span><span·class="p"·data-group-id="4974416773-58">)</span><span·class="w">·</span><span·class="nf">andalso</span><span·class="w">·</span><span·class="p"·data-group-id="4974416773-59">(</span><span·class="n">Por[·...·truncated·by·diffoscope;·len:·150,·SHA:·58cd1dab0157e3a7347ca2989a10381c37bf4592e30c0b76491b5519995c57eb·...·]-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="9452052431-60">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="9452052431-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="4974416773-60">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="4974416773-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="9452052431-61">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="9452052431-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="4974416773-61">(</span><span·class="n">Addr</span><span·class="p"·data-group-id="4974416773-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="9452052431-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="4974416773-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="9452052431-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="4974416773-62">}</span><span·class="p">,</span><span·class="w">
252 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="9452052431-63">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="9452052431-63">)</span><span·class="p">.</span><span·class="w">252 ····</span><span·class="nf">server</span><span·class="p"·data-group-id="4974416773-63">(</span><span·class="n">SockAddr</span><span·class="p"·data-group-id="4974416773-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="9452052431-64">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="9452052431-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="4974416773-64">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="4974416773-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="9452052431-65">(</span><span·class="p"·data-group-id="9452052431-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="4974416773-65">(</span><span·class="p"·data-group-id="4974416773-65">)</span><span·class="p">,</span><span·class="w">
256 ····</span><span·class="p"·data-group-id="9452052431-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="9452052431-66">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·635,·SHA:·c1d03607fd1489fbe4e9b51e615c160deffba21b5785b743f06d71ba9646c03b·...·]-67">)</span><span·class="p">,</span><span·class="w">256 ····</span><span·class="p"·data-group-id="4974416773-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="4974416773-66">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·635,·SHA:·d629c57eb446c2ffc678e5cb4801225a5fe50cddeef8725f1ed4f409ec4053f1·...·]-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="9452052431-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:·0d98602bfaa01a1c377cf9dc15be4920aa664a7049d09102cd251e0a4d5a64c5·...·]-70">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">258 »       </span><span·class="p"·data-group-id="4974416773-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:·4edd41a4a9d85601933310be559df4e44aa626bd7e3f51a7ecb51a129d55bfab·...·]-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="9452052431-71">(</span><span·class="p"·data-group-id="9452052431-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="9452052431-72">}</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·b8197b9cf23d03ae7c1846cb371a9602951d99468a3d314d09eb25837872724a·...·]-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="4974416773-71">(</span><span·class="p"·data-group-id="4974416773-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="4974416773-72">}</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·9e0b763941f66f300c8ab26bf04b51c997f24df3b5c004d3aedb65f40e287f96·...·]-71">)</span><span·class="p">;</span><span·class="w">
260 »       </span><span·class="p"·data-group-id="9452052431-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="9452052431-73">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">260 »       </span><span·class="p"·data-group-id="4974416773-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="4974416773-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="9452052431-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:·b9c5be24effa5d0b17271fe64485cf9c380e0492d463d913735811ade4917c5c·...·]-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="4974416773-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:·70fff774b42bb6e80c132a64e28ef430f11c2885071d2de9bc0ae79f07ad82b4·...·]-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="9452052431-75">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9452052431-76">(</span><span·class="p"·data-group-id="9452052431-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:·b323c1135e205a349f325d85c17e626b209807faea67ef038d3e304a83ab0dc8·...·]-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="4974416773-75">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4974416773-76">(</span><span·class="p"·data-group-id="4974416773-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:·0fe6f31df93282fefbef32bf196c65aa313e3f61706b661b7090d37dec06f956·...·]-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="9452052431-77">(</span><span·class="n">MRef</span><span·class="p"·data-group-id="9452052431-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="4974416773-77">(</span><span·class="n">MRef</span><span·class="p"·data-group-id="4974416773-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="9452052431-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="9452052431-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="4974416773-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="4974416773-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="9452052431-79">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9452052431-80">(</span><span·class="p"·data-group-id="9452052431-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:·bdf8618a4b6cf499abb42951ec427eb392dbe8f095f05c8ba784d47c691de7b4·...·]-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="4974416773-79">{</span><span·class="nf">self</span><span·class="p"·data-group-id="4974416773-80">(</span><span·class="p"·data-group-id="4974416773-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:·a976472ca58701eccf96e7a7777fc7deee48b2d1f70c673c6f3358f564fdce50·...·]-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="9452052431-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="9452052431-81">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">271 »       </span><span·class="p"·data-group-id="4974416773-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="4974416773-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="9452052431-82">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="9452052431-82">)</span><span·class="p">.</span><span·class="w">274 ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="4974416773-82">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="4974416773-82">)</span><span·class="p">.</span><span·class="w">
  
275 </span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="9452052431-83">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="9452052431-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="4974416773-83">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="4974416773-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="9452052431-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="9452052431-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="4974416773-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="4974416773-84">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
277 »       </span><span·class="p"·data-group-id="9452052431-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="9452052431-85">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">277 »       </span><span·class="p"·data-group-id="4974416773-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="4974416773-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="9452052431-86">(</span><span·class="n">ASock</span><span·class="p"·data-group-id="9452052431-86">)</span><span·class="p">,</span><span·class="w">278 »       ····</span><span·class="nf">start_handler</span><span·class="p"·data-group-id="4974416773-86">(</span><span·class="n">ASock</span><span·class="p"·data-group-id="4974416773-86">)</span><span·class="p">,</span><span·class="w">
279 »       ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="9452052431-87">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="9452052431-87">)</span><span·class="p">;</span><span·class="w">279 »       ····</span><span·class="nf">acceptor_loop</span><span·class="p"·data-group-id="4974416773-87">(</span><span·class="n">LSock</span><span·class="p"·data-group-id="4974416773-87">)</span><span·class="p">;</span><span·class="w">
280 »       </span><span·class="p"·data-group-id="9452052431-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="9452052431-88">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">280 »       </span><span·class="p"·data-group-id="4974416773-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="4974416773-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="9452052431-89">(</span><span·class="p"·data-group-id="9452052431-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="9452052431-90">}</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·b6388adbe549e3b678856af595f9358687084950b62fbe555191510f91aa2475·...·]-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="4974416773-89">(</span><span·class="p"·data-group-id="4974416773-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="4974416773-90">}</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·51520772b79e83ddb2773ff86f92b91895df87356315fa7bf6633e017f6893e8·...·]-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="9452052431-91">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="9452052431-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="4974416773-91">(</span><span·class="n">Sock</span><span·class="p"·data-group-id="4974416773-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="9452052431-92">(</span><span·class="p"·data-group-id="9452052431-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="4974416773-92">(</span><span·class="p"·data-group-id="4974416773-92">)</span><span·class="p">,</span><span·class="w">
286 ····</span><span·class="p"·data-group-id="9452052431-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="9452052431-93">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·633,·SHA:·dca37711aa8836dce6f76aabf59872202f93296c888e9dd9ab9804e7c339d778·...·]-94">)</span><span·class="p">,</span><span·class="w">286 ····</span><span·class="p"·data-group-id="4974416773-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="4974416773-93">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·633,·SHA:·98a1532ab6a10566f483f0a0f04b0402ea78e561b2f14eba5218501adc6fce95·...·]-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.3/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="0212677897-1">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="0212677897-2">(</span><span·class="p"·data-group-id="0212677897-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·945,·SHA:·77027048f1c223f419059364dfd6947e2f21e3b7009dbe496cdd06c54a1755f8·...·]-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="9622395040-1">(</span><span·class="k">fun</span><span·class="w">·</span><span·class="n">F</span><span·class="p"·data-group-id="9622395040-2">(</span><span·class="p"·data-group-id="9622395040-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·945,·SHA:·e026543a16db6358e330c597ca513657b5de41da0a28824dbcd83b637ff66717·...·]-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="0212677897-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="0212677897-7">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·ebc65e5180148a339525195dc692ed23caae3f35e5b674747b71ba26c50500da·...·]-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="9622395040-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="9622395040-7">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·53c1ff92a3dd67b8d65e4a190747d589b1c0d574ee795ba5f29600419ea63635·...·]-6">)</span><span·class="p">.</span><span·class="w">
153 </span><span·class="p"·data-group-id="0212677897-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·[·...·truncated·by·diffoscope;·len:·248,·SHA:·dd4094df95cef7c54ce9d0d305820f7e0ffbbe71b9a2ef02ad2e5582cae719a6·...·]-8">}</span><span·class="w">153 </span><span·class="p"·data-group-id="9622395040-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·[·...·truncated·by·diffoscope;·len:·248,·SHA:·c41102c7a1769b4dcd25935f3ed38bb84d6c439ac863bdab7a297125f030c69d·...·]-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="0212677897-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="0212677897-11">(</span><span·class="p"·data-group-id="0212677897-11">)</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·282,·SHA:·d43736f49d7b6e6ad9c08993f7d9afb6c3e99096d7afa11f0eda58af0535d508·...·]-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="9622395040-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="9622395040-11">(</span><span·class="p"·data-group-id="9622395040-11">)</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·282,·SHA:·0702045ebc3f382882b5cb791e8f1baa8aea9603ec019f0a2e4b2865d322d6f3·...·]-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="0212677897-13">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0212677897-14">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">seq</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·435,·SHA:·7a7d7982ac3e6cd9a81665b8de008461e65a8870ed49fd516d78feda2e7c5c0e·...·]-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="9622395040-13">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9622395040-14">{</span><span·class="ss">lists</span><span·class="p">,</span><span·class="ss">seq</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·435,·SHA:·d94a76823bb6cbf3cba788a6366d8cef00b3de42a916f786956f30c6f25607aa·...·]-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="0212677897-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="0212677897-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="9622395040-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="9622395040-17">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="0212677897-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</sp[·...·truncated·by·diffoscope;·len:·463,·SHA:·44946ad575bf1748564ad78c6c5b4d8f24233d949203709696d322ba70c3f590·...·]-18">}</span><span·class="w">·</span><span·class="c1">%·The·trace·message</span><span·class="w">162 </span><span·class="p"·data-group-id="9622395040-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</sp[·...·truncated·by·diffoscope;·len:·463,·SHA:·b3dfa749d7fe20e3e99d9700ff8eb3ccf186754c5dc177a8fcd4f390c9834885·...·]-18">}</span><span·class="w">·</span><span·class="c1">%·The·trace·message</span><span·class="w">
163 </span><span·class="p"·data-group-id="0212677897-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:·275,·SHA:·07cfb364f0993258367e88b74efe9756203fce9d923926e435510c76887a725e·...·]-21">]</span><span·class="w">·</span><span·class="c1">%·The·return·value</span><span·class="w">163 </span><span·class="p"·data-group-id="9622395040-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:·275,·SHA:·6836cac18190dc6a41fcf66603281cec00f3c43e4e5d4e394cbab621ae058788·...·]-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="0212677897-22">(</span><span·class="n">Session</span><span·class="p"·data-group-id="0212677897-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="9622395040-22">(</span><span·class="n">Session</span><span·class="p"·data-group-id="9622395040-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.3/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.3/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.3/doc/html/match_spec.html">Match·Specifications·in·Erlang</a>·in·the·User's·Guide1288 <a·href="../../../../erts-15.2.3/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="4636012537-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4636012537-2">[</span><span·class="p"·data-group-id="4636012537-3">{</span><span·class="p"·data-group-id="4636012537-4">[</sp[·...·truncated·by·diffoscope;·len:·785,·SHA:·db824609e5e32e63dc12b879bd8210b915b597f7ee14c40140dbac52d5f122b6·...·]-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·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="7212925922-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7212925922-2">[</span><span·class="p"·data-group-id="7212925922-3">{</span><span·class="p"·data-group-id="7212925922-4">[</sp[·...·truncated·by·diffoscope;·len:·785,·SHA:·805baea5a8b64202dfc77760564f1449f14430240a371767b1ddc01f04d97a71·...·]-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="8173229117-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8173229117-2">[</span><span·class="p"·data-group-id="8173229117-3">{</span><span·class="p"·data-group-id="8173229117-4">[</sp[·...·truncated·by·diffoscope;·len:·953,·SHA:·812e678c6bdf01c1a37deeb504b76dc7ec7644f3c2934fe732bacd5333520d2f·...·]-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="2517844639-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2517844639-2">[</span><span·class="p"·data-group-id="2517844639-3">{</span><span·class="p"·data-group-id="2517844639-4">[</sp[·...·truncated·by·diffoscope;·len:·953,·SHA:·e243f3a686694f321e146403ea4220fceede9148c33d6956fbac1a6ec7674e13·...·]-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="1992093148-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1992093148-2">[</span><span·class="p"·data-group-id="1992093148-3">{</span><span·class="p"·data-group-id="1992093148-4">[</sp[·...·truncated·by·diffoscope;·len:·1180,·SHA:·47ee454f55e324d5f2ebef6a2c9cfef53d07e2f75c302b1c8ad3c5ef6137375e·...·]-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="0725949002-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0725949002-2">[</span><span·class="p"·data-group-id="0725949002-3">{</span><span·class="p"·data-group-id="0725949002-4">[</sp[·...·truncated·by·diffoscope;·len:·1180,·SHA:·03b34f9151e94b2d252f4c4749f1ccbf7f5f9ea6879089f4ed871e7e423ce812·...·]-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.3/doc/html/erl_cmd.html#sched_thread_stack_size">Scheduler·stack·size</a>·can·be·configured1299 <a·href="../../../../erts-15.2.3/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.3/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.3/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.3/doc/html/match_spec.html">Match·Specifications·in·Erlang</a>·in·the·User's·Guide1339 <a·href="../../../../erts-15.2.3/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="2493133632-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2493133632-2">[</span><span·class="p"·data-group-id="2493133632-3">{</span><span·class="p"·data-group-id="2493133632-4">[</sp[·...·truncated·by·diffoscope;·len:·726,·SHA:·9865cf75da10397250ac971749ac0d26cb5a348b3fc617a270720f9ab56eb85e·...·]-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·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="3260116606-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3260116606-2">[</span><span·class="p"·data-group-id="3260116606-3">{</span><span·class="p"·data-group-id="3260116606-4">[</sp[·...·truncated·by·diffoscope;·len:·726,·SHA:·3b7fbeff67bc2fc3f6993a0bdd24dc4cd6cd00df64b3d13e0306407536dd0fe2·...·]-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="5795831052-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5795831052-2">[</span><span·class="p"·data-group-id="5795831052-3">{</span><span·class="p"·data-group-id="5795831052-4">[</sp[·...·truncated·by·diffoscope;·len:·894,·SHA:·c41553e1996907cf9f1f106f299dfcc44bec25e3e0c551c7bb663d3b833bd366·...·]-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="2131825673-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2131825673-2">[</span><span·class="p"·data-group-id="2131825673-3">{</span><span·class="p"·data-group-id="2131825673-4">[</sp[·...·truncated·by·diffoscope;·len:·894,·SHA:·ea0deeb19d117016874e64ec6fb3c86eb3fd7a1fd69957224ed4e440179c1855·...·]-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="3193153520-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3193153520-2">[</span><span·class="p"·data-group-id="3193153520-3">{</span><span·class="p"·data-group-id="3193153520-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="3193153520-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="3193153520-5">[</span><span·class="p"·data-group-id="3193153520-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="3193153520-7">{</span><span·class="ss">self</span><span·class="p"·data-group-id="3193153520-7">}</span><span·class="p"·data-group-id="3193153520-6">}</span><span·class="p"·data-group-id="3193153520-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="3193153520-8">[</span><span·class="p"·data-group-id="3193153520-8">]</span><span·class="p"·data-group-id="3193153520-3">}</span><span·class="p"·data-group-id="3193153520-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3193153520-9">[</span><span·class="p"·data-group-id="3193153520-9">]</span><span·class="p"·data-group-id="3193153520-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="2597683122-1">(</span><span·class="n">[·...·truncated·by·diffoscope;·len:·1474,·SHA:·6c98b414826ab023494a1e7b52f4a22912a47c778b8afd74711e3d3d73f4386c·...·]2-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="1317890142-1">(</span><span·clas[·...·truncated·by·diffoscope;·len:·1320,·SHA:·7879c8cde4b27086fb0d9cd6b292ade607e2c9922f0acf7868f7537b98c3c255·...·]2-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="7172743757-1">(</span><span·class="n">Session</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7172743757-2">[</span><span·class="p"·data-group-id="7172743757-3">{</span><span·class="p"·data-group-id="7172743757-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="7172743757-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="7172743757-5">[</span><span·class="p"·data-group-id="7172743757-6">{</span><span·class="ss">&#39;=/=&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="7172743757-7">{</span><span·class="nb">node</span><span·class="p">,</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="7172743757-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="7172743757-8">{</span><span·class="nb">node</span><span·class="p"·data-group-id="7172743757-8">}</span><span·class="p"·data-group-id="7172743757-6">}</span><span·class="p"·data-group-id="7172743757-5">]</span><span·class="p">,</span><span·class="p"·data-group-id="7172743757-9">[</span><span·class="p"·data-group-id="7172743757-9">]</span><span·class="p"·data-group-id="7172743757-3">}</span><span·class="p"·data-group-id="7172743757-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7172743757-10">[</span><span·class="p"·data-group-id="7172743757-10">]</span><span·class="p"·data-group-id="7172743757-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.3/doc/html/erl_cmd.html#sched_thread_stack_size">Scheduler·stack·size</a>·can·be·configured1350 <a·href="../../../../erts-15.2.3/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>
210 KB
./usr/share/doc/erlang-doc/html/lib/megaco-4.7/doc/html/megaco.epub
6.75 KB
zipinfo {}
    
Offset 1, 43 lines modifiedOffset 1, 43 lines modified
1 Zip·file·size:·181429·bytes,·number·of·entries:·411 Zip·file·size:·181429·bytes,·number·of·entries:·41
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:57·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:51·mimetype
3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Mar-18·07:57·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Mar-18·08:51·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····44230·bx·defN·25-Mar-18·07:57·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····44230·bx·defN·25-Mar-18·08:51·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····2559·bx·defN·25-Mar-18·07:57·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····2559·bx·defN·25-Mar-18·08:51·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx····80449·bx·defN·25-Mar-18·07:57·OEBPS/megaco_user.xhtml6 ?rw-r--r--··6.1·unx····80449·bx·defN·25-Mar-18·08:51·OEBPS/megaco_user.xhtml
7 ?rw-r--r--··6.1·unx····25501·bx·defN·25-Mar-18·07:57·OEBPS/megaco_udp.xhtml7 ?rw-r--r--··6.1·unx····25501·bx·defN·25-Mar-18·08:51·OEBPS/megaco_udp.xhtml
8 ?rw-r--r--··6.1·unx·····1925·bx·defN·25-Mar-18·07:57·OEBPS/megaco_transport_mechanisms.xhtml8 ?rw-r--r--··6.1·unx·····1925·bx·defN·25-Mar-18·08:51·OEBPS/megaco_transport_mechanisms.xhtml
9 ?rw-r--r--··6.1·unx·····9403·bx·defN·25-Mar-18·07:57·OEBPS/megaco_transport.xhtml9 ?rw-r--r--··6.1·unx·····9403·bx·defN·25-Mar-18·08:51·OEBPS/megaco_transport.xhtml
10 ?rw-r--r--··6.1·unx····24954·bx·defN·25-Mar-18·07:57·OEBPS/megaco_tcp.xhtml10 ?rw-r--r--··6.1·unx····24954·bx·defN·25-Mar-18·08:51·OEBPS/megaco_tcp.xhtml
11 ?rw-r--r--··6.1·unx····32870·bx·defN·25-Mar-18·07:57·OEBPS/megaco_sdp.xhtml11 ?rw-r--r--··6.1·unx····32870·bx·defN·25-Mar-18·08:51·OEBPS/megaco_sdp.xhtml
12 ?rw-r--r--··6.1·unx····15142·bx·defN·25-Mar-18·07:57·OEBPS/megaco_run.xhtml12 ?rw-r--r--··6.1·unx····15142·bx·defN·25-Mar-18·08:51·OEBPS/megaco_run.xhtml
13 ?rw-r--r--··6.1·unx·····9263·bx·defN·25-Mar-18·07:57·OEBPS/megaco_performance.xhtml13 ?rw-r--r--··6.1·unx·····9263·bx·defN·25-Mar-18·08:51·OEBPS/megaco_performance.xhtml
14 ?rw-r--r--··6.1·unx·····2423·bx·defN·25-Mar-18·07:57·OEBPS/megaco_mib.xhtml14 ?rw-r--r--··6.1·unx·····2423·bx·defN·25-Mar-18·08:51·OEBPS/megaco_mib.xhtml
15 ?rw-r--r--··6.1·unx·····4317·bx·defN·25-Mar-18·07:57·OEBPS/megaco_intro.xhtml15 ?rw-r--r--··6.1·unx·····4317·bx·defN·25-Mar-18·08:51·OEBPS/megaco_intro.xhtml
16 ?rw-r--r--··6.1·unx····10921·bx·defN·25-Mar-18·07:57·OEBPS/megaco_flex_scanner.xhtml16 ?rw-r--r--··6.1·unx····10921·bx·defN·25-Mar-18·08:51·OEBPS/megaco_flex_scanner.xhtml
17 ?rw-r--r--··6.1·unx·····5756·bx·defN·25-Mar-18·07:57·OEBPS/megaco_examples.xhtml17 ?rw-r--r--··6.1·unx·····5756·bx·defN·25-Mar-18·08:51·OEBPS/megaco_examples.xhtml
18 ?rw-r--r--··6.1·unx····43295·bx·defN·25-Mar-18·07:57·OEBPS/megaco_encoder.xhtml18 ?rw-r--r--··6.1·unx····43295·bx·defN·25-Mar-18·08:51·OEBPS/megaco_encoder.xhtml
19 ?rw-r--r--··6.1·unx····24555·bx·defN·25-Mar-18·07:57·OEBPS/megaco_encode.xhtml19 ?rw-r--r--··6.1·unx····24555·bx·defN·25-Mar-18·08:51·OEBPS/megaco_encode.xhtml
20 ?rw-r--r--··6.1·unx·····5285·bx·defN·25-Mar-18·07:57·OEBPS/megaco_edist_compress.xhtml20 ?rw-r--r--··6.1·unx·····5285·bx·defN·25-Mar-18·08:51·OEBPS/megaco_edist_compress.xhtml
21 ?rw-r--r--··6.1·unx····10367·bx·defN·25-Mar-18·07:57·OEBPS/megaco_digit_map.xhtml21 ?rw-r--r--··6.1·unx····10367·bx·defN·25-Mar-18·08:51·OEBPS/megaco_digit_map.xhtml
22 ?rw-r--r--··6.1·unx····12841·bx·defN·25-Mar-18·07:57·OEBPS/megaco_debug.xhtml22 ?rw-r--r--··6.1·unx····12841·bx·defN·25-Mar-18·08:51·OEBPS/megaco_debug.xhtml
23 ?rw-r--r--··6.1·unx·····3922·bx·defN·25-Mar-18·07:57·OEBPS/megaco_codec_transform.xhtml23 ?rw-r--r--··6.1·unx·····3922·bx·defN·25-Mar-18·08:51·OEBPS/megaco_codec_transform.xhtml
24 ?rw-r--r--··6.1·unx·····3952·bx·defN·25-Mar-18·07:57·OEBPS/megaco_codec_mstone2.xhtml24 ?rw-r--r--··6.1·unx·····3952·bx·defN·25-Mar-18·08:51·OEBPS/megaco_codec_mstone2.xhtml
25 ?rw-r--r--··6.1·unx····17310·bx·defN·25-Mar-18·07:57·OEBPS/megaco_codec_mstone1.xhtml25 ?rw-r--r--··6.1·unx····17310·bx·defN·25-Mar-18·08:51·OEBPS/megaco_codec_mstone1.xhtml
26 ?rw-r--r--··6.1·unx·····3351·bx·defN·25-Mar-18·07:57·OEBPS/megaco_codec_meas.xhtml26 ?rw-r--r--··6.1·unx·····3351·bx·defN·25-Mar-18·08:51·OEBPS/megaco_codec_meas.xhtml
27 ?rw-r--r--··6.1·unx·····7628·bx·defN·25-Mar-18·07:57·OEBPS/megaco_architecture.xhtml27 ?rw-r--r--··6.1·unx·····7628·bx·defN·25-Mar-18·08:51·OEBPS/megaco_architecture.xhtml
28 ?rw-r--r--··6.1·unx···193217·bx·defN·25-Mar-18·07:57·OEBPS/megaco.xhtml28 ?rw-r--r--··6.1·unx···193217·bx·defN·25-Mar-18·08:51·OEBPS/megaco.xhtml
29 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-erlang-ESPT6BQV.css29 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-erlang-ESPT6BQV.css
30 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-LSJCIYTM.js30 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-LSJCIYTM.js
31 ?rw-r--r--··6.1·unx·····5776·bx·defN·25-Mar-18·07:57·OEBPS/content.opf31 ?rw-r--r--··6.1·unx·····5776·bx·defN·25-Mar-18·08:51·OEBPS/content.opf
32 ?rw-r--r--··6.1·unx·····3043·bx·stor·25-Mar-18·07:57·OEBPS/assets/single_node_config.gif32 ?rw-r--r--··6.1·unx·····3043·bx·stor·25-Mar-18·08:51·OEBPS/assets/single_node_config.gif
33 ?rw-r--r--··6.1·unx·····7270·bx·stor·25-Mar-18·07:57·OEBPS/assets/megaco_sys_arch.gif33 ?rw-r--r--··6.1·unx·····7270·bx·stor·25-Mar-18·08:51·OEBPS/assets/megaco_sys_arch.gif
34 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:57·OEBPS/assets/logo.png34 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:51·OEBPS/assets/logo.png
35 ?rw-r--r--··6.1·unx·····4992·bx·stor·25-Mar-18·07:57·OEBPS/assets/distr_node_config.gif35 ?rw-r--r--··6.1·unx·····4992·bx·stor·25-Mar-18·08:51·OEBPS/assets/distr_node_config.gif
36 ?rw-r--r--··6.1·unx·····4738·bx·stor·25-Mar-18·07:57·OEBPS/assets/call_flow_cont.gif36 ?rw-r--r--··6.1·unx·····4738·bx·stor·25-Mar-18·08:51·OEBPS/assets/call_flow_cont.gif
37 ?rw-r--r--··6.1·unx·····4673·bx·stor·25-Mar-18·07:57·OEBPS/assets/call_flow.gif37 ?rw-r--r--··6.1·unx·····4673·bx·stor·25-Mar-18·08:51·OEBPS/assets/call_flow.gif
38 ?rw-r--r--··6.1·unx·····4560·bx·stor·25-Mar-18·07:57·OEBPS/assets/MG_startup_call_flow.gif38 ?rw-r--r--··6.1·unx·····4560·bx·stor·25-Mar-18·08:51·OEBPS/assets/MG_startup_call_flow.gif
39 ?rw-r--r--··6.1·unx·····3317·bx·stor·25-Mar-18·07:57·OEBPS/assets/MGC_startup_call_flow.gif39 ?rw-r--r--··6.1·unx·····3317·bx·stor·25-Mar-18·08:51·OEBPS/assets/MGC_startup_call_flow.gif
40 ?rw-r--r--··6.1·unx·····5663·bx·stor·25-Mar-18·07:57·OEBPS/assets/MG-startup_flow_noMID.gif40 ?rw-r--r--··6.1·unx·····5663·bx·stor·25-Mar-18·08:51·OEBPS/assets/MG-startup_flow_noMID.gif
41 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:57·META-INF/container.xml41 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:51·META-INF/container.xml
42 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:57·META-INF/com.apple.ibooks.display-options.xml42 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:51·META-INF/com.apple.ibooks.display-options.xml
43 41·files,·661512·bytes·uncompressed,·173921·bytes·compressed:··73.7%43 41·files,·661512·bytes·uncompressed,·173921·bytes·compressed:··73.7%
149 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,·Mar·18·2025·07:57: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,·Mar·18·2025·08:51:28,·uncompressed·size·20,·method=store
9.69 KB
OEBPS/megaco_user.xhtml
    
Offset 22, 31 lines modifiedOffset 22, 31 lines modified
22 ····</h1>22 ····</h1>
  
  
23 ······<section·id="moduledoc"·class="docstring">23 ······<section·id="moduledoc"·class="docstring">
24 <p>Callback·module·for·users·of·the·Megaco·application</p><p>This·module·defines·the·callback·behaviour·of·Megaco·users.·A·megaco_user24 <p>Callback·module·for·users·of·the·Megaco·application</p><p>This·module·defines·the·callback·behaviour·of·Megaco·users.·A·megaco_user
25 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·argument25 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
26 list·of·the·callback·functions.·For·example,·the·handle_connect·function·takes26 list·of·the·callback·functions.·For·example,·the·handle_connect·function·takes
27 by·default·two·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">handle_connect</samp><samp·class="p"·data-group-id="1880242617-1">(</samp><samp·class="n">Handle</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Version</samp><samp·class="p"·data-group-id="1880242617-1">)</samp></code></pre><p>but·if·the·<code·class="inline">user_args</code>·parameter·is·set·to·a·longer·list,·such·as27 by·default·two·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">handle_connect</samp><samp·class="p"·data-group-id="5142290626-1">(</samp><samp·class="n">Handle</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Version</samp><samp·class="p"·data-group-id="5142290626-1">)</samp></code></pre><p>but·if·the·<code·class="inline">user_args</code>·parameter·is·set·to·a·longer·list,·such·as
28 <code·class="inline">[SomePid,SomeTableRef]</code>,·the·callback·function·is·expected·to·have·these·(in28 <code·class="inline">[SomePid,SomeTableRef]</code>,·the·callback·function·is·expected·to·have·these·(in
29 this·case·two)·extra·arguments·last·in·the·argument·list:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">handle_connect</samp><samp·class="p"·data-group-id="2923174500-1">(</samp><samp·class="n">Handle</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Version</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">SomePid</samp><samp·class="p">,</samp><samp·class="w">·</samp><[·...·truncated·by·diffoscope;·len:·75,·SHA:·df51b4b1d7d7a2dc8a3cb47b64f69dce62abb5f2ea649af0cdcd12bbe05fe02c·...·]-1">)</samp></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.29 this·case·two)·extra·arguments·last·in·the·argument·list:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">handle_connect</samp><samp·class="p"·data-group-id="9212712122-1">(</samp><samp·class="n">Handle</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Version</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">SomePid</samp><samp·class="p">,</samp><samp·class="w">·</samp><[·...·truncated·by·diffoscope;·len:·75,·SHA:·d874c121b69bf488e4a5c4bee2d4093b0152986e15915eed753a08dfa89f736d·...·]-1">)</samp></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.
30 <a·href="#c:handle_unexpected_trans/4">handle_unexpected_trans/4</a>).·The·functions30 <a·href="#c:handle_unexpected_trans/4">handle_unexpected_trans/4</a>).·The·functions
31 which·takes·this·argument·will·be·called·if·and·only·if·one·of·the·functions31 which·takes·this·argument·will·be·called·if·and·only·if·one·of·the·functions
32 <a·href="megaco.xhtml#receive_message/5"><code·class="inline">receive_message/5</code></a>·or32 <a·href="megaco.xhtml#receive_message/5"><code·class="inline">receive_message/5</code></a>·or
33 <a·href="megaco.xhtml#process_received_message/5"><code·class="inline">process_received_message/5</code></a>·was·called33 <a·href="megaco.xhtml#process_received_message/5"><code·class="inline">process_received_message/5</code></a>·was·called
34 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">34 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">
35 ··<a·href="#module-data-types"·class="hover-link">35 ··<a·href="#module-data-types"·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">DATA·TYPES</span>38 ··<span·class="text">DATA·TYPES</span>
39 </h2>39 </h2>
40 <pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">action_request</samp><samp·class="p"·data-group-id="9269717385-1">(</samp><samp·class="p"·data-group-id="9269717385-1">)</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">#</samp><samp·class="ss">&#39;ActionRequest&#39;</samp><samp·class="p"·data-group-id="9269717[·...·truncated·by·diffoscope;·len:·56,·SHA:·fca8f48b85be3a88b7998c2b0d3a3fa6ce7f9ea3fb45ad4dd6b0ce3a8d53e330·...·]-2">}</samp><samp·class="w">40 <pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">action_request</samp><samp·class="p"·data-group-id="0719805796-1">(</samp><samp·class="p"·data-group-id="0719805796-1">)</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">#</samp><samp·class="ss">&#39;ActionRequest&#39;</samp><samp·class="p"·data-group-id="0719805[·...·truncated·by·diffoscope;·len:·56,·SHA:·22e0bc9eef97fae3317f8a3fe6fb01254ad5f6770d3d9ab0b8eb83dce0f3562f·...·]-2">}</samp><samp·class="w">
41 </samp><samp·class="nf">action_reply</samp><samp·class="p"·data-group-id="9269717385-3">(</samp><samp·class="p"·data-group-id="9269717385-3">)</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">#</samp><samp·class="ss">&#39;ActionReply&#39;</samp><samp·class="p"·data-group-id="926971738[·...·truncated·by·diffoscope;·len:·54,·SHA:·422f14b2c6d026cef7207472e8f53a37db6ffd9488134f3918b9b7705f90c675·...·]-4">}</samp><samp·class="w">41 </samp><samp·class="nf">action_reply</samp><samp·class="p"·data-group-id="0719805796-3">(</samp><samp·class="p"·data-group-id="0719805796-3">)</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">#</samp><samp·class="ss">&#39;ActionReply&#39;</samp><samp·class="p"·data-group-id="071980579[·...·truncated·by·diffoscope;·len:·54,·SHA:·bf2d8be81c7a382f227872f24ab2ae8057a95a4861d5b8e5c4ed0a3198952684·...·]-4">}</samp><samp·class="w">
42 </samp><samp·class="nf">error_desc</samp><samp·class="p"·data-group-id="9269717385-5">(</samp><samp·class="p"·data-group-id="9269717385-5">)</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">#</samp><samp·class="ss">&#39;ErrorDescriptor&#39;</samp><samp·class="p"·data-group-id="92697[·...·truncated·by·diffoscope;·len:·58,·SHA:·dcd7fe54c4ccd84eaec5e9975121dee4af8d51d4c30257c4d63cb5476559db3b·...·]-6">}</samp><samp·class="w">42 </samp><samp·class="nf">error_desc</samp><samp·class="p"·data-group-id="0719805796-5">(</samp><samp·class="p"·data-group-id="0719805796-5">)</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="o">#</samp><samp·class="ss">&#39;ErrorDescriptor&#39;</samp><samp·class="p"·data-group-id="07198[·...·truncated·by·diffoscope;·len:·58,·SHA:·fa151a5daf09d15e9c726ad963756401ac8f0d2aeda82766ff9ecf5d19b46cc5·...·]-6">}</samp><samp·class="w">
43 </samp><samp·class="nf">segment_no</samp><samp·class="p"·data-group-id="9269717385-7">(</samp><samp·class="p"·data-group-id="9269717385-7">)</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nf">integer</samp><samp·class="p"·data-group-id="9269717385-8">(</samp><samp·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·462,·SHA:·758ff207eb34f24cfca7fb9303baa5d1634a408702d8f08e6b63cb0d5b281146·...·]-2">}</samp></code></pre><p>The·record·initially·returned·by·<code·class="inline">megaco:connect/4,5</code>.·It·identifies·a·&quot;virtual&quot;43 </samp><samp·class="nf">segment_no</samp><samp·class="p"·data-group-id="0719805796-7">(</samp><samp·class="p"·data-group-id="0719805796-7">)</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nf">integer</samp><samp·class="p"·data-group-id="0719805796-8">(</samp><samp·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·462,·SHA:·9a5aab3418d5c5709af591dd77dda8b626370fd6c2dd3577d84c78c360ee27d0·...·]-2">}</samp></code></pre><p>The·record·initially·returned·by·<code·class="inline">megaco:connect/4,5</code>.·It·identifies·a·&quot;virtual&quot;
44 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·retrieved44 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
45 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·to45 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
46 <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·static46 <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
47 connection·configuration:</p><ul><li><code·class="inline">megaco:conn_info(ConnHandle,·protocol_version)</code>.</li></ul>47 connection·configuration:</p><ul><li><code·class="inline">megaco:conn_info(ConnHandle,·protocol_version)</code>.</li></ul>
48 ······</section>48 ······</section>
  
  
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="1988463545-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1988463545-2">[</span><span·class="p"·data-group-id="1988463545-2">]</span><span·class="p"·data-group-id="198846[·...·truncated·by·diffoscope;·len:·3,·SHA:·09a1b036b82baba3177d83c27c1f7d0beacaac6de1c5fdcc9680c49f638c5fb9·...·]5-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="0386219515-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0386219515-2">[</span><span·class="p"·data-group-id="0386219515-2">]</span><span·class="p"·data-group-id="038621[·...·truncated·by·diffoscope;·len:·3,·SHA:·8a8b2d66735ed03d0841027e42d38806eedd8e5bd5da54270f958a55d509091f·...·]5-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="1988463545-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1988463545-4">[</span><span·class="p"·data-group-id="1988463545-4">]</span><span·class="p"·data-group-id="198846[·...·truncated·by·diffoscope;·len:·3,·SHA:·09a1b036b82baba3177d83c27c1f7d0beacaac6de1c5fdcc9680c49f638c5fb9·...·]5-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="0386219515-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0386219515-4">[</span><span·class="p"·data-group-id="0386219515-4">]</span><span·class="p"·data-group-id="038621[·...·truncated·by·diffoscope;·len:·3,·SHA:·8a8b2d66735ed03d0841027e42d38806eedd8e5bd5da54270f958a55d509091f·...·]5-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="1988463545-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1988463545-6">[</span><span·class="p"·data-group-id="1988463545-6">]</span><span·class="p"·data-group-id="198846[·...·truncated·by·diffoscope;·len:·3,·SHA:·09a1b036b82baba3177d83c27c1f7d0beacaac6de1c5fdcc9680c49f638c5fb9·...·]5-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="0386219515-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0386219515-6">[</span><span·class="p"·data-group-id="0386219515-6">]</span><span·class="p"·data-group-id="038621[·...·truncated·by·diffoscope;·len:·3,·SHA:·8a8b2d66735ed03d0841027e42d38806eedd8e5bd5da54270f958a55d509091f·...·]5-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="1988463545-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1988463545-8">[</span><span·class="p"·data-group-id="1988463545-8">]</span><span·class="p"·data-group-id="198846[·...·truncated·by·diffoscope;·len:·3,·SHA:·09a1b036b82baba3177d83c27c1f7d0beacaac6de1c5fdcc9680c49f638c5fb9·...·]5-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="0386219515-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0386219515-8">[</span><span·class="p"·data-group-id="0386219515-8">]</span><span·class="p"·data-group-id="038621[·...·truncated·by·diffoscope;·len:·3,·SHA:·8a8b2d66735ed03d0841027e42d38806eedd8e5bd5da54270f958a55d509091f·...·]5-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="7595427478-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="7595427478-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·0813e1f1f6251b413ea4736b49eca68928c76553173ba1a3b641e0b7f1d9a565·...·]-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="1894566834-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="1894566834-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·85a9afdd9645ec7a0055d8abb227a9deca688e049a310d751a15a13d2f3bbaa4·...·]-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.26 KB
OEBPS/content.opf
3.23 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.3/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.3/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="1476028136-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="1476028136-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·4d9526fd8e334d0368a933534827f3435acbd0dffe4264076d06fa9baea48552·...·]-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="2385985065-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="2385985065-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·441,·SHA:·f0692fa663b3df442211c5c91258fc9fc690b4e5def1490bc5222d82c2e45135·...·]-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="8235831337-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="8235831337-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:·9a7440449516ff23c91265cfebf67a85b70720f3da1fee69b61202a3e89cfc72·...·]-2">]</span><span·class="w">175 ········</span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="6196360478-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="6196360478-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:·800400d9251aaa3d96ebec362b31ee8b8b12483802f111a53cded901c50424d7·...·]-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="8235831337-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="8235831337-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="6196360478-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="6196360478-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="8235831337-4">(</span><span·class="p"·data-group-id="8235831337-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="6196360478-4">(</span><span·class="p"·data-group-id="6196360478-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="8235831337-5">(</span><span·class="p"·data-group-id="8235831337-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="6196360478-5">(</span><span·class="p"·data-group-id="6196360478-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="6518009881-1">(</span><span·class="p"·data-group-id="6518009881-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·cl[·...·truncated·by·diffoscope;·len:·686,·SHA:·f3ecd746146f0adb644dfc4adf6944cb0ae6d0a98c453502a1bd774b210846dc·...·]-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="6725363374-1">(</span><span·class="p"·data-group-id="6725363374-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·cl[·...·truncated·by·diffoscope;·len:·686,·SHA:·d860ab9999b10776ec96d247d830d559b79a32d5e8e433d642b9c80e578cfd19·...·]-2">)</span><span·class="w">
203 </span><span·class="nf">messages_list</span><span·class="p"·data-group-id="6518009881-3">(</span><span·class="p"·data-group-id="6518009881-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6518009881-4">[</span><span·class="p"·data-group-id="6518009881-5">{</span><spa[·...·truncated·by·diffoscope;·len:·417,·SHA:·04da85c938b2f7e1447143b9d1c2bee5892ee34682ff887275bc74600d6e3133·...·]-4">]</span><span·class="w">203 </span><span·class="nf">messages_list</span><span·class="p"·data-group-id="6725363374-3">(</span><span·class="p"·data-group-id="6725363374-3">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6725363374-4">[</span><span·class="p"·data-group-id="6725363374-5">{</span><spa[·...·truncated·by·diffoscope;·len:·417,·SHA:·5b3b53826121146685cd4d9ef26a2c985dafb7f2e3cf3783cb2728ff2167939c·...·]-4">]</span><span·class="w">
204 </span><span·class="nf">message_name</span><span·class="p"·data-group-id="6518009881-8">(</span><span·class="p"·data-group-id="6518009881-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="6518009881-9">(</span><span·class="p"·data-group-id="6518009881-9">)</span><span·class="w"> 
205 </span><span·class="nf">message</span><span·class="p"·data-group-id="6518009881-10">(</span><span·class="p"·data-group-id="6518009881-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="65180098[·...·truncated·by·diffoscope;·len:·155,·SHA:·438b930e9590130debc1fad53119355f2de165e7c83cd2e19da4bc3fa5d53144·...·]204 </span><span·class="nf">message_name</span><span·class="p"·data-group-id="6725363374-8">(</span><span·class="p"·data-group-id="6725363374-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="6725363[·...·truncated·by·diffoscope;·len:·84,·SHA:·d721c8d3a26c761ad596daaed78129567434eca920c1df83020a6698ba430cea·...·]
 205 </span><span·class="nf">message</span><span·class="p"·data-group-id="6725363374-10">(</span><span·class="p"·data-group-id="6725363374-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="6725363374-11">(</span><span·class="p"·data-group-id="6725363374-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="1509861884-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:·ac390e496d4b96b7afcc4054ae3e22fe9eadffd28003922db325f27b72755d16·...·]-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="7281205708-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:·411d48637f074994a44011edd3676b939aca293b650ebd4de5073b6bbab761f5·...·]-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="1509861884-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="7281205708-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="1509861884-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="1509861884-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="7281205708-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="7281205708-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="1509861884-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="7281205708-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="1509861884-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="1509861884-5">[</span><span·class="o">?</span><span·class="ss">megaco_root_termination_id</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·e514d30bff63f6a95887e7b95a596412169e81a85bbfa68638bec4595a627082·...·]-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="7281205708-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="7281205708-5">[</span><span·class="o">?</span><span·class="ss">megaco_root_termination_id</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·8f31feca0c42f15b51265a5f20d1e56209bcc644b22a9d9529a4fe459949926f·...·]-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="1509861884-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="7281205708-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="1509861884-6">[</span><span·class="o">#</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p"·data-group-id="1509861884-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="7281205708-6">[</span><span·class="o">#</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p"·data-group-id="7281205708-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="1509861884-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="1509861884-8">}</span><span·class="p"·data-group-id="1509861884-7">}</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·d4ee6b2f71e2b9696df752065b8241fee91e1580acc0d105e27baa286891a459·...·]-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="7281205708-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="7281205708-8">}</span><span·class="p"·data-group-id="7281205708-7">}</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·c948e7384a2c409f7524bf16fc5e72302db6d4725dba130d104039c538615c82·...·]-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="1509861884-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="1509861884-9">)[·...·truncated·by·diffoscope;·len:·217,·SHA:·24db6bda4332ad864d77f5199bfab1cb7d19f40b8277b13d4a19ef5f36b574fc·...·]-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="7281205708-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="7281205708-9">)[·...·truncated·by·diffoscope;·len:·217,·SHA:·ba5143e9d9701be556e53aca1bd23f43a2ee0aee04cd29811a1f63acbc169400·...·]-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="6107663948-2">{</span><span·class="ss">&#39;Message&#39;</span><span·class="p">,</span><span·class="w">188 ···</span><span·class="p"·data-group-id="5075940476-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="6107663948-3">{</span><span·class="ss">ip4Address</span><span·class="p">,</span><span·class="p"·data-group-id="6107663948-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:·32559271971eee2803c8aca69d33e7c9e867153032ceb4bdcfdcb96bb66fbaa5·...·]-3">}</span><span·class="p">,</span><span·class="w">190 ····</span><span·class="p"·data-group-id="5075940476-3">{</span><span·class="ss">ip4Address</span><span·class="p">,</span><span·class="p"·data-group-id="5075940476-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:·1c9a551ac780294ecbe43a89c24b684f917b3c4fd15f965653e6962f986b0834·...·]-3">}</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="p"·data-group-id="6107663948-6">{</span><span·class="ss">transactions</span><span·class="p">,</span><span·class="w">191 ····</span><span·class="p"·data-group-id="5075940476-6">{</span><span·class="ss">transactions</span><span·class="p">,</span><span·class="w">
192 ·····</span><span·class="p"·data-group-id="6107663948-7">[</span><span·class="w">192 ·····</span><span·class="p"·data-group-id="5075940476-7">[</span><span·class="w">
193 ······</span><span·class="p"·data-group-id="6107663948-8">{</span><span·class="ss">transactionRequest</span><span·class="p">,</span><span·class="w">193 ······</span><span·class="p"·data-group-id="5075940476-8">{</span><span·class="ss">transactionRequest</span><span·class="p">,</span><span·class="w">
194 ·······</span><span·class="p"·data-group-id="6107663948-9">{</span><span·class="ss">&#39;TransactionRequest&#39;</span><span·class="p">,</span><span·class="w">194 ·······</span><span·class="p"·data-group-id="5075940476-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="6107663948-10">[</span><span·class="p"·data-group-id="6107663948-11">{</span><span·class="ss">&#39;ActionRequest&#39;</span><span·class="p">,</span><span·class="w">196 ·········</span><span·class="p"·data-group-id="5075940476-10">[</span><span·class="p"·data-group-id="5075940476-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="6107663948-12">[</span><span·class="w">200 ···········</span><span·class="p"·data-group-id="5075940476-12">[</span><span·class="w">
201 ············</span><span·class="p"·data-group-id="6107663948-13">{</span><span·class="ss">&#39;CommandRequest&#39;</span><span·class="p">,</span><span·class="w">201 ············</span><span·class="p"·data-group-id="5075940476-13">{</span><span·class="ss">&#39;CommandRequest&#39;</span><span·class="p">,</span><span·class="w">
202 ·············</span><span·class="p"·data-group-id="6107663948-14">{</span><span·class="ss">serviceChangeReq</span><span·class="p">,</span><span·class="w">202 ·············</span><span·class="p"·data-group-id="5075940476-14">{</span><span·class="ss">serviceChangeReq</span><span·class="p">,</span><span·class="w">
203 ··············</span><span·class="p"·data-group-id="6107663948-15">{</span><span·class="ss">&#39;ServiceChangeRequest&#39;</span><span·class="p">,</span><span·class="w">203 ··············</span><span·class="p"·data-group-id="5075940476-15">{</span><span·class="ss">&#39;ServiceChangeRequest&#39;</span><span·class="p">,</span><span·class="w">
204 ···············</span><span·class="p"·data-group-id="6107663948-16">[</span><span·class="w">204 ···············</span><span·class="p"·data-group-id="5075940476-16">[</span><span·class="w">
205 ················</span><span·class="p"·data-group-id="6107663948-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="6107663948-18">[</span><span·class="s">[·...·truncated·by·diffoscope;·len:·172,·SHA:·6579a5344ae44406d0c28b9edb25cebf96daa09f28fa5ade796b4a028b6679ce·...·]-16">]</span><span·class="p">,</span><span·class="w">205 ················</span><span·class="p"·data-group-id="5075940476-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="5075940476-18">[</span><span·class="s">[·...·truncated·by·diffoscope;·len:·172,·SHA:·1f038f3cd1ad5af594add48571a76f3dffc68f739da742f7ff90b0bfc1c63142·...·]-16">]</span><span·class="p">,</span><span·class="w">
206 ················</span><span·class="p"·data-group-id="6107663948-19">{</span><span·class="ss">&#39;ServiceChangeParm&#39;</span><span·class="p">,</span><span·class="w">206 ················</span><span·class="p"·data-group-id="5075940476-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="6107663948-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="6107663948-20">}</span><span·class="p">,</span><span·class="w">208 ·················</span><span·class="p"·data-group-id="5075940476-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="5075940476-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="6107663948-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:·f35b1d394e58e443796d70d475c878b7bee5f1f8d4d21d220cf1fc489ff97868·...·]-21">}</span><span·class="p">,</span><span·class="w">210 ·················</span><span·class="p"·data-group-id="5075940476-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:·0b55b8f2b1861e524c37d51d175c9ccf51da4cc62f12c1938b10db74453ec4b6·...·]-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="6107663948-19">}</span><span·class="w">215 ················</span><span·class="p"·data-group-id="5075940476-19">}</span><span·class="w">
216 ··············</span><span·class="p"·data-group-id="6107663948-15">}</span><span·class="w">216 ··············</span><span·class="p"·data-group-id="5075940476-15">}</span><span·class="w">
217 ·············</span><span·class="p"·data-group-id="6107663948-14">}</span><span·class="p">,</span><span·class="w">217 ·············</span><span·class="p"·data-group-id="5075940476-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="6107663948-13">}</span><span·class="w">220 ············</span><span·class="p"·data-group-id="5075940476-13">}</span><span·class="w">
221 ···········</span><span·class="p"·data-group-id="6107663948-12">]</span><span·class="w">221 ···········</span><span·class="p"·data-group-id="5075940476-12">]</span><span·class="w">
222 ··········</span><span·class="p"·data-group-id="6107663948-11">}</span><span·class="w">222 ··········</span><span·class="p"·data-group-id="5075940476-11">}</span><span·class="w">
223 ·········</span><span·class="p"·data-group-id="6107663948-10">]</span><span·class="w">223 ·········</span><span·class="p"·data-group-id="5075940476-10">]</span><span·class="w">
224 ·······</span><span·class="p"·data-group-id="6107663948-9">}</span><span·class="w">224 ·······</span><span·class="p"·data-group-id="5075940476-9">}</span><span·class="w">
225 ······</span><span·class="p"·data-group-id="6107663948-8">}</span><span·class="w">225 ······</span><span·class="p"·data-group-id="5075940476-8">}</span><span·class="w">
226 ·····</span><span·class="p"·data-group-id="6107663948-7">]</span><span·class="w">226 ·····</span><span·class="p"·data-group-id="5075940476-7">]</span><span·class="w">
227 ····</span><span·class="p"·data-group-id="6107663948-6">}</span><span·class="w">227 ····</span><span·class="p"·data-group-id="5075940476-6">}</span><span·class="w">
228 ···</span><span·class="p"·data-group-id="6107663948-2">}</span><span·class="w">228 ···</span><span·class="p"·data-group-id="5075940476-2">}</span><span·class="w">
229 ··</span><span·class="p"·data-group-id="6107663948-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="5075940476-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="6159848979-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6159848979-2">[</span><span·class="p"·data-group-id="6159848979-2">]</span><span·class="p"·data-group-id="615984[·...·truncated·by·diffoscope;·len:·3,·SHA:·c62510afc57db491f9f993387b76dd9a7d08f09c01326953904b6586c19c4b8a·...·]9-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="8459153939-1">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8459153939-2">[</span><span·class="p"·data-group-id="8459153939-2">]</span><span·class="p"·data-group-id="845915[·...·truncated·by·diffoscope;·len:·3,·SHA:·99a0b871c9047c4f5555fcf062e0623174bae38746fece6efdf032d80fb2221a·...·]9-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="6159848979-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6159848979-4">[</span><span·class="p"·data-group-id="6159848979-4">]</span><span·class="p"·data-group-id="615984[·...·truncated·by·diffoscope;·len:·3,·SHA:·c62510afc57db491f9f993387b76dd9a7d08f09c01326953904b6586c19c4b8a·...·]9-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="8459153939-3">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8459153939-4">[</span><span·class="p"·data-group-id="8459153939-4">]</span><span·class="p"·data-group-id="845915[·...·truncated·by·diffoscope;·len:·3,·SHA:·99a0b871c9047c4f5555fcf062e0623174bae38746fece6efdf032d80fb2221a·...·]9-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="6159848979-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6159848979-6">[</span><span·class="p"·data-group-id="6159848979-6">]</span><span·class="p"·data-group-id="615984[·...·truncated·by·diffoscope;·len:·3,·SHA:·c62510afc57db491f9f993387b76dd9a7d08f09c01326953904b6586c19c4b8a·...·]9-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="8459153939-5">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8459153939-6">[</span><span·class="p"·data-group-id="8459153939-6">]</span><span·class="p"·data-group-id="845915[·...·truncated·by·diffoscope;·len:·3,·SHA:·99a0b871c9047c4f5555fcf062e0623174bae38746fece6efdf032d80fb2221a·...·]9-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="6159848979-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6159848979-8">[</span><span·class="p"·data-group-id="6159848979-8">]</span><span·class="p"·data-group-id="615984[·...·truncated·by·diffoscope;·len:·3,·SHA:·c62510afc57db491f9f993387b76dd9a7d08f09c01326953904b6586c19c4b8a·...·]9-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="8459153939-7">(</span><span·class="s">&quot;baidarka&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8459153939-8">[</span><span·class="p"·data-group-id="8459153939-8">]</span><span·class="p"·data-group-id="845915[·...·truncated·by·diffoscope;·len:·3,·SHA:·99a0b871c9047c4f5555fcf062e0623174bae38746fece6efdf032d80fb2221a·...·]9-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="5071838974-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="5071838974-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="6551730000-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="6551730000-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="4942657196-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:·31c82cc487ce26bd0608c063a23c24e43489444303c673c111b121b87d286467·...·]-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="8816050348-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:·ef1d521fcf6ebec7e979758a76bc15f004499062964c4aac4518d5a5f4ba1c31·...·]-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="4905138404-1">(</span><span·class="p"·data-group-id="4905138404-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="4905138[·...·truncated·by·diffoscope;·len:·56,·SHA:·a1b413cf0ce326b821d82dee1c99328f28b9eeb5623ce8e09ff82c3741d5eb47·...·]-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="7716060140-1">(</span><span·class="p"·data-group-id="7716060140-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="7716060[·...·truncated·by·diffoscope;·len:·56,·SHA:·77064999910e3380f9af1e047e65cf71e6465a4c86a10a75e31ec334a724ad40·...·]-2">}</span><span·class="w">
146 </span><span·class="nf">action_reply</span><span·class="p"·data-group-id="4905138404-3">(</span><span·class="p"·data-group-id="4905138404-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="490513840[·...·truncated·by·diffoscope;·len:·54,·SHA:·778c9a4f5255acf74eeff7addd78d24e67d5e6fa8360792da5c8078e5ae38ddd·...·]-4">}</span><span·class="w">146 </span><span·class="nf">action_reply</span><span·class="p"·data-group-id="7716060140-3">(</span><span·class="p"·data-group-id="7716060140-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="771606014[·...·truncated·by·diffoscope;·len:·54,·SHA:·dfa97c70a3c4c26dca19a3a839e62fb9a2b84f404367e62db0ad1deab9f1afb5·...·]-4">}</span><span·class="w">
147 </span><span·class="nf">error_desc</span><span·class="p"·data-group-id="4905138404-5">(</span><span·class="p"·data-group-id="4905138404-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="4905138404-6">{</span><span·class="p"·data-group-id="4905138404-6">}</span><span·class="w"> 
148 </span><span·class="nf">segment_no</span><span·class="p"·data-group-id="4905138404-7">(</span><span·class="p"·data-group-id="4905138404-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=[·...·truncated·by·diffoscope;·len:·654,·SHA:·7fb4a6fb9bc12df82c655be68eb5684852bfcb6cee0c096440c7c60e88c8cd76·...·]147 </span><span·class="nf">error_desc</span><span·class="p"·data-group-id="7716060140-5">(</span><span·class="p"·data-group-id="7716060140-5">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">&#39;ErrorDescriptor[·...·truncated·by·diffoscope;·len:·134,·SHA:·5d9f3847fd991b87d93b68ee0954d17268ea5000d3528cbbffec91665ea93b6d·...·]
 148 </span><span·class="nf">segment_no</span><span·class="p"·data-group-id="7716060140-7">(</span><span·class="p"·data-group-id="7716060140-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="7716060140-8">(</span><span·class="p"·data-group-id="7716060140-8">)</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">conn_handle</span><span·class="p"·data-group-id="3062343609-1">(</span><span·class="p"·data-group-id="3062343609-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="o">#</span><span·class="ss">megaco_conn_handle</span><span·class="p"·data-group-id="3062343609-2">{</span><span·class="p"·data-group-id="3062343609-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>
1.0 MB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.4/doc/html/mnesia.epub
3.96 KB
zipinfo {}
    
Offset 1, 26 lines modifiedOffset 1, 26 lines modified
1 Zip·file·size:·221816·bytes,·number·of·entries:·241 Zip·file·size:·221822·bytes,·number·of·entries:·24
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:56·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:50·mimetype
3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·07:56·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·08:50·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····78161·bx·defN·25-Mar-18·07:56·OEBPS/notes.xhtml4 ?rw-r--r--··6.1·unx····78161·bx·defN·25-Mar-18·08:50·OEBPS/notes.xhtml
5 ?rw-r--r--··6.1·unx·····2017·bx·defN·25-Mar-18·07:56·OEBPS/nav.xhtml5 ?rw-r--r--··6.1·unx·····2017·bx·defN·25-Mar-18·08:50·OEBPS/nav.xhtml
6 ?rw-r--r--··6.1·unx·····7620·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_registry.xhtml6 ?rw-r--r--··6.1·unx·····7620·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_registry.xhtml
7 ?rw-r--r--··6.1·unx·····6838·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_overview.xhtml7 ?rw-r--r--··6.1·unx·····6838·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_overview.xhtml
8 ?rw-r--r--··6.1·unx····13297·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_frag_hash.xhtml8 ?rw-r--r--··6.1·unx····13297·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_frag_hash.xhtml
9 ?rw-r--r--··6.1·unx·····1788·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_chap8.xhtml9 ?rw-r--r--··6.1·unx·····1788·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_chap8.xhtml
10 ?rw-r--r--··6.1·unx····71362·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_chap7.xhtml10 ?rw-r--r--··6.1·unx····71362·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_chap7.xhtml
11 ?rw-r--r--··6.1·unx···136245·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_chap5.xhtml11 ?rw-r--r--··6.1·unx···136245·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_chap5.xhtml
12 ?rw-r--r--··6.1·unx···116071·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_chap4.xhtml12 ?rw-r--r--··6.1·unx···116071·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_chap4.xhtml
13 ?rw-r--r--··6.1·unx····45343·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_chap3.xhtml13 ?rw-r--r--··6.1·unx····45343·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_chap3.xhtml
14 ?rw-r--r--··6.1·unx···103046·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_chap2.xhtml14 ?rw-r--r--··6.1·unx···103046·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_chap2.xhtml
15 ?rw-r--r--··6.1·unx·····3837·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_chap1.xhtml15 ?rw-r--r--··6.1·unx·····3837·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_chap1.xhtml
16 ?rw-r--r--··6.1·unx····40203·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_app_c.xhtml16 ?rw-r--r--··6.1·unx····40203·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_app_c.xhtml
17 ?rw-r--r--··6.1·unx····81685·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_app_b.xhtml17 ?rw-r--r--··6.1·unx····81685·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_app_b.xhtml
18 ?rw-r--r--··6.1·unx····39380·bx·defN·25-Mar-18·07:56·OEBPS/mnesia_app_a.xhtml18 ?rw-r--r--··6.1·unx····39380·bx·defN·25-Mar-18·08:50·OEBPS/mnesia_app_a.xhtml
19 ?rw-r--r--··6.1·unx···314521·bx·defN·25-Mar-18·07:56·OEBPS/mnesia.xhtml19 ?rw-r--r--··6.1·unx···314521·bx·defN·25-Mar-18·08:50·OEBPS/mnesia.xhtml
20 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-erlang-ESPT6BQV.css20 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-erlang-ESPT6BQV.css
21 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-LSJCIYTM.js21 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-LSJCIYTM.js
22 ?rw-r--r--··6.1·unx·····3374·bx·defN·25-Mar-18·07:56·OEBPS/content.opf22 ?rw-r--r--··6.1·unx·····3374·bx·defN·25-Mar-18·08:50·OEBPS/content.opf
23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:56·OEBPS/assets/logo.png23 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:50·OEBPS/assets/logo.png
24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:56·META-INF/container.xml24 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:50·META-INF/container.xml
25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:56·META-INF/com.apple.ibooks.display-options.xml25 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:50·META-INF/com.apple.ibooks.display-options.xml
26 24·files,·1086838·bytes·uncompressed,·217594·bytes·compressed:··80.0%26 24·files,·1086838·bytes·uncompressed,·217600·bytes·compressed:··80.0%
136 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,·Mar·18·2025·07:56: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,·Mar·18·2025·08:50:10,·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="3561858648-1">[</samp><samp·class="p"·data-group-id="3561858648-2">{</samp><samp·class="p"·data-group-id="3561858648-3">{</samp><samp·class="ss">disc_only_copies</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="nf">node</samp><samp·class="p"·data-group-id="3561858648-4">(</samp><samp·class="p"·data-group-id="3561858648-4">)</samp><samp·class="p">|</samp><samp·class="nf">nodes</samp><samp·class="p"·data-group-id="3561858648-5">(</samp><samp·class="p"·data-group-id="3561858648-5">)</samp><samp·class="p">]</samp><samp·class="p"·data-group-id="3561858648-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="3561858648-6">(</samp><samp·class="ss">my_reg</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·ebeef78a38ad8ceadb5cce8df0acd3339de6af8ad3ccc6f404d8eb4086a021ee·...·]>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">=</[·...·truncated·by·diffoscope;·len:·709,·SHA:·271f1fc58469141b9369848e489fea07d88c4fdee1c3639f3c17ba6e597caf71·...·]>
 140 ··········</samp><samp·class="nc">mnesia_registry</samp><samp·class="p">:</samp><samp·class="nf">create_table</samp><samp·class="p"·data-group-id="4774218679-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="4774218679-6">)</samp></code></pre>
141 ··</section>141 ··</section>
142 </section>142 </section>
  
143 ········</div>143 ········</div>
144 ······</section>144 ······</section>
  
  
45.4 KB
OEBPS/mnesia_chap7.xhtml
Max HTML report size reached
149 KB
OEBPS/mnesia_chap5.xhtml
Max HTML report size reached
141 KB
OEBPS/mnesia_chap4.xhtml
Max HTML report size reached
52.0 KB
OEBPS/mnesia_chap3.xhtml
Max HTML report size reached
161 KB
OEBPS/mnesia_chap2.xhtml
Max HTML report size reached
70.3 KB
OEBPS/mnesia_app_c.xhtml
Max HTML report size reached
147 KB
OEBPS/mnesia_app_b.xhtml
Max HTML report size reached
64.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.8 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.4/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="8339581147-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8339581147-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="5973387559-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5973387559-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="8339581147-3">[</span><span·class="p"·data-group-id="8339581147-3">]</span><span·class="p"·data-group-id="8339581147-2">}</span><span·class="p"·data-group-id="8339581147-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="5973387559-3">[</span><span·class="p"·data-group-id="5973387559-3">]</span><span·class="p"·data-group-id="5973387559-2">}</span><span·class="p"·data-group-id="5973387559-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.3/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.3/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="6409642667-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="6409642667-2">(</span><span·class="p"·data-group-id="6409642667-2">)</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·101,·SHA:·81b6be83635c54c6d479f09e7257732dd2840831def294edba43eccf6ee1a90a·...·]-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="6995167524-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="6995167524-2">(</span><span·class="p"·data-group-id="6995167524-2">)</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·101,·SHA:·ee157313dc9545baf73d21b396f35425a7f87516ec24d46514a8469305b03aa7·...·]-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="5755256746-1">(</span><span·class="ss">table</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5755256746-2">[</span><span·class="p"·data-group-id="5755256746-3">{</span><span·class="ss">ram_copies</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·689,·SHA:·36d6c9bec13c75e058b188ea5be88a3d79b691b2140ac6a1d68fff28e8a8b514·...·]-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="6266695732-1">(</span><span·class="ss">table</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6266695732-2">[</span><span·class="p"·data-group-id="6266695732-3">{</span><span·class="ss">ram_copies</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·689,·SHA:·3be14222a051ef2571219d8342aaa29042b1584e32a7ea0a3c1ccbf82381f612·...·]-6">}</span><span·class="p">,</span><span·class="w">
3040 ·······</span><span·class="p"·data-group-id="5755256746-8">{</span><span·class="ss">storage_properties</span><span·class="p">,</span><span·class="w">3040 ·······</span><span·class="p"·data-group-id="6266695732-8">{</span><span·class="ss">storage_properties</span><span·class="p">,</span><span·class="w">
3041 ········</span><span·class="p"·data-group-id="5755256746-9">[</span><span·class="p"·data-group-id="5755256746-10">{</span><span·class="ss">ets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5755256746-11">[</span><span·class="ss">compressed</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·872,·SHA:·4c4a6f4ba42d4ef21e77c0acf97472ce2c014c8fec7e45c474788cbdab2d9de5·...·]-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="6266695732-9">[</span><span·class="p"·data-group-id="6266695732-10">{</span><span·class="ss">ets</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6266695732-11">[</span><span·class="ss">compressed</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·872,·SHA:·770cf53f968c8e131de9c807010e925f41bfca544a2c7f40b2e595a1d4308fd2·...·]-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="3522780957-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="3957454675-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">
3048 ····</span><span·class="p"·data-group-id="3522780957-2">[</span><span·class="p"·data-group-id="3522780957-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3522780957-4">[</span><span·class="n">N1</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·145,·SHA:·3e0ad14136265f6b22a990db0ed0eefaef1ebdc103444f9bb418bc41919f7aa1·...·]-3">}</span><span·class="p">,</span><span·class="w">3048 ····</span><span·class="p"·data-group-id="3957454675-2">[</span><span·class="p"·data-group-id="3957454675-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3957454675-4">[</span><span·class="n">N1</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·145,·SHA:·b563e415da893531ad3c0017f22d4c5b77a39b2193ae87d1cb891e5f0458236d·...·]-3">}</span><span·class="p">,</span><span·class="w">
3049 ·····</span><span·class="p"·data-group-id="3522780957-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="3522780957-6">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·243,·SHA:·f76b1d1867a4ab78fe0d642785b7dff765783fc95219c339cb3b6cb59c2b3e3f·...·]-1">)</span><span·class="p">.</span></code></pre><p>If·it·is·required·that·Mnesia·must·build·and·maintain·an·extra·index·table·on3049 ·····</span><span·class="p"·data-group-id="3957454675-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="3957454675-6">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·243,·SHA:·b57b1b5808aa2c7e2e7180f7f71abb50c3f5ff7c88227b7126fff413e7b82943·...·]-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="0914000290-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="1814052236-1">(</span><span·class="ss">person</span><span·class="p">,</span><span·class="w">
3052 ····</span><span·class="p"·data-group-id="0914000290-2">[</span><span·class="p"·data-group-id="0914000290-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0914000290-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·405c1a7fc1cf2b15b57282dafedb20003fc96f46f33f09974cccc74c23edb696·...·]-3">}</span><span·class="p">,</span><span·class="w">3052 ····</span><span·class="p"·data-group-id="1814052236-2">[</span><span·class="p"·data-group-id="1814052236-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1814052236-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·9618df21b9fb9f32e84fc401902889bdfc81fd85f63b733ecf685abe58d9d1e1·...·]-3">}</span><span·class="p">,</span><span·class="w">
3053 ·····</span><span·class="p"·data-group-id="0914000290-5">{</span><span·class="ss">index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0914000290-6">[</span><span·class="ss">address</span><span·class="p"·data-group-id="0914000290-6">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·5811d2613be45d102a31999902120d760b85468652bd857fae97b7d17e97cf34·...·]-5">}</span><span·class="p">,</span><span·class="w">3053 ·····</span><span·class="p"·data-group-id="1814052236-5">{</span><span·class="ss">index</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1814052236-6">[</span><span·class="ss">address</span><span·class="p"·data-group-id="1814052236-6">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·c464f71122361af0c321f0c0864ffd290a2b02ea05ec8fd1d817a79ec054d25b·...·]-5">}</span><span·class="p">,</span><span·class="w">
3054 ·····</span><span·class="p"·data-group-id="0914000290-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="0914000290-8">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·244,·SHA:·5d5029ae87645d46eef3e5128351303b78991a9bf791b745ad1b435dcf921fc2·...·]-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="1814052236-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="1814052236-8">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·244,·SHA:·0bcac4a9d0fd3fe26e4b851b08bf9bac00771c52aa4bc4b69c78a8a4575bd96f·...·]-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.1/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.1/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.3/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.3/doc/html/index.html">ERTS</a>
5161 User's·Guide·and·the·<a·href="../../../../lib/stdlib-6.2.1/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="1098252835-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:·dd160df1f15ed7391d2d7955941746f3c5fc72ce4fefc125169e5c1370a3b830·...·]-1">}</span><span·class="p">,</span><span·class="w">5161 User's·Guide·and·the·<a·href="../../../../lib/stdlib-6.2.1/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="2997160231-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:·6e64bff868e4b217ae5b0b26570710caa1052d6d885a139726046d101d45502a·...·]-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="1098252835-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="1098252[·...·truncated·by·diffoscope;·len:·3,·SHA:·a5af16fb4a4856cc3f8530b5214830a85103fb5a515b39b93e652c0a142363ee·...·]-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="2997160231-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="2997160[·...·truncated·by·diffoscope;·len:·3,·SHA:·138d9e809e386a7b800791d1f664f56d1c55f3d1ba411b950862729bc486c5ce·...·]-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="1098252835-3">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="p"·data-group-id="1098252835-4">[</span><span·class="p"·data-group-id="1098252835-5">{</span><span·class="n">MatchHead</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·466,·SHA:·53d24eb9ace4d9792bd028a3cb2499c060622e0dc83f5b97832f5a4906d45b2f·...·]-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="2997160231-3">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="p"·data-group-id="2997160231-4">[</span><span·class="p"·data-group-id="2997160231-5">{</span><span·class="n">MatchHead</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·466,·SHA:·6f46a49e4b4e3844b9aba9c5394141843fb3b2d8216fe661dd4709eb7a61632f·...·]-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="6302829376-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="8117851040-1">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">
5443 ····</span><span·class="p"·data-group-id="6302829376-2">[</span><span·class="p"·data-group-id="6302829376-3">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6302829376-4">[</span><span·class="p"·data-group-id="6302829376-5">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6302829376-6">{</span><span·class="ss">integer</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">string</span><span·class="p"·data-group-id="6302829376-6">}</span><span·class="p"·data-group-id="6302829376-5">}</span><span·class="p"·data-group-id="6302829376-4">]</span><span·class="p"·data-group-id="6302829376-3">}</span><span·class="p">,</span><span·class="w"> 
5444 ·····</span><span·class="p"·data-group-id="6302829376-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="6302829376-8">(</span><span·class="ss">fields</[·...·truncated·by·diffoscope;·len:·470,·SHA:·c02a13d1ce53f02ee7e6302948cf2c32960c65cb2950578c3a74a1d5a23341e8·...·]5443 ····</span><span·class="p"·data-group-id="8117851040-2">[</span><span·class="p"·data-group-id="8117851040-3">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8117851040-4">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·528,·SHA:·4e9daf6f38271130e733407561bfa5ea16d4dc6d1679b1bef0ff7223fa11057d·...·]
 5444 ·····</span><span·class="p"·data-group-id="8117851040-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="8117851040-8">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">employees</span><span·class="p"·data-group-id="8117851040-8">)</span><span·class="p"·data-group-id="8117851040-7">}</span><span·class="p"·data-group-id="8117851040-2">]</span><span·class="p"·data-group-id="8117851040-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="0084355909-1">(</span><span·class="p"·data-group-id="0084355909-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:·94e8f57f3fd5c8af605d1372db86c62117353668628ddf9176d96e9bc94c1624·...·]-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="4980653523-1">(</span><span·class="p"·data-group-id="4980653523-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:·346d770d774ef15c72761c8a9165e044847ddba06a781e1374d1143dfc86818e·...·]-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="0084355909-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:·64187553428af35d17185b8c58861ef9f0c928df6b1724da7150734d7101044d·...·]-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="4980653523-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:·e6ecb1c424a7852836f3ab151428a8347bea3b928d4471d42d1f59b38927ea7e·...·]-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="0084355909-4">(</span><span·class="p"·data-group-id="0084355909-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="4980653523-4">(</span><span·class="p"·data-group-id="4980653523-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="0084355909-5">(</span><span·class="n">F</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="0084355909-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="0084355909-6">}</span><span·class="p"·data-group-id="0084355909-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="0084355909-7">(</span><span·class="n">M</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="0084355909-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:·84dd914d7730f97fedb52e7eb805b5681f932b40a97347783cf81048565a040b·...·]">)</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="4980653523-5">(</span><span·class="n">F</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="4980653523-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:·89639d0e17fb4e5254be9db791c71cb19d4fc8b6f133879cf953a8076cf558b6·...·]">)</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="4980653523-7">(</span><span·class="n">M</span><span·class="o">#</span><span·class="ss">person</span><span·class="p"·data-group-id="4980653523-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="4980653523-8">}</span><span·class="p"·data-group-id="4980653523-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="0084355909-9">(</span><span·class="n">Child</span><span·class="p"·data-group-id="0084355909-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:·7afea572974915b9ffb9b021c6054e9962d2638e5a1d4a0169b6c2f9276856e3·...·]-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="4980653523-9">(</span><span·class="n">Child</span><span·class="p"·data-group-id="4980653523-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:·1b4afce381548d4a0719536a36bf2606324ad5a1d1652e0d710d57943e7875cf·...·]-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="0084355909-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="0084355909-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="4980653523-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="4980653523-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="0084355909-12">(</span><span·class="n">Trans</span><span·class="p"·data-group-id="0084355909-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="4980653523-12">(</span><span·class="n">Trans</span><span·class="p"·data-group-id="4980653523-12">)</span><span·class="p">.</span><span·class="w">
  
6023 </span><span·class="nf">oid</span><span·class="p"·data-group-id="0084355909-13">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="0084355909-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0084355909-14">{</span><span·class="nf">elemen[·...·truncated·by·diffoscope;·len:·542,·SHA:·ae2048fe144b87e3d732bdf95f24afb1f11a5583b318b4506f62bb70662b5e6a·...·]-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="4980653523-13">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="4980653523-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="4980653523-14">{</span><span·class="nf">elemen[·...·truncated·by·diffoscope;·len:·542,·SHA:·aa4de783b5dbb616bfb404ba7f6682b76cf18c510ee96b6a10535460fe416149·...·]-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/51830 bytes (13.89%) of diff not shown.
64.5 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.4/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="1234945409-1">(</span><span·class="ss">mnesia_backup</span><span·class="p"·data-group-id="1234945409-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="9547212116-1">(</span><span·class="ss">mnesia_backup</span><span·class="p"·data-group-id="9547212116-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="1234945409-2">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="1234945409-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="9547212116-2">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="9547212116-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="1234945409-3">(</span><span·class="p"·data-group-id="1234945409-4">[</span><span·class="w">166 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="9547212116-3">(</span><span·class="p"·data-group-id="9547212116-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="1234945409-4">]</span><span·class="p"·data-group-id="1234945409-3">)</span><span·class="p">.</span><span·class="w">176 ········</span><span·class="p"·data-group-id="9547212116-4">]</span><span·class="p"·data-group-id="9547212116-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="1234945409-5">(</span><span·class="ss">backup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1234945409-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:·121ef4c1c043262168ffd54f32a6969a8acbe43ba94dca1acd50790c5d8366ca·...·]-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="9547212116-5">(</span><span·class="ss">backup</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9547212116-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:·3d0f417b0cd906e97d907d789e3b9ccdf10b4af74b20428808cb9166b5b56860·...·]-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="1234945409-7">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="1234945409-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="9547212116-7">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="9547212116-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="1234945409-8">(</span><span·class="p"·data-group-id="1234945409-9">[</span><span·class="n">File</span><span·class="p">,</span><span·class="s">&quot;.BUPTMP&quot;</span><span·class="p"·data-group-id="1234945409-9">]</span><span·class="p"·data-group-id="1234[·...·truncated·by·diffoscope;·len:·6,·SHA:·d05050df8be7cc06b20f3079a479349f673d2a10477c9f4b09f5a099af96c5b7·...·]-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="9547212116-8">(</span><span·class="p"·data-group-id="9547212116-9">[</span><span·class="n">File</span><span·class="p">,</span><span·class="s">&quot;.BUPTMP&quot;</span><span·class="p"·data-group-id="9547212116-9">]</span><span·class="p"·data-group-id="9547[·...·truncated·by·diffoscope;·len:·6,·SHA:·70afea53e602490935d3dac6eb5fe5dfb87609e25a250f518c5bc46abe246df0·...·]-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="1234945409-10">(</span><span·class="n">Tmp</span><span·class="p"·data-group-id="1234945409-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="9547212116-10">(</span><span·class="n">Tmp</span><span·class="p"·data-group-id="9547212116-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="1234945409-11">(</span><span·class="p"·data-group-id="1234945409-12">[</span><span·class="p"·data-group-id="1234945409-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:·09861f6a88cb7040514a62173ff215d5c06252ee7cc49f23c475c0b1b48bf0b5·...·]-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="9547212116-11">(</span><span·class="p"·data-group-id="9547212116-12">[</span><span·class="p"·data-group-id="9547212116-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:·7dd8e9a10ef67f23f548ffe9df0c40f660773834be46d613b25de57be92f3b66·...·]-13">}</span><span·class="p">,</span><span·class="w">
188 ························</span><span·class="p"·data-group-id="1234945409-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="1234945409-15">}</span><span·class="p">,</span><span·class="w">188 ························</span><span·class="p"·data-group-id="9547212116-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="9547212116-15">}</span><span·class="p">,</span><span·class="w">
189 ························</span><span·class="p"·data-group-id="1234945409-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="1234945409-16">}</span><span·class="p">,</span><span·class="w">189 ························</span><span·class="p"·data-group-id="9547212116-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="9547212116-16">}</span><span·class="p">,</span><span·class="w">
190 ························</span><span·class="p"·data-group-id="1234945409-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="1234945409-18">(</span><span·class="p"·data-group-id="1234945409-18">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·6eb0d19bc24ed872d89c077a839d264431473f244c2fbcc665382a53ed5da5a1·...·]-11">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">190 ························</span><span·class="p"·data-group-id="9547212116-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="9547212116-18">(</span><span·class="p"·data-group-id="9547212116-18">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·08fcac2fe935038f7d6e832110ba996e52bdcf521c33f58770f51353fdb9605c·...·]-11">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
191 ········</span><span·class="p"·data-group-id="1234945409-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="1234945409-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">191 ········</span><span·class="p"·data-group-id="9547212116-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="9547212116-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
192 ············</span><span·class="p"·data-group-id="1234945409-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="1234945409-21">{</span><span·class="ss">tmp_file</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·527,·SHA:·b69c9dae12841baf74b56cf415177997b60c2bb11ebcadc731afa5e69710e856·...·]-20">}</span><span·class="p">;</span><span·class="w">192 ············</span><span·class="p"·data-group-id="9547212116-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="9547212116-21">{</span><span·class="ss">tmp_file</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·527,·SHA:·add2a8568a09e479a29e371b4f359721ca95cc3c3d4d3aa393987e48a695fb00·...·]-20">}</span><span·class="p">;</span><span·class="w">
193 ········</span><span·class="p"·data-group-id="1234945409-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="1234945409-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">193 ········</span><span·class="p"·data-group-id="9547212116-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="9547212116-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
194 ············</span><span·class="p"·data-group-id="1234945409-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="1234945409-23">}</span><span·class="w">194 ············</span><span·class="p"·data-group-id="9547212116-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="9547212116-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="1234945409-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="1234945409-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="9547212116-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="9547212116-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="1234945409-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:·b38a418ee0313fc3fcb392055c674b172dfe974f86ea60ed9f26d262becddeac·...·]-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="9547212116-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:·b93dae239c2b987d403ec9a64074bd32b754de099fcfa2f89bed05d02ba354ce·...·]-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="1234945409-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="1234945409-26">}</span><span·class="p">;</span><span·class="w">203 ············</span><span·class="p"·data-group-id="9547212116-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="9547212116-26">}</span><span·class="p">;</span><span·class="w">
204 ········</span><span·class="p"·data-group-id="1234945409-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="1234945409-27">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">204 ········</span><span·class="p"·data-group-id="9547212116-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="9547212116-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="1234945409-28">(</span><span·class="n">B</span><span·class="p"·data-group-id="1234945409-28">)</span><span·class="p">,</span><span·class="w">205 ············</span><span·class="nf">abort_write</span><span·class="p"·data-group-id="9547212116-28">(</span><span·class="n">B</span><span·class="p"·data-group-id="9547212116-28">)</span><span·class="p">,</span><span·class="w">
206 ············</span><span·class="p"·data-group-id="1234945409-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="1234945409-29">}</span><span·class="w">206 ············</span><span·class="p"·data-group-id="9547212116-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="9547212116-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="1234945409-30">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="1234945409-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="9547212116-30">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="9547212116-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="1234945409-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="1234945409-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="9547212116-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="9547212116-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="1234945409-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="1234945409-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="9547212116-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="9547212116-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="1234945409-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="1234945409-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="9547212116-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="9547212116-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="1234945409-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:·9fa2e55e8080f9cfad8e69367a01098661c92aa3cf2d4b39708cbd8a648dc2bd·...·]-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="9547212116-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:·cdd1661914a8eb17b8d79067d6fed4f90384483a7445513cb98be45be7bd8ad5·...·]-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="1234945409-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:·305d0fc43463b0ac81377e5395c206fec82adf14ba12dd5656e1b09703b5fab2·...·]-35">}</span><span·class="p">;</span><span·class="w">220 ····························</span><span·class="p"·data-group-id="9547212116-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:·97297599610620d43fc9cad542ccea96a8f3f1225401d9325c8359ebb94186df·...·]-35">}</span><span·class="p">;</span><span·class="w">
221 ························</span><span·class="p"·data-group-id="1234945409-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="1234945409-36">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">221 ························</span><span·class="p"·data-group-id="9547212116-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="9547212116-36">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
222 ····························</span><span·class="p"·data-group-id="1234945409-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="1234945409-37">}</span><span·class="w">222 ····························</span><span·class="p"·data-group-id="9547212116-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="9547212116-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="1234945409-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="1234945409-38">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">224 ················</span><span·class="p"·data-group-id="9547212116-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="9547212116-38">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
225 ····················</span><span·class="p"·data-group-id="1234945409-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="1234945409-39">}</span><span·class="w">225 ····················</span><span·class="p"·data-group-id="9547212116-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="9547212116-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="1234945409-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="1234945409-40">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">227 ········</span><span·class="p"·data-group-id="9547212116-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="9547212116-40">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 ············</span><span·class="p"·data-group-id="1234945409-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="1234945409-41">}</span><span·class="w">228 ············</span><span·class="p"·data-group-id="9547212116-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="9547212116-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="1234945409-42">(</span><span·class="n">BackupRef</span><span·class="p"·data-group-id="1234945409-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="9547212116-42">(</span><span·class="n">BackupRef</span><span·class="p"·data-group-id="9547212116-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="1234945409-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="1234945409-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="9547212116-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="9547212116-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="1234945409-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="1234945409-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="9547212116-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="9547212116-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="1234945409-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:·b1f9f2848083a70cbfd699d1359def237b97703e5faf86b9172ce1f186b3d809·...·]-45">}</span><span·class="p">;</span><span·class="w">238 ············</span><span·class="p"·data-group-id="9547212116-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:·87002d665aedc3c1cf7632847ec124e290277072e1f7932f49627ca064f07f78·...·]-45">}</span><span·class="p">;</span><span·class="w">
239 ········</span><span·class="p"·data-group-id="1234945409-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="1234945409-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">239 ········</span><span·class="p"·data-group-id="9547212116-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="9547212116-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
240 ············</span><span·class="p"·data-group-id="1234945409-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="1234945409-47">}</span><span·class="w">240 ············</span><span·class="p"·data-group-id="9547212116-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="9547212116-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="1234945409-48">(</span><span·class="ss">restore</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1234945409-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:·5aecef7e6a972a9010c29b34d4964c5fb8cee61bb79054a805b92877cc9fedbd·...·]-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="9547212116-48">(</span><span·class="ss">restore</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9547212116-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:·24de490548ba189b77b0af00a973f9fb8fd56b178a941ca22cbbf5008ad9a425·...·]-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="1234945409-50">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="1234945409-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="9547212116-50">(</span><span·class="n">OpaqueData</span><span·class="p"·data-group-id="9547212116-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="1234945409-51">(</span><span·class="n">File</span><span·class="p"·data-group-id="1234945409-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="9547212116-51">(</span><span·class="n">File</span><span·class="p"·data-group-id="9547212116-51">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
252 ········</span><span·class="p"·data-group-id="1234945409-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="1234945409-52">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">252 ········</span><span·class="p"·data-group-id="9547212116-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="9547212116-52">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
253 ············</span><span·class="p"·data-group-id="1234945409-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="1234945409-53">}</span><span·class="p">;</span><span·class="w">253 ············</span><span·class="p"·data-group-id="9547212116-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="9547212116-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="1234945409-54">(</span><span·class="p"·data-group-id="1234945409-55">[</span><span·class="p"·data-group-id="1234945409-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:·47a2d6d5459646d73ee54dc0357040c7ff7131a61b07943bb5233b7620e060cc·...·]-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="9547212116-54">(</span><span·class="p"·data-group-id="9547212116-55">[</span><span·class="p"·data-group-id="9547212116-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:·1d8730099261c7249621dc955c076f3c3b3a7e5b9d1ce7742519b2f48531448d·...·]-56">}</span><span·class="p">,</span><span·class="w">
256 ································</span><span·class="p"·data-group-id="1234945409-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="1234945409-58">(</span><span·class="p"·data-group-id="1234945409-58">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·edb272412824cf0fb9592e8fa858efcfbdda59d921e45135250875b168687e53·...·]-57">}</span><span·class="p">,</span><span·class="w">256 ································</span><span·class="p"·data-group-id="9547212116-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="9547212116-58">(</span><span·class="p"·data-group-id="9547212116-58">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·111575f303c0c216d2a067acbaae24d4f600d2f8e22fcd2b91f5462d1f7f9a50·...·]-57">}</span><span·class="p">,</span><span·class="w">
257 ································</span><span·class="p"·data-group-id="1234945409-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="1234945409-59">}</span><span·class="p">,</span><span·class="w">257 ································</span><span·class="p"·data-group-id="9547212116-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="9547212116-59">}</span><span·class="p">,</span><span·class="w">
258 ································</span><span·class="p"·data-group-id="1234945409-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="1234945409-60">}</span><span·class="p">,</span><span·class="w">258 ································</span><span·class="p"·data-group-id="9547212116-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="9547212116-60">}</span><span·class="p">,</span><span·class="w">
259 ································</span><span·class="p"·data-group-id="1234945409-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="1234945409-62">(</span><span·class="p"·data-group-id="1234945409-62">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·490c6a1cfda3c23beabe066f67a4a2dec09d63573279a8b4515eda47ac94ec73·...·]-54">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">259 ································</span><span·class="p"·data-group-id="9547212116-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="9547212116-62">(</span><span·class="p"·data-group-id="9547212116-62">)</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·d150cbd4ed295cc9c740581614ae128f970eb030505379a946c9dc53ab157440·...·]-54">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
260 ················</span><span·class="p"·data-group-id="1234945409-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="1234945409-63">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">260 ················</span><span·class="p"·data-group-id="9547212116-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="9547212116-63">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
261 ····················</span><span·class="p"·data-group-id="1234945409-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="1234945409-65">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·40f299186e461e0df7964f61c4b98f1412e28e2043678feee86b774b1a7911c4·...·]-64">}</span><span·class="p">;</span><span·class="w">261 ····················</span><span·class="p"·data-group-id="9547212116-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="9547212116-65">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·7b174e98158e6be033122be5e3e91e4539e31284da946b42fe89b62d555c78c3·...·]-64">}</span><span·class="p">;</span><span·class="w">
262 ················</span><span·class="p"·data-group-id="1234945409-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:·2b55fdda5b33b27ab61f978f83ca6c45ebbb1a44473a1e60d11503d873eba0ee·...·]-66">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">262 ················</span><span·class="p"·data-group-id="9547212116-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:·04db68842f5698309d6171f35e8066f13450dabab18b0bf429e46d978a4f7a3d·...·]-66">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
263 ····················</span><span·class="p"·data-group-id="1234945409-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="1234945409-69">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·0735ff6c4f0a9505620f5455f5c4f9dc013abdc84205beeabe8d6552e9475a09·...·]-68">}</span><span·class="p">;</span><span·class="w">263 ····················</span><span·class="p"·data-group-id="9547212116-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="9547212116-69">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·5dc388813f0374605e31d810965694dfd478c501e170f49a633cdbfd4409a3b7·...·]-68">}</span><span·class="p">;</span><span·class="w">
264 ················</span><span·class="p"·data-group-id="1234945409-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:·14b655e7fb522c3c964849d235e38ae98f9fd5bd983f3cff3bcce102f0011d3c·...·]-70">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">264 ················</span><span·class="p"·data-group-id="9547212116-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:·b0a35e0d3f3f06fad564fc31aa3b3fe62a99db157eab3634953fd88b965a2548·...·]-70">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
265 ····················</span><span·class="p"·data-group-id="1234945409-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="1234945409-72">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·7532d86c8a65ae8fa077cb51bbf344b8fc5126cc401cd90648d9fded171fb864·...·]-71">}</span><span·class="p">;</span><span·class="w">265 ····················</span><span·class="p"·data-group-id="9547212116-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="9547212116-72">{</span><span·class="ss">file</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·527,·SHA:·4ff6f12a90f551ab6875fefda3c5d11b5cb5817c86622828e8d888a49afbe231·...·]-71">}</span><span·class="p">;</span><span·class="w">
266 ················</span><span·class="p"·data-group-id="1234945409-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="1234945409-73">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">266 ················</span><span·class="p"·data-group-id="9547212116-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="9547212116-73">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
267 ····················</span><span·class="p"·data-group-id="1234945409-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="1234945409-74">}</span><span·class="w">267 ····················</span><span·class="p"·data-group-id="9547212116-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="9547212116-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/65907 bytes (22.03%) of diff not shown.
147 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.4/doc/html/mnesia_app_b.html
    
Offset 127, 262 lines modifiedOffset 127, 262 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="6088623732-1">(</span><span·class="ss">mnesia_frag</span><span·class="p"·data-group-id="6088623732-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="7155763362-1">(</span><span·class="ss">mnesia_frag</span><span·class="p"·data-group-id="7155763362-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="6088623732-2">(</span><span·class="p"·data-group-id="6088623732-3">[</span><span·class="w">135 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7155763362-2">(</span><span·class="p"·data-group-id="7155763362-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="w">·</span><span·class="ss">select</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">·</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="w">·</span><span·class="ss">select</span><span·class="p">/</span><span·class="mi">6</span><span·class="p">,</span><span·class="w">·</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="6088623732-3">]</span><span·class="p"·data-group-id="6088623732-2">)</span><span·class="p">.</span><span·class="w">144 ········</span><span·class="p"·data-group-id="7155763362-3">]</span><span·class="p"·data-group-id="7155763362-2">)</span><span·class="p">.</span><span·class="w">
  
145 </span><span·class="c1">%%·Callback·functions·which·provides·transparent</span><span·class="w">145 </span><span·class="c1">%%·Callback·functions·which·provides·transparent</span><span·class="w">
146 </span><span·class="c1">%%·access·of·fragmented·tables·from·any·activity</span><span·class="w">146 </span><span·class="c1">%%·access·of·fragmented·tables·from·any·activity</span><span·class="w">
147 </span><span·class="c1">%%·access·context.</span><span·class="w">147 </span><span·class="c1">%%·access·context.</span><span·class="w">
  
148 </span><span·class="nf">lock</span><span·class="p"·data-group-id="6088623732-4">(</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="6088623732-5">{</span><span·class="ss">table<[·...·truncated·by·diffoscope;·len:·276,·SHA:·535d251f2e89277efde589dff450d96e95aa5da8d771bd4b1e66e8f8a61cde01·...·]2-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">148 </span><span·class="nf">lock</span><span·class="p"·data-group-id="7155763362-4">(</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="7155763362-5">{</span><span·class="ss">table<[·...·truncated·by·diffoscope;·len:·276,·SHA:·e19f185371dc1bde911ae45714e4cfa1400ceab05823a90e829bf29e1c8ffd06·...·]2-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
149 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="6088623732-6">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="6088623732-6">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">149 ····</span><span·class="k">case</span><span·class="w">·</span><span·class="nf">frag_names</span><span·class="p"·data-group-id="7155763362-6">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="7155763362-6">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
150 ········</span><span·class="p"·data-group-id="6088623732-7">[</span><span·class="n">Tab</span><span·class="p"·data-group-id="6088623732-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">150 ········</span><span·class="p"·data-group-id="7155763362-7">[</span><span·class="n">Tab</span><span·class="p"·data-group-id="7155763362-7">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
151 ············</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="6088623732-8">(</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="6088623732-9">{</span><span·class="ss">table<[·...·truncated·by·diffoscope;·len:·252,·SHA:·d2d15ff9334eb3faab62f3bf25c312b8e1a0a250cd0a4be775064e72cdced513·...·]2-8">)</span><span·class="p">;</span><span·class="w">151 ············</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="7155763362-8">(</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="7155763362-9">{</span><span·class="ss">table<[·...·truncated·by·diffoscope;·len:·252,·SHA:·46fcc2cbbc7d6f61d6261e231da16d303f562c91b53ab1af3038b13869f389c4·...·]2-8">)</span><span·class="p">;</span><span·class="w">
152 ········</span><span·class="n">Frags</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">152 ········</span><span·class="n">Frags</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
153 ············</span><span·class="n">DeepNs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6088623732-10">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="6088623732-11">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">[·...·truncated·by·diffoscope;·len:·389,·SHA:·e4de2d160c3282aa0826e9986f69912680b2bfbd1023ba4b886639cee2677d71·...·]2-11">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">153 ············</span><span·class="n">DeepNs</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7155763362-10">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="7155763362-11">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class="n">[·...·truncated·by·diffoscope;·len:·389,·SHA:·65513ab1ca6028ce94f1d5b03481ec4d752c09bee9eb745f4e827c5b92f487bb·...·]2-11">)</span><span·class="w">·</span><span·class="p">||</span><span·class="w">
154 ·························</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="6088623732-10">]</span><span·class="p">,</span><span·class="w">154 ·························</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="7155763362-10">]</span><span·class="p">,</span><span·class="w">
155 ············</span><span·class="nc">mnesia_lib</span><span·class="p">:</span><span·class="nf">uniq</span><span·class="p"·data-group-id="6088623732-13">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="6088623732-14">(</span><span·class="n">DeepNs</span><span·class="p"·data-group-id="6088623732-14">)</span><span·class="[·...·truncated·by·diffoscope;·len:·27,·SHA:·befdf99ca6c7270277326c9d3fec37a14476df17a0a065fb53399621c868917c·...·]2-13">)</span><span·class="w">155 ············</span><span·class="nc">mnesia_lib</span><span·class="p">:</span><span·class="nf">uniq</span><span·class="p"·data-group-id="7155763362-13">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="7155763362-14">(</span><span·class="n">DeepNs</span><span·class="p"·data-group-id="7155763362-14">)</span><span·class="[·...·truncated·by·diffoscope;·len:·27,·SHA:·9350c29814efa38ac4b4dd073787a0dbd66e1a94df2575f454e44237950b1aab·...·]2-13">)</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">lock</span><span·class="p"·data-group-id="6088623732-15">(</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:·75,·SHA:·2674f502e7f32ee901810a585d7106a0da85a0bd5f65840e29c1eabc8e425cc1·...·]2-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">157 </span><span·class="nf">lock</span><span·class="p"·data-group-id="7155763362-15">(</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:·75,·SHA:·139bf11d9a47d07c070c28591c4c3880fb963c66ebbfdfb0988cbb3b629f4fde·...·]2-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
158 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="6088623732-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">LockItem</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·75,·SHA:·2674f502e7f32ee901810a585d7106a0da85a0bd5f65840e29c1eabc8e425cc1·...·]2-16">)</span><span·class="p">.</span><span·class="w">158 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="7155763362-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">LockItem</span><span·class="p">,</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·75,·SHA:·139bf11d9a47d07c070c28591c4c3880fb963c66ebbfdfb0988cbb3b629f4fde·...·]2-16">)</span><span·class="p">.</span><span·class="w">
  
159 </span><span·class="nf">write</span><span·class="p"·data-group-id="6088623732-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:·144,·SHA:·01c8a5599c209fafcdc08582d0408a4aa46cc6aa570103e21df68580d4b6f6bd·...·]2-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">159 </span><span·class="nf">write</span><span·class="p"·data-group-id="7155763362-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:·144,·SHA:·1f07db69246b5011d5a905aa9a129299c4fb323b2f9cf61cb01fb64db21aefaf·...·]2-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
160 ····</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="6088623732-18">(</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="6088623732-18">)</span><span·class="p">,</span><span·class="w">160 ····</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="7155763362-18">(</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="7155763362-18">)</span><span·class="p">,</span><span·class="w">
161 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="6088623732-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:·145,·SHA:·1b303e08561eb61ffc8a9ce63fa12f6264e6ccfefa8029e6928800738738b7df·...·]2-19">)</span><span·class="p">.</span><span·class="w">161 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="7155763362-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:·145,·SHA:·adb347a524979daf31b76eba054d9abecf5d697dc49473d2f1e898a3d1123f74·...·]2-19">)</span><span·class="p">.</span><span·class="w">
  
162 </span><span·class="nf">delete</span><span·class="p"·data-group-id="6088623732-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:·144,·SHA:·d24513645404ee6d3149ed972bb8675f21bcfaf094645c575b3aad4f2c41bc28·...·]2-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">162 </span><span·class="nf">delete</span><span·class="p"·data-group-id="7155763362-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:·144,·SHA:·2ca54ba15fa5fd3d175bd807ec5bab8bff44b9e75b2c586f5f2b5981b02b8f4d·...·]2-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
163 ····</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="6088623732-21">(</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="6088623732-21">)</span><span·class="p">,</span><span·class="w">163 ····</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="7155763362-21">(</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="7155763362-21">)</span><span·class="p">,</span><span·class="w">
164 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="6088623732-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:·145,·SHA:·b2f92c0c4d6c8a54bb0118fcae8cad66edd8c04c91070c73fb5404a6e5832001·...·]2-22">)</span><span·class="p">.</span><span·class="w">164 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">delete</span><span·class="p"·data-group-id="7155763362-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:·145,·SHA:·cb5d4aad58abefa6c7c0ea865eab5218559b1bac19f0d033cbcb7876327cbef1·...·]2-22">)</span><span·class="p">.</span><span·class="w">
  
165 </span><span·class="nf">delete_object</span><span·class="p"·data-group-id="6088623732-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:·144,·SHA:·01c8a5599c209fafcdc08582d0408a4aa46cc6aa570103e21df68580d4b6f6bd·...·]2-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">165 </span><span·class="nf">delete_object</span><span·class="p"·data-group-id="7155763362-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:·144,·SHA:·1f07db69246b5011d5a905aa9a129299c4fb323b2f9cf61cb01fb64db21aefaf·...·]2-23">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
166 ····</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="6088623732-24">(</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="6088623732-24">)</span><span·class="p">,</span><span·class="w">166 ····</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="7155763362-24">(</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="7155763362-24">)</span><span·class="p">,</span><span·class="w">
167 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">delete_object</span><span·class="p"·data-group-id="6088623732-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:·145,·SHA:·1b303e08561eb61ffc8a9ce63fa12f6264e6ccfefa8029e6928800738738b7df·...·]2-25">)</span><span·class="p">.</span><span·class="w">167 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">delete_object</span><span·class="p"·data-group-id="7155763362-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:·145,·SHA:·adb347a524979daf31b76eba054d9abecf5d697dc49473d2f1e898a3d1123f74·...·]2-25">)</span><span·class="p">.</span><span·class="w">
  
168 </span><span·class="nf">read</span><span·class="p"·data-group-id="6088623732-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:·144,·SHA:·d24513645404ee6d3149ed972bb8675f21bcfaf094645c575b3aad4f2c41bc28·...·]2-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">168 </span><span·class="nf">read</span><span·class="p"·data-group-id="7155763362-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:·144,·SHA:·2ca54ba15fa5fd3d175bd807ec5bab8bff44b9e75b2c586f5f2b5981b02b8f4d·...·]2-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
169 ····</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="6088623732-27">(</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="6088623732-27">)</span><span·class="p">,</span><span·class="w">169 ····</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="7155763362-27">(</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="7155763362-27">)</span><span·class="p">,</span><span·class="w">
170 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="6088623732-28">(</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:·145,·SHA:·b2f92c0c4d6c8a54bb0118fcae8cad66edd8c04c91070c73fb5404a6e5832001·...·]2-28">)</span><span·class="p">.</span><span·class="w">170 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">read</span><span·class="p"·data-group-id="7155763362-28">(</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:·145,·SHA:·cb5d4aad58abefa6c7c0ea865eab5218559b1bac19f0d033cbcb7876327cbef1·...·]2-28">)</span><span·class="p">.</span><span·class="w">
  
171 </span><span·class="nf">match_object</span><span·class="p"·data-group-id="6088623732-29">(</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:·148,·SHA:·0c38474a53eaf44c9cdf7dc0dcc9f5d546dd3fb44390ac40e455d429e3068c9a·...·]2-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">171 </span><span·class="nf">match_object</span><span·class="p"·data-group-id="7155763362-29">(</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:·148,·SHA:·a95bf7ca48c6eb26555d343dae6234d07b6a73bac544cc437ecfb678b5befd09·...·]2-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
172 ····</span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6088623732-30">[</span><span·class="p"·data-group-id="6088623732-31">{</span><span·class="n">HeadPat</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6088623732-32">[</span><span·class="p"·data-group-id="6088623732-32">][·...·truncated·by·diffoscope;·len:·293,·SHA:·1375b732052997843b89c2e8d7b48ec92f5280c0ad63210ff9c0cbda93d06758·...·]2-30">]</span><span·class="p">,</span><span·class="w">172 ····</span><span·class="n">MatchSpec</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7155763362-30">[</span><span·class="p"·data-group-id="7155763362-31">{</span><span·class="n">HeadPat</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7155763362-32">[</span><span·class="p"·data-group-id="7155763362-32">][·...·truncated·by·diffoscope;·len:·293,·SHA:·28ce04df47fafc27dc4b9d6f14df909c9dc5606f5396563c7ed08d6858eb4189·...·]2-30">]</span><span·class="p">,</span><span·class="w">
173 ····</span><span·class="nf">select</span><span·class="p"·data-group-id="6088623732-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:·150,·SHA:·5e52b5bc485a80b4b76f9ec89f0c2e00453ac8a63cc47e7dba0b38d0151a1dc9·...·]2-34">)</span><span·class="p">.</span><span·class="w">173 ····</span><span·class="nf">select</span><span·class="p"·data-group-id="7155763362-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:·150,·SHA:·648234bdcc51660f270a6087c73e468d1726332d173dbd1c055a89c0b6c5adfe·...·]2-34">)</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">select</span><span·class="p"·data-group-id="6088623732-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:·150,·SHA:·5e52b5bc485a80b4b76f9ec89f0c2e00453ac8a63cc47e7dba0b38d0151a1dc9·...·]2-35">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">174 </span><span·class="nf">select</span><span·class="p"·data-group-id="7155763362-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:·150,·SHA:·648234bdcc51660f270a6087c73e468d1726332d173dbd1c055a89c0b6c5adfe·...·]2-35">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
175 ····</span><span·class="nf">do_select</span><span·class="p"·data-group-id="6088623732-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:·150,·SHA:·5e52b5bc485a80b4b76f9ec89f0c2e00453ac8a63cc47e7dba0b38d0151a1dc9·...·]2-36">)</span><span·class="p">.</span><span·class="w">175 ····</span><span·class="nf">do_select</span><span·class="p"·data-group-id="7155763362-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:·150,·SHA:·648234bdcc51660f270a6087c73e468d1726332d173dbd1c055a89c0b6c5adfe·...·]2-36">)</span><span·class="p">.</span><span·class="w">
  
  
176 </span><span·class="nf">select</span><span·class="p"·data-group-id="6088623732-37">(</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:·226,·SHA:·e66fe4186af4e47a89c4d405c6b7d8da787126f56224c83630607df58c23aef9·...·]2-37">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">176 </span><span·class="nf">select</span><span·class="p"·data-group-id="7155763362-37">(</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:·226,·SHA:·62a24e60f2b535a9c2c83f86b8fd5118a24ae44ce787a01e44396e9caaf35630·...·]2-37">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ····</span><span·class="nf">init_select</span><span·class="p"·data-group-id="6088623732-38">(</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:·226,·SHA:·e66fe4186af4e47a89c4d405c6b7d8da787126f56224c83630607df58c23aef9·...·]2-38">)</span><span·class="p">.</span><span·class="w">177 ····</span><span·class="nf">init_select</span><span·class="p"·data-group-id="7155763362-38">(</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:·226,·SHA:·62a24e60f2b535a9c2c83f86b8fd5118a24ae44ce787a01e44396e9caaf35630·...·]2-38">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">select_cont</span><span·class="p"·data-group-id="6088623732-39">(</span><span·class="p">_</span><span·class="n">Tid</span><span·class="p">,</span><span·class="p">_</span><span·class="p">,</span><span·class="p"·data-group-id="6088623732-40">{</span><span·class="ss">frag_cont</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·369,·SHA:·122b9cfebfb896f2c92ee3e53005f70bdf527f0ae5297b3eba7585a6ea167513·...·]2-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">&#39;$end_of_table&#39;</span><span·class="p">;</span><span·class="w">178 </span><span·class="nf">select_cont</span><span·class="p"·data-group-id="7155763362-39">(</span><span·class="p">_</span><span·class="n">Tid</span><span·class="p">,</span><span·class="p">_</span><span·class="p">,</span><span·class="p"·data-group-id="7155763362-40">{</span><span·class="ss">frag_cont</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·369,·SHA:·3332277525d23e49e24a60deac7cdeac6a1624049c6431043ebdbe3cb92f65d1·...·]2-39">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="ss">&#39;$end_of_table&#39;</span><span·class="p">;</span><span·class="w">
179 </span><span·class="nf">select_cont</span><span·class="p"·data-group-id="6088623732-42">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="p"·data-group-id="6088623732-43">{</span><span·class="ss">frag_cont</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·636,·SHA:·a89feb40fc0e0c16c2b6d8003717035ac49464e75bbb9598bd392f56526f8811·...·]2-42">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">179 </span><span·class="nf">select_cont</span><span·class="p"·data-group-id="7155763362-42">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="p"·data-group-id="7155763362-43">{</span><span·class="ss">frag_cont</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·636,·SHA:·b4ff197d085ca146cc51c20ef24b640d30bb538819f27dd711803a9ad74f880b·...·]2-42">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="6088623732-46">{</span><span·class="n">Spec</span><span·class="p">,</span><span·class="n">LockKind</span><span·class="p">,</span><span·class="n">Limit</span><span·class="p"·data-group-id="6088623732-46">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">180 ····</span><span·class="p"·data-group-id="7155763362-46">{</span><span·class="n">Spec</span><span·class="p">,</span><span·class="n">LockKind</span><span·class="p">,</span><span·class="n">Limit</span><span·class="p"·data-group-id="7155763362-46">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="n">Args</span><span·class="p">,</span><span·class="w">
181 ····</span><span·class="n">InitFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6088623732-47">(</span><span·class="n">FixedSpec</span><span·class="p"·data-group-id="6088623732-47">)</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">[·...·truncated·by·diffoscope;·len:·351,·SHA:·4016271e18c2f01f5a4221f367d285d1f547a721bc21fa5b4dbcc901702b785a·...·]2-48">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">181 ····</span><span·class="n">InitFun</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="7155763362-47">(</span><span·class="n">FixedSpec</span><span·class="p"·data-group-id="7155763362-47">)</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">[·...·truncated·by·diffoscope;·len:·351,·SHA:·18b279d576f2f1395b46247b04eab78d87924ee4400a64fc4baec31ca5d74f9a·...·]2-48">)</span><span·class="w">·</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
182 ····</span><span·class="n">Res</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">fun_select</span><span·class="p"·data-group-id="6088623732-49">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="n">Tab</span><span·class="p">,</span><span·class="n">Spec</span><span·class="p">,</span><span·class="n">LockKind</span><s[·...·truncated·by·diffoscope;·len:·296,·SHA:·4a0ba93c18599bfaf8f89dc72c0f45d2ac712e38e27fa0e99d64895b06b55fcd·...·]2-49">)</span><span·class="p">,</span><span·class="w">182 ····</span><span·class="n">Res</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">fun_select</span><span·class="p"·data-group-id="7155763362-49">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="n">Tab</span><span·class="p">,</span><span·class="n">Spec</span><span·class="p">,</span><span·class="n">LockKind</span><s[·...·truncated·by·diffoscope;·len:·296,·SHA:·dcf7edeab4df448b69e5fd9b1d2f75b2b8afbdc266e2426ac03a1540251a4af7·...·]2-49">)</span><span·class="p">,</span><span·class="w">
183 ····</span><span·class="nf">frag_sel_cont</span><span·class="p"·data-group-id="6088623732-50">(</span><span·class="n">Res</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Rest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Args</span><span·class="p"·data-group-id="6088623732-50">)</span><span·class="p">;</span><span·class="w">183 ····</span><span·class="nf">frag_sel_cont</span><span·class="p"·data-group-id="7155763362-50">(</span><span·class="n">Res</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Rest</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Args</span><span·class="p"·data-group-id="7155763362-50">)</span><span·class="p">;</span><span·class="w">
184 </span><span·class="nf">select_cont</span><span·class="p"·data-group-id="6088623732-51">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="p"·data-group-id="6088623732-52">{</span><span·class="ss">frag_cont</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·272,·SHA:·1aeeb36549e0bd94b5cb48616c7f3fa1056c30086b95fa160218ce467afcceeb·...·]2-51">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">184 </span><span·class="nf">select_cont</span><span·class="p"·data-group-id="7155763362-51">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="p"·data-group-id="7155763362-52">{</span><span·class="ss">frag_cont</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·272,·SHA:·068759f0acfb4f3ea3368d891590efe29d31015319e817d6ea508220c8d2483d·...·]2-51">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ····</span><span·class="nf">frag_sel_cont</span><span·class="p"·data-group-id="6088623732-53">(</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">select_cont</span><span·class="p"·data-group-id="6088623732-54">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p"[·...·truncated·by·diffoscope;·len:·232,·SHA:·3f69239456d4988b8d5a1e02daeb14a6ec9857ae6c47df1c4b288fa49c6642ed·...·]2-53">)</span><span·class="p">;</span><span·class="w">185 ····</span><span·class="nf">frag_sel_cont</span><span·class="p"·data-group-id="7155763362-53">(</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">select_cont</span><span·class="p"·data-group-id="7155763362-54">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p"[·...·truncated·by·diffoscope;·len:·232,·SHA:·5555c52f27bb129195969bd54e9b3f3e576c0492e0ec882ee0bddae22c637fa6·...·]2-53">)</span><span·class="p">;</span><span·class="w">
186 </span><span·class="nf">select_cont</span><span·class="p"·data-group-id="6088623732-55">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="n">Else</span><span·class="p"·data-group-id="6088623732-55">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">186 </span><span·class="nf">select_cont</span><span·class="p"·data-group-id="7155763362-55">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="n">Else</span><span·class="p"·data-group-id="7155763362-55">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
187 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">select_cont</span><span·class="p"·data-group-id="6088623732-56">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="n">Else</span><span·class="p"·data-group-id="6088623732-56">)</span><span·class="p">.</span><span·class="w">187 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">select_cont</span><span·class="p"·data-group-id="7155763362-56">(</span><span·class="n">Tid</span><span·class="p">,</span><span·class="n">Ts</span><span·class="p">,</span><span·class="n">Else</span><span·class="p"·data-group-id="7155763362-56">)</span><span·class="p">.</span><span·class="w">
  
188 </span><span·class="nf">all_keys</span><span·class="p"·data-group-id="6088623732-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">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·70,·SHA:·f814feef8331ccdb879184ab38a0a1ef6be3b7d0e3db72b7064a8192d5040547·...·]2-57">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">188 </span><span·class="nf">all_keys</span><span·class="p"·data-group-id="7155763362-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">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·70,·SHA:·06411a14097c54fb3b37781e608198fb6132481189a6071020993b12b28da5dd·...·]2-57">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
189 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6088623732-58">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">all_keys</span><span·class="p"·data-group-id="6088623732-59">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·211,·SHA:·942cd740c9e5fc343599ae27f89c4aa8e3dcf0f5f3e0538ccd5ce6b8139ba08c·...·]2-59">)</span><span·class="w">189 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7155763362-58">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">all_keys</span><span·class="p"·data-group-id="7155763362-59">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·211,·SHA:·15d0ca14402100a24dd198df3888b70bfabffb269ace2722a394ecfaa717f255·...·]2-59">)</span><span·class="w">
190 ·············</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="6088623732-60">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="6088623732-60">)</span><span·class="p"·data-group-id="6088623732-58">]</span><span·class="p">,</span><span·class="w">190 ·············</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="7155763362-60">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="7155763362-60">)</span><span·class="p"·data-group-id="7155763362-58">]</span><span·class="p">,</span><span·class="w">
191 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="6088623732-61">(</span><span·class="n">Match</span><span·class="p"·data-group-id="6088623732-61">)</span><span·class="p">.</span><span·class="w">191 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="7155763362-61">(</span><span·class="n">Match</span><span·class="p"·data-group-id="7155763362-61">)</span><span·class="p">.</span><span·class="w">
  
192 </span><span·class="nf">clear_table</span><span·class="p"·data-group-id="6088623732-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">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·65,·SHA:·9aed1b831ef2aebff073ad346c31262b0a3a29421ccb3668c848994c8bc8b5cd·...·]2-62">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">192 </span><span·class="nf">clear_table</span><span·class="p"·data-group-id="7155763362-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">Tab</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·65,·SHA:·7e927633e863b0caf70b1c21b2841c8647fe42e61cfb7c37b9d6b0955d45c0cd·...·]2-62">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
193 ····</span><span·class="p"·data-group-id="6088623732-63">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">clear_table</span><span·class="p"·data-group-id="6088623732-64">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·608,·SHA:·292eb82f2442074b71d9bfcdef736db76b29190bdc7da7309609653e25f68649·...·]2-63">]</span><span·class="p">,</span><span·class="w">193 ····</span><span·class="p"·data-group-id="7155763362-63">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">clear_table</span><span·class="p"·data-group-id="7155763362-64">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·608,·SHA:·9a5be9a377d2beb225659fe0860903a3c5d71deb0aa1e13b765754811d46a15d·...·]2-63">]</span><span·class="p">,</span><span·class="w">
194 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">194 ····</span><span·class="ss">ok</span><span·class="p">.</span><span·class="w">
  
195 </span><span·class="nf">index_match_object</span><span·class="p"·data-group-id="6088623732-66">(</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:·219,·SHA:·192151bcecc50a54fb01c479a75f42a4daf7047f195babddf211be2d1dcd4369·...·]2-66">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">195 </span><span·class="nf">index_match_object</span><span·class="p"·data-group-id="7155763362-66">(</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:·219,·SHA:·b8a496f3394db68ec0f53fb04a2ee5533b94e88afd53393cec6afba74a7cd8d5·...·]2-66">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
196 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">196 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
197 ········</span><span·class="p"·data-group-id="6088623732-67">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_match_object</span><span·class="p"·data-group-id="6088623732-68">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·370,·SHA:·08c6cc4e02803a5915d7987d71fb886f661c50b25d01cebd02632b750910c2dc·...·]2-68">)</span><span·class="w">197 ········</span><span·class="p"·data-group-id="7155763362-67">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_match_object</span><span·class="p"·data-group-id="7155763362-68">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·370,·SHA:·d12a3da3c655871d367887fe240f3d3b985fbe80d8b9e3ee074704c92062bf47·...·]2-68">)</span><span·class="w">
198 ·········</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="6088623732-69">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="6088623732-69">)</span><span·class="p"·data-group-id="6088623732-67">]</span><span·class="p">,</span><span·class="w">198 ·········</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="7155763362-69">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="7155763362-69">)</span><span·class="p"·data-group-id="7155763362-67">]</span><span·class="p">,</span><span·class="w">
199 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="6088623732-70">(</span><span·class="n">Match</span><span·class="p"·data-group-id="6088623732-70">)</span><span·class="p">.</span><span·class="w">199 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="7155763362-70">(</span><span·class="n">Match</span><span·class="p"·data-group-id="7155763362-70">)</span><span·class="p">.</span><span·class="w">
  
200 </span><span·class="nf">index_read</span><span·class="p"·data-group-id="6088623732-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:·219,·SHA:·35d3666f2ab52874f82c09e2e68d61d6f564b5db581bd378a0f0aaf440a9713d·...·]2-71">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">200 </span><span·class="nf">index_read</span><span·class="p"·data-group-id="7155763362-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:·219,·SHA:·a80c0264637b04187fe1ae5c128b5d417efeb4e0273cc999f245d11c301b1615·...·]2-71">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
201 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">201 ····</span><span·class="n">Match</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
202 ········</span><span·class="p"·data-group-id="6088623732-72">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_read</span><span·class="p"·data-group-id="6088623732-73">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·362,·SHA:·1e68d8688edca6e7f72938234ac1738d8f02d82b4aff605261f53ffd41e141c7·...·]2-73">)</span><span·class="w">202 ········</span><span·class="p"·data-group-id="7155763362-72">[</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">index_read</span><span·class="p"·data-group-id="7155763362-73">(</span><span·class="n">ActivityId</span><span·class="p">,</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·362,·SHA:·f3f1025d2378cff7c75db76868bbf3e16544c94056058bfa5ae146c71aabcabd·...·]2-73">)</span><span·class="w">
203 ·········</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="6088623732-74">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="6088623732-74">)</span><span·class="p"·data-group-id="6088623732-72">]</span><span·class="p">,</span><span·class="w">203 ·········</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="7155763362-74">(</span><span·class="n">Tab</span><span·class="p"·data-group-id="7155763362-74">)</span><span·class="p"·data-group-id="7155763362-72">]</span><span·class="p">,</span><span·class="w">
204 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="6088623732-75">(</span><span·class="n">Match</span><span·class="p"·data-group-id="6088623732-75">)</span><span·class="p">.</span><span·class="w">204 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">append</span><span·class="p"·data-group-id="7155763362-75">(</span><span·class="n">Match</span><span·class="p"·data-group-id="7155763362-75">)</span><span·class="p">.</span><span·class="w">
  
205 </span><span·class="nf">foldl</span><span·class="p"·data-group-id="6088623732-76">(</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:·fc65bdf9d73447400a24c24b0c91a3275a9b709c3ff8b19b31798eb02cb4ea47·...·]2-76">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">205 </span><span·class="nf">foldl</span><span·class="p"·data-group-id="7155763362-76">(</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:·56d6d11daba802b571bb514f052080541ab46fcfb7aa4257dbddf1ccfee22118·...·]2-76">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ····</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="6088623732-77">(</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="6088623732-77">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">206 ····</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="7155763362-77">(</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="7155763362-77">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
207 ···················</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="6088623732-78">(</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:·217,·SHA:·d5c06b5781fcbdf7bd1cc811dac3b9615843d5539eb0e886868e870bf0f54caa·...·]2-78">)</span><span·class="w">207 ···················</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="7155763362-78">(</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:·217,·SHA:·db84958e780b0886d2b09a0b93ee444c74178ed88c6560d44650ff8a6be8d703·...·]2-78">)</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="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="6088623732-79">(</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="6088623732-80">(</s[·...·truncated·by·diffoscope;·len:·124,·SHA:·ecbc901406b7764cb006a2efc0ea21a6587635c8ba329c9e0ea74fa6e39844e0·...·]2-79">)</span><span·class="p">.</span><span·class="w">209 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="7155763362-79">(</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="7155763362-80">(</s[·...·truncated·by·diffoscope;·len:·124,·SHA:·d7d3d34077ff11549f8978171ed13deb12c538824d98cfa79b894e862091c31d·...·]2-79">)</span><span·class="p">.</span><span·class="w">
  
210 </span><span·class="nf">foldr</span><span·class="p"·data-group-id="6088623732-81">(</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:·fc65bdf9d73447400a24c24b0c91a3275a9b709c3ff8b19b31798eb02cb4ea47·...·]2-81">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 </span><span·class="nf">foldr</span><span·class="p"·data-group-id="7155763362-81">(</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:·56d6d11daba802b571bb514f052080541ab46fcfb7aa4257dbddf1ccfee22118·...·]2-81">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ····</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="6088623732-82">(</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="6088623732-82">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">211 ····</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="7155763362-82">(</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="7155763362-82">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
212 ···················</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="6088623732-83">(</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:·217,·SHA:·d5c06b5781fcbdf7bd1cc811dac3b9615843d5539eb0e886868e870bf0f54caa·...·]2-83">)</span><span·class="w">212 ···················</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="7155763362-83">(</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:·217,·SHA:·db84958e780b0886d2b09a0b93ee444c74178ed88c6560d44650ff8a6be8d703·...·]2-83">)</span><span·class="w">
213 ···········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">213 ···········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
214 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="6088623732-84">(</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="6088623732-85">(</s[·...·truncated·by·diffoscope;·len:·124,·SHA:·3d9dfe8682224e1e599c604a54e0c610434c64599712cc23e2236585d9cc688c·...·]2-84">)</span><span·class="p">.</span><span·class="w">214 ····</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldr</span><span·class="p"·data-group-id="7155763362-84">(</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="7155763362-85">(</s[·...·truncated·by·diffoscope;·len:·124,·SHA:·1bb03581e42f10574ed421492ba4c29fa02eabbc88b0b50384e4bbca894081a2·...·]2-84">)</span><span·class="p">.</span><span·class="w">
  
215 </span><span·class="nf">table_info</span><span·class="p"·data-group-id="6088623732-86">(</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="6088623732-87">{</span><span·class="n">Tab</[·...·truncated·by·diffoscope;·len:·248,·SHA:·b75accfcfe4d6dd0e13bc183184a1170594a7e97dd47880fad20e09a256b51a9·...·]2-86">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">215 </span><span·class="nf">table_info</span><span·class="p"·data-group-id="7155763362-86">(</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="7155763362-87">{</span><span·class="n">Tab</[·...·truncated·by·diffoscope;·len:·248,·SHA:·5da4a2a72a856c0598d04dfb8e8a2b5255cc9e1a978f5d2619a0a164bb7b5321·...·]2-86">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
216 ····</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="6088623732-88">(</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="6088623732-88">)</span><span·class="p">,</span><span·class="w">216 ····</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="7155763362-88">(</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="7155763362-88">)</span><span·class="p">,</span><span·class="w">
217 ····</span><span·class="nf">table_info2</span><span·class="p"·data-group-id="6088623732-89">(</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:·f450390b37562b2ee1703a0ee715e63dd5a2c1e334c5aff6a589f5fb7752187c·...·]2-89">)</span><span·class="p">;</span><span·class="w">217 ····</span><span·class="nf">table_info2</span><span·class="p"·data-group-id="7155763362-89">(</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:·c91a9703fe00a4046cf505d366570de20ca89db0c64d34691a9f02e566d29ab6·...·]2-89">)</span><span·class="p">;</span><span·class="w">
218 </span><span·class="nf">table_info</span><span·class="p"·data-group-id="6088623732-90">(</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:·0823fa439b8a562788a62a95ca07bac4225e63c74dfea25cfc83d2b107988cf2·...·]2-90">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">218 </span><span·class="nf">table_info</span><span·class="p"·data-group-id="7155763362-90">(</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:·08a8a2880e6c135d6c3c87c7a17f32c6bd5174c6e7e2fc667a9f3d8523c172d0·...·]2-90">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
219 ····</span><span·class="nf">table_info2</span><span·class="p"·data-group-id="6088623732-91">(</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:·140,·SHA:·79116690d29f50baa34fa63eaf1be8bc4744c4892b5f335eddc1c38a0ce50043·...·]2-91">)</span><span·class="p">.</span><span·class="w">219 ····</span><span·class="nf">table_info2</span><span·class="p"·data-group-id="7155763362-91">(</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:·140,·SHA:·4cd2126ebc6ed8fb8b2d781a15dc82d46a89a413373d0bed222c2749cdde337c·...·]2-91">)</span><span·class="p">.</span><span·class="w">
  
220 </span><span·class="nf">table_info2</span><span·class="p"·data-group-id="6088623732-92">(</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:·f450390b37562b2ee1703a0ee715e63dd5a2c1e334c5aff6a589f5fb7752187c·...·]2-92">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">220 </span><span·class="nf">table_info2</span><span·class="p"·data-group-id="7155763362-92">(</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:·c91a9703fe00a4046cf505d366570de20ca89db0c64d34691a9f02e566d29ab6·...·]2-92">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
221 ····</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">221 ····</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">
222 ········</span><span·class="nb">size</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">222 ········</span><span·class="nb">size</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
223 ············</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="6088623732-93">(</span><span·class="p"·data-group-id="6088623732-94">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="6088623732-94">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·88,·SHA:·d967f63c18509bcd2ec3a2089bb6a6c71d451331117ca2a93cdbf1a9c7eef947·...·]2-93">)</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">223 ············</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="7155763362-93">(</span><span·class="p"·data-group-id="7155763362-94">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="7155763362-94">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·88,·SHA:·0a8361b4e63aa95b7a2b01be75138c41598ee89dca4135b8d88c0e972fe772b8·...·]2-93">)</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">
224 ············</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="6088623732-95">(</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="6088623732-96">(</s[·...·truncated·by·diffoscope;·len:·282,·SHA:·5cb6fd47e3d741248036800405a2e3da3c3190e0ee9d0d16cd387a3c81e5f40d·...·]2-95">)</span><span·class="p">;</span><span·class="w">224 ············</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="7155763362-95">(</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="7155763362-96">(</s[·...·truncated·by·diffoscope;·len:·282,·SHA:·0ae6e824708442b74247ac623530fdc7e4115c172e65f03ce1c0058e56fb36ae·...·]2-95">)</span><span·class="p">;</span><span·class="w">
225 ········</span><span·class="nb">memory</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">225 ········</span><span·class="nb">memory</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
226 ············</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="6088623732-97">(</span><span·class="p"·data-group-id="6088623732-98">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="6088623732-98">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·88,·SHA:·d967f63c18509bcd2ec3a2089bb6a6c71d451331117ca2a93cdbf1a9c7eef947·...·]2-97">)</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">226 ············</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="7155763362-97">(</span><span·class="p"·data-group-id="7155763362-98">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Size</span><span·class="p"·data-group-id="7155763362-98">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·88,·SHA:·0a8361b4e63aa95b7a2b01be75138c41598ee89dca4135b8d88c0e972fe772b8·...·]2-97">)</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">
227 ············</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="6088623732-99">(</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="6088623732-100">([·...·truncated·by·diffoscope;·len:·286,·SHA:·487edc5525f2e7499d9022b3c4877634dd29a5c894631e643e7428e623669600·...·]2-99">)</span><span·class="p">;</span><span·class="w">227 ············</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">foldl</span><span·class="p"·data-group-id="7155763362-99">(</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="7155763362-100">([·...·truncated·by·diffoscope;·len:·286,·SHA:·6d6729cb76026b99071c264b451f790662d0b8d2872de1b9d5c6acceef72073a·...·]2-99">)</span><span·class="p">;</span><span·class="w">
228 ········</span><span·class="ss">base_table</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">228 ········</span><span·class="ss">base_table</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
229 ············</span><span·class="nf">lookup_prop</span><span·class="p"·data-group-id="6088623732-101">(</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="6088623732-101">)</span><span·class="p">;</span><span·class="w">229 ············</span><span·class="nf">lookup_prop</span><span·class="p"·data-group-id="7155763362-101">(</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="7155763362-101">)</span><span·class="p">;</span><span·class="w">
230 ········</span><span·class="ss">node_pool</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">230 ········</span><span·class="ss">node_pool</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
231 ············</span><span·class="nf">lookup_prop</span><span·class="p"·data-group-id="6088623732-102">(</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="6088623732-102">)</span><span·class="p">;</span><span·class="w">231 ············</span><span·class="nf">lookup_prop</span><span·class="p"·data-group-id="7155763362-102">(</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="7155763362-102">)</span><span·class="p">;</span><span·class="w">
Max diff block lines reached; 64794/150752 bytes (42.98%) of diff not shown.
70.6 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.4/doc/html/mnesia_app_c.html
    
Offset 127, 148 lines modifiedOffset 127, 148 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="6567542916-1">(</span><span·class="ss">mnesia_frag_hash</span><span·class="p"·data-group-id="6567542916-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="2227939575-1">(</span><span·class="ss">mnesia_frag_hash</span><span·class="p"·data-group-id="2227939575-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="6567542916-2">(</span><span·class="p"·data-group-id="6567542916-3">[</span><span·class="p"·data-group-id="6567542916-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:·05adfdb2bed54f51fe440c293dad389a26107d2cfbec146202e6124c3ee96b2d·...·]-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="2227939575-2">(</span><span·class="p"·data-group-id="2227939575-3">[</span><span·class="p"·data-group-id="2227939575-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:·ff49427de432d63df295b624575ea1b86a9c473abc100140a2421a00def5ef0b·...·]-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="6567542916-7">(</span><span·class="p"·data-group-id="6567542916-8">[</span><span·class="w">136 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="2227939575-7">(</span><span·class="p"·data-group-id="2227939575-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="6567542916-8">]</span><span·class="p"·data-group-id="6567542916-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="3187642511-1">(</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="w">142 ········</span><span·class="p"·data-group-id="2227939575-8">]</span><span·class="p"·data-group-id="2227939575-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="1605909061-1">(</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="w">
143 ····</span><span·class="p"·data-group-id="3187642511-2">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="w">143 ····</span><span·class="p"·data-group-id="1605909061-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="3187642511-2">}</span><span·class="p"·data-group-id="3187642511-1">)</span><span·class="p">.</span><span·class="w">146 ·····</span><span·class="ss">function</span><span·class="p"·data-group-id="1605909061-2">}</span><span·class="p"·data-group-id="1605909061-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="3187642511-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="3187642511-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="1605909061-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="1605909061-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="3187642511-4">(</span><span·class="p"·data-group-id="3187642511-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="1605909061-4">(</span><span·class="p"·data-group-id="1605909061-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="3187642511-5">(</span><span·class="p"·data-group-id="3187642511-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="1605909061-5">(</span><span·class="p"·data-group-id="1605909061-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="3187642511-6">(</span><span·class="p"·data-group-id="3187642511-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="1605909061-6">(</span><span·class="p"·data-group-id="1605909061-6">)</span><span·class="p">.</span><span·class="w">
152 </span><span·class="nf">init_state</span><span·class="p"·data-group-id="3187642511-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="3187642511-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="1605909061-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="1605909061-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="3187642511-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="1605909061-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="3187642511-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="1605909061-8">}</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">convert_old_state</span><span·class="p"·data-group-id="3187642511-9">(</span><span·class="p"·data-group-id="3187642511-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:·164,·SHA:·c744ec2d1b2909b6b631b00f38f91e8a45f98771240a2714474e1f952a4da231·...·]1-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="1605909061-9">(</span><span·class="p"·data-group-id="1605909061-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:·164,·SHA:·2ef3ee099e125434e01fe7a96a96d3242a15d02f3929413fa489c47d3e5567fc·...·]1-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="3187642511-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="1605909061-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="3187642511-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="1605909061-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="3187642511-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="3187642511-13">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·452,·SHA:·09c4d575640a80b821cfe1034948b2377eb8db13ad032b000bf7531940d79bf3·...·]1-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="1605909061-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="1605909061-13">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·452,·SHA:·89dca0998794c82da3f085748344cdb25ff23b0228e03a5bfc9a9a81bde4c0f7·...·]1-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="3187642511-15">(</span><span·class="p"·data-group-id="3187642511-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="1605909061-15">(</span><span·class="p"·data-group-id="1605909061-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="3187642511-16">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="3187642511-17">(</span><span·class="p"·data-group-id="3187642511-17">)</span><span·class="p"·data-group-id="3187642511-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="1605909061-16">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="1605909061-17">(</span><span·class="p"·data-group-id="1605909061-17">)</span><span·class="p"·data-group-id="1605909061-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="3187642511-18">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="3187642511-19">(</span><span·class="p"·data-group-id="3187642511-19">)</span><span·class="p"·data-group-id="3187642511-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="1605909061-18">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="1605909061-19">(</span><span·class="p"·data-group-id="1605909061-19">)</span><span·class="p"·data-group-id="1605909061-18">]</span><span·class="p">.</span><span·class="w">
168 </span><span·class="nf">add_frag</span><span·class="p"·data-group-id="3187642511-20">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="3187642511-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:·569,·SHA:·5f068aeedd096d5bf8c024dbd890ed098ab8fde8204328c69c28f620943719b6·...·]1-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="1605909061-20">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="1605909061-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:·569,·SHA:·72381a58ba528177aedf5351cb204aa3a9e4e718b498d5a372570097673933d8·...·]1-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="3187642511-22">(</span><span·class="n">L</span><span·class="p"·data-group-id="3187642511-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="1605909061-22">(</span><span·class="n">L</span><span·class="p"·data-group-id="1605909061-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="3187642511-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="1605909061-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="3187642511-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="1605909061-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="3187642511-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="1605909061-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="3187642511-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="1605909061-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="3187642511-25">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3187642511-26">[</span><span·class="n">SplitN</span><span·class="p"·data-group-id="3187642511-26">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·ed0021c176582ba8ef8069a356fc66b96b00a4de7bcd33e714dbea6ee9abf070·...·]1-25">}</span><span·class="p">;</span><span·class="w">180 ····</span><span·class="p"·data-group-id="1605909061-25">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1605909061-26">[</span><span·class="n">SplitN</span><span·class="p"·data-group-id="1605909061-26">]</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·d090ac5902258be80fb4482211cbdcb0d57665d9ca30c03191a1a77970a3b340·...·]1-25">}</span><span·class="p">;</span><span·class="w">
181 </span><span·class="nf">add_frag</span><span·class="p"·data-group-id="3187642511-28">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="3187642511-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="1605909061-28">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="1605909061-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="3187642511-29">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="3187642511-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="1605909061-29">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="1605909061-29">)</span><span·class="p">,</span><span·class="w">
183 ····</span><span·class="nf">add_frag</span><span·class="p"·data-group-id="3187642511-30">(</span><span·class="n">State</span><span·class="p"·data-group-id="3187642511-30">)</span><span·class="p">.</span><span·class="w">183 ····</span><span·class="nf">add_frag</span><span·class="p"·data-group-id="1605909061-30">(</span><span·class="n">State</span><span·class="p"·data-group-id="1605909061-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="3187642511-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="3187642511-32">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·452,·SHA:·88c6d5b1f73a0c00ce059fbd97aab89687c771867fcff06baf34a69aeaddfa87·...·]1-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="1605909061-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="1605909061-32">(</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·452,·SHA:·a57cbe793c82526589cb6ba2718dc3ffac14f42f5b0fcb4a6738d0f90158e4d3·...·]1-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="3187642511-34">(</span><span·class="p"·data-group-id="3187642511-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="1605909061-34">(</span><span·class="p"·data-group-id="1605909061-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="3187642511-35">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="3187642511-36">(</span><span·class="p"·data-group-id="3187642511-36">)</span><span·class="p"·data-group-id="3187642511-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="1605909061-35">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="1605909061-36">(</span><span·class="p"·data-group-id="1605909061-36">)</span><span·class="p"·data-group-id="1605909061-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="3187642511-37">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="3187642511-38">(</span><span·class="p"·data-group-id="3187642511-38">)</span><span·class="p"·data-group-id="3187642511-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="1605909061-37">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="1605909061-38">(</span><span·class="p"·data-group-id="1605909061-38">)</span><span·class="p"·data-group-id="1605909061-37">]</span><span·class="p">.</span><span·class="w">
190 </span><span·class="nf">del_frag</span><span·class="p"·data-group-id="3187642511-39">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="3187642511-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:·569,·SHA:·c2405f3a6c7f24ada2b07e4a69c84ad22b442e1808d22d5c2cb52d58a2e0e289·...·]1-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="1605909061-39">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="1605909061-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:·569,·SHA:·dd56d47a953608ac68f35fafd5ec375d9710ac832dd79426dc8fc379ee8e4453·...·]1-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="3187642511-41">(</span><span·class="n">L2</span><span·class="p"·data-group-id="3187642511-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="1605909061-41">(</span><span·class="n">L2</span><span·class="p"·data-group-id="1605909061-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="3187642511-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="1605909061-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="3187642511-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="1605909061-42">}</span><span·class="p">,</span><span·class="w">
199 ············</span><span·class="p"·data-group-id="3187642511-43">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3187642511-44">[</span><span·class="n">N</span><span·class="p"·data-group-id="3187642511-44">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·201,·SHA:·7c197ba96188e8943c0091545c96b7ce2e2e55aa9065c0119aaf05095bbef8b7·...·]1-43">}</span><span·class="p">;</span><span·class="w">199 ············</span><span·class="p"·data-group-id="1605909061-43">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1605909061-44">[</span><span·class="n">N</span><span·class="p"·data-group-id="1605909061-44">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·201,·SHA:·f45b20a662963b076a2b7af7e5b3ef3334b2ab76dde07663451334ede4bfe776·...·]1-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="3187642511-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="1605909061-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="3187642511-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="1605909061-46">}</span><span·class="p">,</span><span·class="w">
204 ············</span><span·class="p"·data-group-id="3187642511-47">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3187642511-48">[</span><span·class="n">N</span><span·class="p"·data-group-id="3187642511-48">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·201,·SHA:·90f3e9c5d8f1a9792ae3f8fad88d5aba4ecc48f8b01e5bed74efcada600e9312·...·]1-47">}</span><span·class="w">204 ············</span><span·class="p"·data-group-id="1605909061-47">{</span><span·class="n">State2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1605909061-48">[</span><span·class="n">N</span><span·class="p"·data-group-id="1605909061-48">]</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·201,·SHA:·c7cdc45c8a8221df9382880790b8f72cf1eb04d77a7fbcc6f8f222cc065c76e2·...·]1-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="3187642511-50">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="3187642511-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="1605909061-50">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="1605909061-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="3187642511-51">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="3187642511-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="1605909061-51">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="1605909061-51">)</span><span·class="p">,</span><span·class="w">
208 ····</span><span·class="nf">del_frag</span><span·class="p"·data-group-id="3187642511-52">(</span><span·class="n">State</span><span·class="p"·data-group-id="3187642511-52">)</span><span·class="p">.</span><span·class="w">208 ····</span><span·class="nf">del_frag</span><span·class="p"·data-group-id="1605909061-52">(</span><span·class="n">State</span><span·class="p"·data-group-id="1605909061-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="3187642511-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="3187642511-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="1605909061-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="1605909061-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="3187642511-54">(</span><span·class="p"·data-group-id="3187642511-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="1605909061-54">(</span><span·class="p"·data-group-id="1605909061-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="3187642511-55">(</span><span·class="p"·data-group-id="3187642511-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="1605909061-55">(</span><span·class="p"·data-group-id="1605909061-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="3187642511-56">(</span><span·class="p"·data-group-id="3187642511-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="1605909061-56">(</span><span·class="p"·data-group-id="1605909061-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="3187642511-57">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="3187642511-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:·536,·SHA:·bbdc5d4b1c2c8cf366c61e599613af7338fa28f95b0a7df69054aabf3ebbb08b·...·]1-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="1605909061-57">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="1605909061-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:·536,·SHA:·c431215e100d828e26a590b6164d9dcf931e5317a417ccbf4445ea6e3aa464d5·...·]1-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="3187642511-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="3187642511-60">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·140,·SHA:·0bc93013278010a3688114b5fd9c4b7679c0b1b93c7cc57c2ef5932ddde90994·...·]1-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="1605909061-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="1605909061-60">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·140,·SHA:·6161f2c0aa3331270b819a52e7010e289a2974e0a703e23fb5d4948c431d97d2·...·]1-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="3187642511-61">(</span><span·class="n">L</span><span·class="p"·data-group-id="3187642511-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="1605909061-61">(</span><span·class="n">L</span><span·class="p"·data-group-id="1605909061-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="3187642511-62">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="3187642511-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:·537,·SHA:·d3dade4cc4d431e02b3cde0b3db4d95281c3bf82ca6fb360543469c944d432d0·...·]1-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="1605909061-62">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="1605909061-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:·537,·SHA:·aca495253b9b5a2ca4863cf8ff9fa5d0eb4bb78f3005c666512279ffbefeff3f·...·]1-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="3187642511-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="3187642511-65">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·140,·SHA:·7d76d9173beb1a12b472e34a2e1a25652e044ea00afd5ec97d49c51fbeed522f·...·]1-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="1605909061-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="1605909061-65">(</span><span·class="n">L</span><span·class="w">·</span><span·class="o">+</span><sp[·...·truncated·by·diffoscope;·len:·140,·SHA:·95896f13f152939a5f678a53ca8a7d654ac2bd16348073063d61d38e7056b724·...·]1-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="3187642511-66">(</span><span·class="n">L</span><span·class="p"·data-group-id="3187642511-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="1605909061-66">(</span><span·class="n">L</span><span·class="p"·data-group-id="1605909061-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="3187642511-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="3187642511-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="1605909061-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="1605909061-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="3187642511-68">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="3187642511-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="1605909061-68">(</span><span·class="n">OldState</span><span·class="p"·data-group-id="1605909061-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="3187642511-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="3187642511-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="1605909061-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="1605909061-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="3187642511-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="3187642511-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="1605909061-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="1605909061-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="3187642511-71">(</span><span·class="p"·data-group-id="3187642511-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="1605909061-71">(</span><span·class="p"·data-group-id="1605909061-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="3187642511-72">(</span><span·class="p"·data-group-id="3187642511-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="1605909061-72">(</span><span·class="p"·data-group-id="1605909061-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="3187642511-73">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="3187642511-74">(</span><span·class="p"·data-group-id="3187642511-74">)</span><span·class="p"·data-group-id="3187642511-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="1605909061-73">[</span><span·class="nf">integer</span><span·class="p"·data-group-id="1605909061-74">(</span><span·class="p"·data-group-id="1605909061-74">)</span><span·class="p"·data-group-id="1605909061-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="3187642511-75">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="3187642511-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:·284,·SHA:·7dbc59e60ec7bcf6ead688856b706a0449fcf49cf200dddca445dd11a2d962ab·...·]1-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="1605909061-75">(</span><span·class="o">#</span><span·class="ss">hash_state</span><span·class="p"·data-group-id="1605909061-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:·284,·SHA:·e872ed28de563a2435d4f2ea6ad1a81941d4b90cbed1fd8501a720ecde7ce778·...·]1-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="3187642511-77">[</span><span·class="p"·data-group-id="3187642511-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:·554,·SHA:·97cef2adfbf67d5cb8070e53d34ba96a9ca33ec6f7a8299366566e872a6cfc70·...·]1-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="1605909061-77">[</span><span·class="p"·data-group-id="1605909061-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:·554,·SHA:·9ebc237de577f00383e027656912eec7231d7478bf4bdb994cf05a82079a4da1·...·]1-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="3187642511-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="3187642511-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="1605909061-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="1605909061-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="3187642511-82">(</span><span·class="n">KeyPat</span><span·class="p"·data-group-id="3187642511-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="1605909061-82">(</span><span·class="n">KeyPat</span><span·class="p"·data-group-id="1605909061-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="3187642511-83">[</span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="3187642511-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="3[·...·truncated·by·diffoscope;·len:·62,·SHA:·e4b084f788153e16881104bba4c1b20f555d6fa59320b11a09208be0e145001b·...·]1-83">]</span><span·class="p">;</span><span·class="w">244 ····················</span><span·class="p"·data-group-id="1605909061-83">[</span><span·class="nf">key_to_frag_number</span><span·class="p"·data-group-id="1605909061-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="1[·...·truncated·by·diffoscope;·len:·62,·SHA:·dafb8d9b21c768b6460d211410da62e036c6b51de2aca694c3c2ff8676f7c65d·...·]1-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; 4791/72100 bytes (6.64%) of diff not shown.
161 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.4/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="c1">%·erl·-mnesia·dir·&#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="c1">%·erl·-mnesia·dir·&#39;&quot;/tmp/funky&quot;&#39;</span><span·class="w">
140 </span><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="2813887474-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.1</span><span·class="p">.</span><span·class="mi">2</span><span·class="p"·data-group-id="2813887474-1">]</span><span·class="w">140 </span><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="7200994928-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.1</span><span·class="p">.</span><span·class="mi">2</span><span·class="p"·data-group-id="7200994928-1">]</span><span·class="w">
  
141 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V15</span><span·class="p">.</span><span·class="mf">1.2</span><span·class="w">·</span><span·class="p"·data-group-id="2813887474-2">(</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:·cf118e404433319c7893bcde96e1b4e131bb4398efa125139a8e21b343036a4c·...·]-2">)</span><span·class="gp·unselectable">141 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V15</span><span·class="p">.</span><span·class="mf">1.2</span><span·class="w">·</span><span·class="p"·data-group-id="7200994928-2">(</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:·35e0fb8f527cf962444f8304c3767809ea071f87cac1dfe8424287785e874baf·...·]-2">)</span><span·class="gp·unselectable">
142 1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="2813887474-4">(</span><span·class="p"·data-group-id="2813887474-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="2813887474-6">(</span><span·class="p"·data-group-id="2813887474-6">)</span><span·class="p"·data-group-id="2813887474-5">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·0378f80daf39dc9bd27bc4e645013587417a4ca805757b9774c4d41126ec8d13·...·]-4">)</span><span·class="p">.</span><span·class="w">142 1&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_schema</span><span·class="p"·data-group-id="7200994928-4">(</span><span·class="p"·data-group-id="7200994928-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="7200994928-6">(</span><span·class="p"·data-group-id="7200994928-6">)</span><span·class="p"·data-group-id="7200994928-5">]<[·...·truncated·by·diffoscope;·len:·47,·SHA:·0f076211d2136b3b13e10e883b0ed78225367d10c51599f920a3db5c64558c2f·...·]-4">)</span><span·class="p">.</span><span·class="w">
143 </span><span·class="ss">ok</span><span·class="gp·unselectable">143 </span><span·class="ss">ok</span><span·class="gp·unselectable">
144 2&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="2813887474-7">(</span><span·class="p"·data-group-id="2813887474-7">)</span><span·class="p">.</span><span·class="w">144 2&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="7200994928-7">(</span><span·class="p"·data-group-id="7200994928-7">)</span><span·class="p">.</span><span·class="w">
145 </span><span·class="ss">ok</span><span·class="gp·unselectable">145 </span><span·class="ss">ok</span><span·class="gp·unselectable">
146 3&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="2813887474-8">(</span><span·class="ss">funky</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2813887474-9">[</span><span·class="p"·data-group-id="2813887474-9">]</span><span·class="p"·data-group-id="2813887474-8">)</span><span·class="p">.</span><span·class="w">146 3&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">create_table</span><span·class="p"·data-group-id="7200994928-8">(</span><span·class="ss">funky</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7200994928-9">[</span><span·class="p"·data-group-id="7200994928-9">]</span><span·class="p"·data-group-id="7200994928-8">)</span><span·class="p">.</span><span·class="w">
147 </span><span·class="p"·data-group-id="2813887474-10">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2813887474-10">}</span><span·class="gp·unselectable">147 </span><span·class="p"·data-group-id="7200994928-10">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="7200994928-10">}</span><span·class="gp·unselectable">
148 4&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">info</span><span·class="p"·data-group-id="2813887474-11">(</span><span·class="p"·data-group-id="2813887474-11">)</span><span·class="p">.</span><span·class="w">148 4&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">info</span><span·class="p"·data-group-id="7200994928-11">(</span><span·class="p"·data-group-id="7200994928-11">)</span><span·class="p">.</span><span·class="w">
149 </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">·149 </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">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">·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">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">Participant</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">·151 </span><span·class="o">--</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Participant</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">Coordinator</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">Coordinator</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">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">·153 </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">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">·154 </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="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">305</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">155 </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">305</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">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">533</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">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">533</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="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;4.23.2&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">157 </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;4.23.2&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="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">158 </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">use</span><span·class="w">·</span><span·class="ss">fallback</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">159 </span><span·class="ss">use</span><span·class="w">·</span><span·class="ss">fallback</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">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="2813887474-12">[</span><span·class="ss">nonode@nohost</span><span·class="p"·data-group-id="2813887474-12">]</span><span·class="w">160 </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="7200994928-12">[</span><span·class="ss">nonode@nohost</span><span·class="p"·data-group-id="7200994928-12">]</span><span·class="w">
161 </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="2813887474-13">[</span><span·class="p"·data-group-id="2813887474-13">]</span><span·class="w">161 </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="7200994928-13">[</span><span·class="p"·data-group-id="7200994928-13">]</span><span·class="w">
162 </span><span·class="ss">master</span><span·class="w">·</span><span·class="nb">node</span><span·class="w">·</span><span·class="ss">tables</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2813887474-14">[</span><span·class="p"·data-group-id="2813887474-14">]</span><span·class="w">162 </span><span·class="ss">master</span><span·class="w">·</span><span·class="nb">node</span><span·class="w">·</span><span·class="ss">tables</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7200994928-14">[</span><span·class="p"·data-group-id="7200994928-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="2813887474-15">[</span><span·class="p"·data-group-id="2813887474-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="7200994928-15">[</span><span·class="p"·data-group-id="7200994928-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="2813887474-16">[</span><span·class="ss">funky</span><span·class="p"·data-group-id="2813887474-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="7200994928-16">[</span><span·class="ss">funky</span><span·class="p"·data-group-id="7200994928-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="2813887474-17">[</span><span·class="ss">schema</span><span·class="p"·data-group-id="2813887474-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="7200994928-17">[</span><span·class="ss">schema</span><span·class="p"·data-group-id="7200994928-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="2813887474-18">[</span><span·class="p"·data-group-id="2813887474-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="7200994928-18">[</span><span·class="p"·data-group-id="7200994928-18">]</span><span·class="w">
167 </span><span·class="p"·data-group-id="2813887474-19">[</span><span·class="p"·data-group-id="2813887474-20">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">disc_copies</span><span·class="p"·data-group-id="2813887474-20">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·222,·SHA:·aa0f8391ba6fac8c3214c3f8368718577698f688f4e1c7b1d70951abd2d39507·...·]-21">]</span><span·class="w">167 </span><span·class="p"·data-group-id="7200994928-19">[</span><span·class="p"·data-group-id="7200994928-20">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">disc_copies</span><span·class="p"·data-group-id="7200994928-20">}</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·222,·SHA:·c0eccba4faad1a9fe12ea826d020b9589d5f4302229e823f0501003119537a9c·...·]-21">]</span><span·class="w">
168 </span><span·class="p"·data-group-id="2813887474-22">[</span><span·class="p"·data-group-id="2813887474-23">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">ram_copies</span><span·class="p"·data-group-id="2813887474-23">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·220,·SHA:·73ea26fe89a78a306131e837a217267ef05152d39b1f9149be17dd35e7c6275c·...·]-24">]</span><span·class="w">168 </span><span·class="p"·data-group-id="7200994928-22">[</span><span·class="p"·data-group-id="7200994928-23">{</span><span·class="ss">nonode@nohost</span><span·class="p">,</span><span·class="ss">ram_copies</span><span·class="p"·data-group-id="7200994928-23">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·220,·SHA:·ff24b3d0e14f2f0294e810dc7f249d7a097da369ceccbb48bc274def262c1b06·...·]-24">]</span><span·class="w">
169 </span><span·class="mi">3</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">2</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">3</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">2</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="2813887474-25">[</span><span·class="p"·data-group-id="2813887474-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="7200994928-25">[</span><span·class="p"·data-group-id="7200994928-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="9199818955-1">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9199818955-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="4571331662-1">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4571331662-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="9199818955-2">}</span><span·class="p"·data-group-id="9199818955-1">)</span><span·class="p">.</span><span·class="w">237 ···················</span><span·class="ss">room_no</span><span·class="p"·data-group-id="4571331662-2">}</span><span·class="p"·data-group-id="4571331662-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="9199818955-3">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9199818955-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="4571331662-3">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4571331662-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="9199818955-4">}</span><span·class="p"·data-group-id="9199818955-3">)</span><span·class="p">.</span><span·class="w">240 ···············</span><span·class="ss">name</span><span·class="p"·data-group-id="4571331662-4">}</span><span·class="p"·data-group-id="4571331662-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="9199818955-5">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9199818955-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="4571331662-5">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4571331662-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="9199818955-6">}</span><span·class="p"·data-group-id="9199818955-5">)</span><span·class="p">.</span><span·class="w">243 ··················</span><span·class="ss">number</span><span·class="p"·data-group-id="4571331662-6">}</span><span·class="p"·data-group-id="4571331662-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="9199818955-7">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9199818955-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="4571331662-7">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4571331662-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="9199818955-8">}</span><span·class="p"·data-group-id="9199818955-7">)</span><span·class="p">.</span><span·class="w">246 ··················</span><span·class="ss">dept</span><span·class="p"·data-group-id="4571331662-8">}</span><span·class="p"·data-group-id="4571331662-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="9199818955-9">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9199818955-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="4571331662-9">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4571331662-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="9199818955-10">}</span><span·class="p"·data-group-id="9199818955-9">)</span><span·class="p">.</span><span·class="w">249 ·················</span><span·class="ss">dept_id</span><span·class="p"·data-group-id="4571331662-10">}</span><span·class="p"·data-group-id="4571331662-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="9199818955-11">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9199818955-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="4571331662-11">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4571331662-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="9199818955-12">}</span><span·class="p"·data-group-id="9199818955-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="4571331662-12">}</span><span·class="p"·data-group-id="4571331662-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,·Opts)</code></a>·creates·tables.253 <a·href="mnesia.html#create_table/2"><code·class="inline">mnesia:create_table(Name,·Opts)</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">Opts</code>.258 The·table·name·<code·class="inline">employee</code>·matches·the·name·for·records·specified·in·<code·class="inline">Opts</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, 52 lines modifiedOffset 263, 52 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="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="8114861149-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.1</span><span·class="p">.</span><span·class="mi">2</span><span·class="p"·data-group-id="8114861149-1">]</span><span·class="w">270 </span><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="7620378219-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.1</span><span·class="p">.</span><span·class="mi">2</span><span·class="p"·data-group-id="7620378219-1">]</span><span·class="w">
  
271 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V15</span><span·class="p">.</span><span·class="mf">1.2</span><span·class="w">·</span><span·class="p"·data-group-id="8114861149-2">(</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:·398,·SHA:·12c918b324ed65fd5f2356bb9a439d9682f4f127fedf8fffbea3e6ff3010b49b·...·]9-2">)</span><span·class="gp·unselectable">271 </span><span·class="n">Eshell</span><span·class="w">·</span><span·class="n">V15</span><span·class="p">.</span><span·class="mf">1.2</span><span·class="w">·</span><span·class="p"·data-group-id="7620378219-2">(</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:·398,·SHA:·df48eb35ae2b0f970f3bf5c40614413fe75262dad64c9955d367920b0b1bbedb·...·]9-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="8114861149-4">(</span><span·class="p"·data-group-id="8114861149-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="8114861149-6">(</span><span·class="p"·data-group-id="8114861149-6">)</span><span·class="p"·data-group-id="8114861149-5">]<[·...·truncated·by·diffoscope;·len:·46,·SHA:·cc622bbcaf1bb4baadfc574993f003d88a66c4f58f522c33503b302c3c98cdca·...·]9-4">)</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="7620378219-4">(</span><span·class="p"·data-group-id="7620378219-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="7620378219-6">(</span><span·class="p"·data-group-id="7620378219-6">)</span><span·class="p"·data-group-id="7620378219-5">]<[·...·truncated·by·diffoscope;·len:·46,·SHA:·9fbbd4f8c79bd32d8d48c9ee20afc02ac1317754a219973e0c4073f748605731·...·]9-4">)</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="8114861149-7">(</span><span·class="p"·data-group-id="8114861149-7">)</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="7620378219-7">(</span><span·class="p"·data-group-id="7620378219-7">)</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="9220633117-1">(</span><span·class="s">&quot;stdlib/include/qlc.hrl&quot;</span><span·class="p"·data-group-id="9220633117-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="3137014983-1">(</span><span·class="s">&quot;stdlib/include/qlc.hrl&quot;</span><span·class="p"·data-group-id="3137014983-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="9220633117-2">(</span><span·class="s">&quot;company.hrl&quot;</span><span·class="p"·data-group-id="9220633117-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="3137014983-2">(</span><span·class="s">&quot;company.hrl&quot;</span><span·class="p"·data-group-id="3137014983-2">)</span><span·class="p">.</span><span·class="w">
  
277 </span><span·class="nf">init</span><span·class="p"·data-group-id="9220633117-3">(</span><span·class="p"·data-group-id="9220633117-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="3137014983-3">(</span><span·class="p"·data-group-id="3137014983-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="9220633117-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="3137014983-4">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">
279 ························</span><span·class="p"·data-group-id="9220633117-5">[</span><span·class="p"·data-group-id="9220633117-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="9220633117-7">(</span><span·class[·...·truncated·by·diffoscope;·len:·299,·SHA:·a3481820c7c8d1f22773d3f32370799dda03c62accb7eacc3502dd3957e5c668·...·]-4">)</span><span·class="p">,</span><span·class="w">279 ························</span><span·class="p"·data-group-id="3137014983-5">[</span><span·class="p"·data-group-id="3137014983-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="3137014983-7">(</span><span·class[·...·truncated·by·diffoscope;·len:·299,·SHA:·3e8cadb8cb7e7a9316ee5238deed769c2a140e881344ca3f50e5b04c00f4c055·...·]-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="9220633117-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="3137014983-8">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">
281 ························</span><span·class="p"·data-group-id="9220633117-9">[</span><span·class="p"·data-group-id="9220633117-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="9220633117-11">(</span><span·cla[·...·truncated·by·diffoscope;·len:·299,·SHA:·ae683b897e7b51fadf5253849f18aabbff42528331e918b13bb633204db7e468·...·]-8">)</span><span·class="p">,</span><span·class="w">281 ························</span><span·class="p"·data-group-id="3137014983-9">[</span><span·class="p"·data-group-id="3137014983-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="3137014983-11">(</span><span·cla[·...·truncated·by·diffoscope;·len:·299,·SHA:·2e33c1785b3d84a85de7c0b004d31424ac26b09bf8d2c0cbded303db149a484a·...·]-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="9220633117-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="3137014983-12">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">
283 ························</span><span·class="p"·data-group-id="9220633117-13">[</span><span·class="p"·data-group-id="9220633117-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="9220633117-15">(</span><span·cl[·...·truncated·by·diffoscope;·len:·304,·SHA:·ff10f03b70c7d838023aae1e04a5c6da9cc462afd26731146d01cb7c1a81d518·...·]-12">)</span><span·class="p">,</span><span·class="w">283 ························</span><span·class="p"·data-group-id="3137014983-13">[</span><span·class="p"·data-group-id="3137014983-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="3137014983-15">(</span><span·cl[·...·truncated·by·diffoscope;·len:·304,·SHA:·ec75eae679702603cf57ee7917ed42af891c9729e6338d614c178fa797b0ec96·...·]-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="9220633117-16">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9220633117-17">[</span><span·class="p"·data-group-id="9220633117-18">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·e99abfe0e1d6eb8485ed693adcbeb90bb866ea3053bf4d90963822aacffda8b4·...·]-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="3137014983-16">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3137014983-17">[</span><span·class="p"·data-group-id="3137014983-18">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·5389192538479385ccb19ed8f548cbc7a8c9117cb6ee015579fc071daa5a2e42·...·]-18">}</span><span·class="p">,</span><span·class="w">
285 ··································</span><span·class="p"·data-group-id="9220633117-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="9220633117-20">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·104592f00fa67484d7c23842b10d44e3b85ed6c41a927afe668035ec38523104·...·]-16">)</span><span·class="p">,</span><span·class="w">285 ··································</span><span·class="p"·data-group-id="3137014983-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="3137014983-20">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·c528a3ac4d7c103541434329889ef3f9e3742544464e8c1ce5ea3eb812928de3·...·]-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="9220633117-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="3137014983-21">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">
287 ·························</span><span·class="p"·data-group-id="9220633117-22">[</span><span·class="p"·data-group-id="9220633117-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="9220633117-24">(</span><span·cl[·...·truncated·by·diffoscope;·len:·303,·SHA:·6fc2c48b2001101a3f08307cd4bf0c431ae7a60a884f4718174564a0abf49350·...·]-21">)</span><span·class="p">,</span><span·class="w">287 ·························</span><span·class="p"·data-group-id="3137014983-22">[</span><span·class="p"·data-group-id="3137014983-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="3137014983-24">(</span><span·cl[·...·truncated·by·diffoscope;·len:·303,·SHA:·d73c29535bcd5f126e1b4d6f6538eac5b31e46e49c2ecf7b1e9d0a7b6e65f4db·...·]-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="9220633117-25">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9220633117-26">[</span><span·class="p"·data-group-id="9220633117-27">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·e99abfe0e1d6eb8485ed693adcbeb90bb866ea3053bf4d90963822aacffda8b4·...·]-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="3137014983-25">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3137014983-26">[</span><span·class="p"·data-group-id="3137014983-27">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·5389192538479385ccb19ed8f548cbc7a8c9117cb6ee015579fc071daa5a2e42·...·]-27">}</span><span·class="p">,</span><span·class="w">
289 ··································</span><span·class="p"·data-group-id="9220633117-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="9220633117-29">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·22290cb7d3fec4d5976082d1c58b95dc464f0489aa120aad98e98c6d8f22cdd7·...·]-25">)</span><span·class="p">.</span></code></pre><h3·id="program-explained"·class="section-heading">289 ··································</span><span·class="p"·data-group-id="3137014983-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="3137014983-29">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·bd2734e085ca19519d0f7349b4d9a7f35d0c2611f7e9bf8d9060683e1348431b·...·]-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; 114442/165022 bytes (69.35%) of diff not shown.
52.3 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.4/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="5818891491-1">(</span><span·class="ss">old</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5818891491-2">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">val</span><span·class="p"·data-group-id="5818891491-2">}</span><span·class="p"·data-group-id="5818891491-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="5818891491-3">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5818891491-4">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·261,·SHA:·3b97aa89abf8a0d674bff68b810acf8737b6912b739d93101151db450c965064·...·]">)</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="7769165048-1">(</span><span·class="ss">old</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·261,·SHA:·1f744a4365ac41613f60ee271030e4fd45e7d8bc27fd55d46acd4e40814ff3b4·...·]">)</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="7769165048-3">(</span><span·class="ss">new</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7769165048-4">{</span><span·class="ss">key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">val</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">extra</span><span·class="p"·data-group-id="7769165048-4">}</span><span·class="p"·data-group-id="7769165048-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="5818891491-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="5818891491-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="5818891491-6">(</span[·...·truncated·by·diffoscope;·len:·141,·SHA:·21de3312b616d2d78c46ec1d4a2a510adedabaa02a63abea854aa6c286123dae·...·]-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="7769165048-5">(</span><span·class="n">X</span><span·class="p"·data-group-id="7769165048-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="7769165048-6">(</span[·...·truncated·by·diffoscope;·len:·141,·SHA:·f1b2c3be2a8253bc6dac3fb29b7f56abef96492377bb284980e5900f797ee378·...·]-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="5818891491-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="7769165048-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="5818891491-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="7769165048-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="5818891491-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="5818891491-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·129,·SHA:·f9d627c11cc15766fc434d29898e7cf2645ea5c371dc6caaa145d179f5ac4e99·...·]-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="7769165048-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="7769165048-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·129,·SHA:·3488d34e6501b9f9d60a2084a24a36940a95295fcf661ead69a6fc588805e8fa·...·]-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="5818891491-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="5818891491-10">)</span><span·class="p">,</span><span·class="w">187 ······································</span><span·class="nf">record_info</span><span·class="p"·data-group-id="7769165048-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="7769165048-10">)</span><span·class="p">,</span><span·class="w">
188 ······································</span><span·class="ss">new</span><span·class="p"·data-group-id="5818891491-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="7769165048-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·start="2"><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·start="3"><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="2394900590-1">(</span><span·class="p"·data-group-id="2394900590-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="2394900590-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·febfe922f58298a5f0e37ca95460f6a38f824e50ec9d4427bad06f0b900c3126·...·]-1">)</span><span·class="p">.</span></code></pre><ol·start="4"><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·start="2"><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·start="3"><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="3980274437-1">(</span><span·class="p"·data-group-id="3980274437-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="3980274437-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·73cf74d71aaa1e18e60292c2a865f58869322b7dff6ed8188e2bd63182fd1a92·...·]-1">)</span><span·class="p">.</span></code></pre><ol·start="4"><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="0469449229-1">(</span><span·class="p"·data-group-id="0469449229-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="9528167231-1">(</span><span·class="p"·data-group-id="9528167231-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="0469449229-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="9528167231-2">(</span><span·class="ss">employee</span><span·class="p">,</span><span·class="w">
244 ·························</span><span·class="p"·data-group-id="0469449229-3">[</span><span·class="p"·data-group-id="0469449229-4">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0469449229-5">[</span><span·class="ss">a@gin</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·158,·SHA:·2f96237f99fbfe5e80c447ba976cf92799b1aa9fa383beba2d217ef04f35782d·...·]-4">}</span><span·class="p">,</span><span·class="w">244 ·························</span><span·class="p"·data-group-id="9528167231-3">[</span><span·class="p"·data-group-id="9528167231-4">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9528167231-5">[</span><span·class="ss">a@gin</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·158,·SHA:·61fb41a7d78277b216ff34e3cdb2d31cdfca5f3bb22b06194f6ce7f3ff811b6d·...·]-4">}</span><span·class="p">,</span><span·class="w">
245 ··························</span><span·class="p"·data-group-id="0469449229-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="0469449229-7">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">245 ··························</span><span·class="p"·data-group-id="9528167231-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="9528167231-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="0469449229-7">)</span><span·class="p"·data-group-id="0469449229-6">}</span><span·class="p"·data-group-id="0469449229-3">]</span><span·class="p"·data-group-id="0469449229-2">)</span><span·class="p">,</span><span·class="w">246 ···················································</span><span·class="ss">employee</span><span·class="p"·data-group-id="9528167231-7">)</span><span·class="p"·data-group-id="9528167231-6">}</span><span·class="p"·data-group-id="9528167231-3">]</span><span·class="p"·data-group-id="9528167231-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="0469449229-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="9528167231-8">(</span><span·class="ss">dept</span><span·class="p">,</span><span·class="w">
248 ·························</span><span·class="p"·data-group-id="0469449229-9">[</span><span·class="p"·data-group-id="0469449229-10">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0469449229-11">[</span><span·class="ss">a@gin</span><span·class="p"[·...·truncated·by·diffoscope;·len:·161,·SHA:·98a288125d7cd59830fe728abf62ef3f7f5b4bd1274740637c0e183ba0754188·...·]-10">}</span><span·class="p">,</span><span·class="w">248 ·························</span><span·class="p"·data-group-id="9528167231-9">[</span><span·class="p"·data-group-id="9528167231-10">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9528167231-11">[</span><span·class="ss">a@gin</span><span·class="p"[·...·truncated·by·diffoscope;·len:·161,·SHA:·8282c75cde194beed4126757e800c8c981a35b2c37771c1aea2d33a5e18cfad8·...·]-10">}</span><span·class="p">,</span><span·class="w">
249 ··························</span><span·class="p"·data-group-id="0469449229-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="0469449229-13">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·246,·SHA:·d6ac01a4511b4d188ff9338aa4830b7a29d00768d9740ca8ac7bbaa5f63c8e04·...·]-8">)</span><span·class="p">,</span><span·class="w">249 ··························</span><span·class="p"·data-group-id="9528167231-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="9528167231-13">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·246,·SHA:·feb1da3e1735b2882d777617d2b0dc1e2257f5f741005747144bcf0ef2ea84a7·...·]-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="0469449229-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="9528167231-14">(</span><span·class="ss">project</span><span·class="p">,</span><span·class="w">
251 ·························</span><span·class="p"·data-group-id="0469449229-15">[</span><span·class="p"·data-group-id="0469449229-16">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0469449229-17">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·162,·SHA:·a3c25b04d532a7bf91e89ed79364f7c27ad9b90fde47ad0d05a40aaa15ade265·...·]-16">}</span><span·class="p">,</span><span·class="w">251 ·························</span><span·class="p"·data-group-id="9528167231-15">[</span><span·class="p"·data-group-id="9528167231-16">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9528167231-17">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·162,·SHA:·d4141233f8a578f2c34ed3cdbd7829961d42342cc7482b03ea4842b9a1a4b39a·...·]-16">}</span><span·class="p">,</span><span·class="w">
252 ··························</span><span·class="p"·data-group-id="0469449229-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="0469449229-19">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·b7902ef476746755a51830f32b8c49a0bdde70405f59e0c4cb9cdb307e4c898c·...·]-14">)</span><span·class="p">,</span><span·class="w">252 ··························</span><span·class="p"·data-group-id="9528167231-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="9528167231-19">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·9f4406fe0029850a75e6e5d8f0cc03a70d3b29cb8dfe629f5e1b92b9ee7cfacb·...·]-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="0469449229-20">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0469449229-21">[</span><span·class="p"·data-group-id="0469449229-22">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·e6ff663e3c3ca5b818e9366cc35a3cb99316b166debcab4eb4fe1c8c93c9dacb·...·]-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="9528167231-20">(</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9528167231-21">[</span><span·class="p"·data-group-id="9528167231-22">{</span><span·class="ss">type</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·98,·SHA:·88eb218903e7de59274218ec82c02133d5be9f3885f8531b257454cd965b61cc·...·]-22">}</span><span·class="p">,</span><span·class="w">
254 ··································</span><span·class="p"·data-group-id="0469449229-23">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0469449229-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:·3bf8c22faf79828fda5c912401d2da4428b4c53c501dca01129ec589fa2a6f13·...·]-23">}</span><span·class="p">,</span><span·class="w">254 ··································</span><span·class="p"·data-group-id="9528167231-23">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9528167231-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:·d46e430344aba1d6d3352817ceff0576c7dd7753dd31b8581b779dcdf363861a·...·]-23">}</span><span·class="p">,</span><span·class="w">
255 ··································</span><span·class="p"·data-group-id="0469449229-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="0469449229-26">(</span><span·class="ss">fields</span><span·class="p">,</span><span·class="w">255 ··································</span><span·class="p"·data-group-id="9528167231-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="9528167231-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="0469449229-26">)</span><span·class="p"·data-group-id="0469449229-25">}</span><span·class="p"·data-group-id="0469449229-21">]</span><span·class="p"·data-group-id="0469449229-20">)</span><span·class="p">,</span><span·class="w">256 ···························································</span><span·class="ss">manager</span><span·class="p"·data-group-id="9528167231-26">)</span><span·class="p"·data-group-id="9528167231-25">}</span><span·class="p"·data-group-id="9528167231-21">]</span><span·class="p"·data-group-id="9528167231-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="0469449229-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="9528167231-27">(</span><span·class="ss">at_dep</span><span·class="p">,</span><span·class="w">
258 ·························</span><span·class="p"·data-group-id="0469449229-28">[</span><span·class="p"·data-group-id="0469449229-29">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0469449229-30">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·162,·SHA:·79c4f6aa0199ad4543c95ffcb99ffd9528df530e8ea492ff8eb4bbce46e479ee·...·]-29">}</span><span·class="p">,</span><span·class="w">258 ·························</span><span·class="p"·data-group-id="9528167231-28">[</span><span·class="p"·data-group-id="9528167231-29">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9528167231-30">[</span><span·class="ss">a@gin</span><span·class="p[·...·truncated·by·diffoscope;·len:·162,·SHA:·9a0229682560a634d880771ad76c7a21745ed3b7cfe8c261e31d0c4a3d8cbc49·...·]-29">}</span><span·class="p">,</span><span·class="w">
259 ··························</span><span·class="p"·data-group-id="0469449229-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="0469449229-32">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·249,·SHA:·a85d0b3161427db508a55913201fed6a56166694961f48d3b20a6f9fc4c2ea67·...·]-27">)</span><span·class="p">,</span><span·class="w">259 ··························</span><span·class="p"·data-group-id="9528167231-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="9528167231-32">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·249,·SHA:·0548ff87d05756e91d0492e49744fffa3e080fecd0250204f27256b1a7631a52·...·]-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="0469449229-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="9528167231-33">(</span><span·class="ss">in_proj</span><span·class="p">,</span><span·class="w">
261 ························</span><span·class="p"·data-group-id="0469449229-34">[</span><span·class="p"·data-group-id="0469449229-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="0469449229-35">}</span><span·class="p">,</span><span·class="w">261 ························</span><span·class="p"·data-group-id="9528167231-34">[</span><span·class="p"·data-group-id="9528167231-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="9528167231-35">}</span><span·class="p">,</span><span·class="w">
262 ·························</span><span·class="p"·data-group-id="0469449229-36">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0469449229-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:·968f9cc9201f48833e9b9d0e37eb85f96bcd1caf602b6f16af458a5e9193fb91·...·]-36">}</span><span·class="p">,</span><span·class="w">262 ·························</span><span·class="p"·data-group-id="9528167231-36">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9528167231-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:·d485da74ba4d0800d6d35cd796ccd1a5f4c6e8a37d5b2df13f62b6c748b94659·...·]-36">}</span><span·class="p">,</span><span·class="w">
263 ·························</span><span·class="p"·data-group-id="0469449229-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="0469449229-39">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·49e586343a62f6019484ec31c2cb418069a5ccc6ee6f45973a34b422d6dd42a9·...·]-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="9528167231-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="9528167231-39">(</span><span·class="ss">fields</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·250,·SHA:·8d52b7802ed1ddb59457f387d52017678ad1b197ed435f8f33e55b64bb35adc5·...·]-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="6614087061-1">(</span><span·class="p"·data-group-id="6614087061-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="1767547593-1">(</span><span·class="p"·data-group-id="1767547593-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="8348885099-1">(</span><span·class="p"·data-group-id="8348885099-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="8348885099-2">]</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·87,·SHA:·5ac555097051914ed24e3dd0596166371f2abf84e53f0243275e5023a077fa03·...·]-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="8482113485-1">(</span><span·class="p"·data-group-id="8482113485-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="8482113485-2">]</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·87,·SHA:·382063b79b609a0009981b3f8b433569f7882b31c73d49774a991415017fe3e2·...·]-1">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
304 ··</span><span·class="p"·data-group-id="8348885099-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="8348885099-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">304 ··</span><span·class="p"·data-group-id="8482113485-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="8482113485-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="8348885099-4">(</span><span·class="n">RemainingTabs</span><span·class="p"·data-group-id="8348885099-4">)</span><span·class="p">;</span><span·class="w">305 ····</span><span·class="nf">panic</span><span·class="p"·data-group-id="8482113485-4">(</span><span·class="n">RemainingTabs</span><span·class="p"·data-group-id="8482113485-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">Opts</code>·is·a·list·of·<code·class="inline">{Key,Value}</code>·tuples.·The·following·options·are324 the·records·that·constitute·the·table.·For·details,·see·<code·class="inline">record_name</code>.</li><li><code·class="inline">Opts</code>·is·a·list·of·<code·class="inline">{Key,Value}</code>·tuples.·The·following·options·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="1101888228-1">(</span><span·class="p"·data-group-id="1101888228-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="7812584399-1">(</span><span·class="p"·data-group-id="7812584399-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="1101888228-2">(</span><span·class="p"·data-group-id="1101888228-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="7812584399-2">(</span><span·class="p"·data-group-id="7812584399-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="1101888228-3">(</span><span·class="p"·data-group-id="1101888228-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·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·68de46577d0934c8b920b58a9c4535f9b6175619afcaf4fc557efb9159c85dcc·...·]-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="7812584399-3">(</span><span·class="p"·data-group-id="7812584399-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·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·0b8f9d04c56d6459727bdb43411abee99cceab9176c5351d5aad7c3fb9aaac96·...·]-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="1101888228-5">(</span><span·class="p"·data-group-id="1101888228-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·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·7fd116c26fe00faa24fb882febfa5e00f7ff1e104d4dc2210cbe7c206a4264b5·...·]-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="7812584399-5">(</span><span·class="p"·data-group-id="7812584399-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·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·d391a9dedf1dc88173998873dc9ea97f3e9aab8cb82b108abd510dd4366b0f4b·...·]-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="1101888228-7">(</span><span·class="p"·data-group-id="1101888228-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="1101888228-8">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·97060e3a31ef86b658c669293668388a15f223b2262707e04719fe21c5711a2f·...·]-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="7812584399-7">(</span><span·class="p"·data-group-id="7812584399-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="7812584399-8">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·17907e04d6d808cefac353d6bb53fcaeeda59f2738f5e251fb9210b37934ae4c·...·]-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="1101888228-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="1101888228-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="7812584399-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="7812584399-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
Max diff block lines reached; 7221/53400 bytes (13.52%) of diff not shown.
141 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.4/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="8868490576-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="8868490576-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="1941568775-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="1941568775-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="8868490576-2">(</span><span·class="p"·data-group-id="8868490576-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="1941568775-2">(</span><span·class="p"·data-group-id="1941568775-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
150 ················</span><span·class="p"·data-group-id="8868490576-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="8868490576-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:·37e428e57e2764ddbcb93a2790a2bd97418b789b1c42ede8e83f466468ebe5ea·...·]-4">)</span><span·class="p">,</span><span·class="w">150 ················</span><span·class="p"·data-group-id="1941568775-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="1941568775-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:·1db113f4363fea8e10845a09c58706b3875583a401961f88800cc062ff60b8f3·...·]-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="8868490576-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="8868490576-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="1941568775-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="1941568775-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="8868490576-6">(</span><span·class="n">New</span><span·class="p"·data-group-id="8868490576-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="1941568775-6">(</span><span·class="n">New</span><span·class="p"·data-group-id="1941568775-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="8868490576-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="8868490576-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="1941568775-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="1941568775-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="0889509144-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="0889509144-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="0189231223-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="0189231223-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="0889509144-2">(</span><span·class="p"·data-group-id="0889509144-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="0189231223-2">(</span><span·class="p"·data-group-id="0189231223-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
251 ················</span><span·class="p"·data-group-id="0889509144-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="0889509144-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><spa[·...·truncated·by·diffoscope;·len:·302,·SHA:·fd0edd124e6a1b0b176ad5b295cbf3f602b1c3e45e8b0b7324af25ec663f9f33·...·]-4">)</span><span·class="p">,</span><span·class="w">251 ················</span><span·class="p"·data-group-id="0189231223-3">[</span><span·class="n">E</span><span·class="p"·data-group-id="0189231223-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><spa[·...·truncated·by·diffoscope;·len:·302,·SHA:·94d412268bfae8e56aff694a15cee4e18d0b865a6e66fa2774e4980c644f0b0e·...·]-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="0889509144-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="0889509144-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="0189231223-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="0189231223-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="0889509144-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="0889509144-8">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·64,·SHA:·be48108a35468787cae4be4e608fd711e28ef7ca738f21b917767047aae3c004·...·]-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="0189231223-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="0189231223-8">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·64,·SHA:·4b75970b2fc439ff44488b6cc7cd551cb4f08ad6624a1fc68b74d05d5f138354·...·]-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="0889509144-9">(</span><span·class="n">New</span><span·class="p"·data-group-id="0889509144-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="0189231223-9">(</span><span·class="n">New</span><span·class="p"·data-group-id="0189231223-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="0889509144-10">(</span><span·class="n">F</span><span·class="p"·data-group-id="0889509144-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="0189231223-10">(</span><span·class="n">F</span><span·class="p"·data-group-id="0189231223-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="0845708996-1">(</span><span·class="p"·data-group-id="0845708996-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="8751957035-1">(</span><span·class="p"·data-group-id="8751957035-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="0845708996-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="0845708996-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:·d8be4b2cdb5bbd6a0e7b69a7a4b138d674c444f01c8529e384cc034238e7de9e·...·]-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="8751957035-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="8751957035-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:·7d11e795efd34dda2756de4675a0d52a6711ea71b65c5ec7162b1b2b44f8037a·...·]-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="0845708996-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="0845708996-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:·a68ff99ee4e6f36020fef2ae0f66d8917bb50c2a5215e84a78fbe2aff751b13a·...·]-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="8751957035-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="8751957035-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:·8c2a3569e6a466eaa0b25fbc28ab277092f387417fd533b71b4afe203f389084·...·]-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="8975566125-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="8975566125-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:·cd5808c376c0291821fe8f52dcc0d37a8c24a6397247c5639ab48a5c82264c4d·...·]-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="2000997028-2">(</span><span·class="o">#</span><span·class="ss">foo</span><span·class="p"·data-group-id="2000997028-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:·1d60dbb3433d8bdf10265903dbaf1915f1833a2a06875837ce79fe944b376ce7·...·]-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="8975566125-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="8975566125-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="2000997028-4">(</span><span·class="n">F</span><span·class="p"·data-group-id="2000997028-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="9421821445-1">(</span><span·class="p"·data-group-id="9421821445-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="9421821445-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">read</span><span·class="p"·data-group-id="9421821445-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="9421821445-3">(</span><span·class="p"·data-group-id="9421821445-4">{</span><span·class="ss">table</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·345,·SHA:·fea6ac8698c8440897dd3f02eb3e086682f201e27511544e908dd956aa610c8c·...·]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:·26edc1932127b6b0f87b7f0f0c1ceae420d3c334c8d2b3ea6a007febfd319051·...·]
 337 </span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">lock</span><span·class="p"·data-group-id="3829433785-3">(</span><span·class="p"·data-group-id="3829433785-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="3829433785-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">write</span><span·class="p"·data-group-id="3829433785-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="3078822434-1">(</span><span·class="ss">subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3078822434-2">[</span><span·class="p"·data-group-id="3078822434-2">]</span><span·class="p"·data-group-id="3078822434-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="2661743946-1">(</span><span·class="ss">subscriber</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2661743946-2">[</span><span·class="p"·data-group-id="2661743946-2">]</span><span·class="p"·data-group-id="2661743946-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="8221854657-1">[</span><span·class="p"·data-group-id="8221854657-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="8221854657-2">}</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·b682a70120036aab5e9452e590932ab172a17a0c43a2c348113b804b7394e4a8·...·]-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="4500932615-1">[</span><span·class="p"·data-group-id="4500932615-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="4500932615-2">}</span><span·class[·...·truncated·by·diffoscope;·len:·30,·SHA:·1ba785444640968e0bfa4be3a2433090349c472c1167576b11dac0f6043a229e·...·]-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="8221854657-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="8221854657-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="4500932615-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="4500932615-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="8221854657-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="8221854657-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="4500932615-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="4500932615-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="6854430036-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="6854430036-2">{</span><span·class="p"·data-group-id="6854430036[·...·truncated·by·diffoscope;·len:·130,·SHA:·8128bccb03f54127896e1e5864f4f7a670b4602024412e56e03f3c7fdf675cfd·...·]-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="8070296925-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="8070296925-2">{</span><span·class="p"·data-group-id="8070296925[·...·truncated·by·diffoscope;·len:·130,·SHA:·390ec41e96250dca5cfb56a1bad10aca7eb1cb10dd84626ca19ebbcd3c63acd8·...·]-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="6854430036-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="6854430036-4">{</span><span·class="p"·data-group-id="6854430[·...·truncated·by·diffoscope;·len:·140,·SHA:·825bbb688dcdc3d902e2e5e2c1c909a6f455dfdb3640ba42f0ab71606832043a·...·]-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="8070296925-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="8070296925-4">{</span><span·class="p"·data-group-id="8070296[·...·truncated·by·diffoscope;·len:·140,·SHA:·bda5053569abbc57cccabca76174f999461afb753e9bd7b28c832feaa3f2af56·...·]-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="6854430036-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="6854430036-6">{</span><span·class="p"·data-group-id="68544[·...·truncated·by·diffoscope;·len:·135,·SHA:·7d14b7030b514923075a59bb5a6bcf7d9836c128171277970c05a0ee325abb2a·...·]-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="8070296925-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="8070296925-6">{</span><span·class="p"·data-group-id="80702[·...·truncated·by·diffoscope;·len:·135,·SHA:·3c79dccb6437212e9d37db7542636cd22fe4e3b4f14512ef6f49d628284dc5f8·...·]-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="4204139944-1">(</span><span·class="n">Record</span><span·class="p"·data-group-id="4204139944-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="9725670738-1">(</span><span·class="n">Record</span><span·class="p"·data-group-id="9725670738-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="4204139944-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="4204139944-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="9725670738-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="9725670738-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="4204139944-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="4204139944-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="9725670738-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="9725670738-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="4204139944-4">(</span><span·class="p"·data-group-id="4204139944-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="4204139944-5">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·6a03bf706468216565b2b32dab90f6bb327344c23d3d56254a68bdbfebf0958f·...·]-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="9725670738-4">(</span><span·class="p"·data-group-id="9725670738-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="9725670738-5">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·f7c286f2e3564f5cfd82ec94ddebb7bb018d1fb8dca7f68dadf4f3ad5aac69ba·...·]-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="4204139944-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="4204139944-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="9725670738-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="9725670738-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="4204139944-7">(</span><span·class="n">Record</span><span·class="p"·data-group-id="4204139944-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="9725670738-7">(</span><span·class="n">Record</span><span·class="p"·data-group-id="9725670738-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="4204139944-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="4204139944-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="9725670738-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="9725670738-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="4204139944-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="4204139944-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="9725670738-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="9725670738-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="4204139944-10">(</span><span·class="p"·data-group-id="4204139944-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="4204139944-11">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·91,·SHA:·3fbcea4a826a73218d3d86c36be8fe8e69ff096c725e968a02afaa5f8ff9c854·...·]-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="9725670738-10">(</span><span·class="p"·data-group-id="9725670738-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="9725670738-11">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·91,·SHA:·b2e861f48cf824654a8b2ad041832172cc7db48c67c7ac1a67ed383c37156fbd·...·]-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="4204139944-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="4204139944-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="9725670738-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="9725670738-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="4204139944-13">(</span><span·class="p"·data-group-id="4204139944-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="4204139944-14">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·856851dbd5049f2881611b0aaa320a5963b49384fde8df722fa4d9b9d37a133e·...·]-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="9725670738-13">(</span><span·class="p"·data-group-id="9725670738-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="9725670738-14">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·69bb82ecb83131b9c19ca9012c0deb49936665e92dddfedfd4d3847f4dddb3b9·...·]-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="4204139944-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="4204139944-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="9725670738-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="9725670738-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="4204139944-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="4204139944-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="9725670738-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="9725670738-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="4204139944-17">(</span><span·class="n">Pattern</span><span·class="p"·data-group-id="4204139944-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="9725670738-17">(</span><span·class="n">Pattern</span><span·class="p"·data-group-id="9725670738-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="4204139944-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="4204139944-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="9725670738-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="9725670738-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="4204139944-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="4204139944-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="9725670738-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="9725670738-19">)</span><span·class="p">.</span><span·class="w">
  
Max diff block lines reached; 94949/144117 bytes (65.88%) of diff not shown.
150 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.4/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="1127188654-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="9738811326-1">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">
171 ····················</span><span·class="p"·data-group-id="1127188654-2">[</span><span·class="p"·data-group-id="1127188654-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1127188654-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·a1361e7bb6f15d727210813f7f10352569395ab87a3676677b8b70f5b12123c9·...·]-3">}</span><span·class="p">,</span><span·class="w">171 ····················</span><span·class="p"·data-group-id="9738811326-2">[</span><span·class="p"·data-group-id="9738811326-3">{</span><span·class="ss">ram_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9738811326-4">[</span><span·class="n">N1</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·146,·SHA:·37aa15c2ee73aec2aced576a03961cad7aa7ebcfb26abf5fbad31ffe8b256aa7·...·]-3">}</span><span·class="p">,</span><span·class="w">
172 ·····················</span><span·class="p"·data-group-id="1127188654-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="1127188654-6">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·241,·SHA:·8a614c1c6b32e1c2326813400557d93607457112d98c867409902cdbf2d681a4·...·]-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="9738811326-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="9738811326-6">(</span><span·class="ss">fields</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·241,·SHA:·f00991470ee98e1a3c4216f054e9ed4a64e396978c995bea473e11efa806bac3·...·]-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">V15</span><span·class="p">.</span><span·class="mf">1.2</span><span·class="w">·</span><span·class="p"·data-group-id="1593675084-1">(</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:·fb7d1bcd9c0ec704843fe484973e6e81bb3688f1efd58ca4d383c55ccbdb629f·...·]-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">V15</span><span·class="p">.</span><span·class="mf">1.2</span><span·class="w">·</span><span·class="p"·data-group-id="2169280155-1">(</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:·7feba4155875fa53a6a6825cb6068b7c995044e7fea3ed4270b4cac8e4252faa·...·]-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="1593675084-3">(</span><span·class="p"·data-group-id="1593675084-3">)</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="2169280155-3">(</span><span·class="p"·data-group-id="2169280155-3">)</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="1593675084-4">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="1593675084-4">)</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:·3094a0c66b08e8b9720e81e5763f34e5134881b616dd4eb5285bf34e1ba13b17·...·]-5">)</span><span·class="p">.</span><span·class="w">228 </span><span·class="p"·data-group-id="2169280155-4">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="2169280155-4">)</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:·ac176203b88e13ef7cecda546e15a71f6fab2bd5b120402ddc857a8cad7c6281·...·]-5">)</span><span·class="p">.</span><span·class="w">
229 </span><span·class="p"·data-group-id="1593675084-6">[</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="1593675084-6">]</span><span·class="gp·unselectable">229 </span><span·class="p"·data-group-id="2169280155-6">[</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="2169280155-6">]</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="1593675084-7">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="1593675084-7">)</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:·692,·SHA:·f1fd55506ed84f218ec057af0ff7a5de631f31f5d8974207ba23af2af949d1e6·...·]-8">)</span><span·class="p">.</span><span·class="w">232 </span><span·class="p"·data-group-id="2169280155-7">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="2169280155-7">)</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:·692,·SHA:·032b67c6764e4144b415e675beb9b2a2018e10e6e60247fb1a24401fce49c074·...·]-8">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p"·data-group-id="1593675084-12">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1593675084-12">}</span><span·class="gp·unselectable">233 </span><span·class="p"·data-group-id="2169280155-12">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2169280155-12">}</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="1593675084-13">(</span><span·class="n">Keys</span><span·class="p"·data-group-id="1593675084-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="1593675084-14">[</span><span·class="nc">mnesi[·...·truncated·by·diffoscope;·len:·664,·SHA:·66c98759f65030bccf8167e9ffcb6fc59b3e344f39c931931ccb1b7d16abafb7·...·]-14">]</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="2169280155-13">(</span><span·class="n">Keys</span><span·class="p"·data-group-id="2169280155-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="2169280155-14">[</span><span·class="nc">mnesi[·...·truncated·by·diffoscope;·len:·664,·SHA:·048ba97da8461f9ce8264bec1af99e86851dc297fa0e2bca304b6f01c99bb538·...·]-14">]</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="1593675084-17">(</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="1593675084-18">[</span><span·class="nc">list[·...·truncated·by·diffoscope;·len:·445,·SHA:·57ee1231a9df4b65d66d0558674369b0d7aee72a033cf6e1f303c5f0d669e608·...·]-17">)</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="2169280155-17">(</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="2169280155-18">[</span><span·class="nc">list[·...·truncated·by·diffoscope;·len:·445,·SHA:·74408a2a84c4ea2fdd0691bf9d49831b827b7f9f9d0a0dbbd7b03ee4d84b29f8·...·]-17">)</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="1593675084-20">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="1593675084-20">)</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:·2dad3a27afe8907f83ce264d1c7c7f770264c2ae8b2c058a80aee60697aa9e2a·...·]-21">)</span><span·class="p">.</span><span·class="w">238 </span><span·class="p"·data-group-id="2169280155-20">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="2169280155-20">)</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:·99088213d69b75d872dfd85c213439bf01003feaec169875f36f680007133fa0·...·]-21">)</span><span·class="p">.</span><span·class="w">
239 </span><span·class="p"·data-group-id="1593675084-24">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1593675084-24">}</span><span·class="gp·unselectable">239 </span><span·class="p"·data-group-id="2169280155-24">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2169280155-24">}</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="1593675084-25">(</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="1593675084-25">)</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="2169280155-25">(</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="2169280155-25">)</span><span·class="p">.</span><span·class="w">
241 </span><span·class="p"·data-group-id="1593675084-26">[</span><span·class="p"·data-group-id="1593675084-27">{</span><span·class="ss">base_table</span><span·class="p">,</span><span·class="ss">dictionary</span><span·class="p"·data-group-id="1593675084-27">}</span><span·class="p">,</span><span·class="w">241 </span><span·class="p"·data-group-id="2169280155-26">[</span><span·class="p"·data-group-id="2169280155-27">{</span><span·class="ss">base_table</span><span·class="p">,</span><span·class="ss">dictionary</span><span·class="p"·data-group-id="2169280155-27">}</span><span·class="p">,</span><span·class="w">
242 ·</span><span·class="p"·data-group-id="1593675084-28">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="1593675084-28">}</span><span·class="p">,</span><span·class="w">242 ·</span><span·class="p"·data-group-id="2169280155-28">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="2169280155-28">}</span><span·class="p">,</span><span·class="w">
243 ·</span><span·class="p"·data-group-id="1593675084-29">{</span><span·class="ss">hash_module</span><span·class="p">,</span><span·class="ss">mnesia_frag_hash</span><span·class="p"·data-group-id="1593675084-29">}</span><span·class="p">,</span><span·class="w">243 ·</span><span·class="p"·data-group-id="2169280155-29">{</span><span·class="ss">hash_module</span><span·class="p">,</span><span·class="ss">mnesia_frag_hash</span><span·class="p"·data-group-id="2169280155-29">}</span><span·class="p">,</span><span·class="w">
244 ·</span><span·class="p"·data-group-id="1593675084-30">{</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="p"·data-group-id="1593675084-31">{</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="m[·...·truncated·by·diffoscope;·len:·209,·SHA:·adbc658df613b81645c23812240e27465aa4b42adaaa8313043b5b3efa9cf647·...·]-30">}</span><span·class="p">,</span><span·class="w">244 ·</span><span·class="p"·data-group-id="2169280155-30">{</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="p"·data-group-id="2169280155-31">{</span><span·class="ss">hash_state</span><span·class="p">,</span><span·class="mi">1</span><span·class="p">,</span><span·class="m[·...·truncated·by·diffoscope;·len:·209,·SHA:·fd36b21f165a3aa296be21d3298cd1d873cf1bbb674eadb238f764e4f901fb9e·...·]-30">}</span><span·class="p">,</span><span·class="w">
245 ·</span><span·class="p"·data-group-id="1593675084-32">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1593675084-32">}</span><span·class="p">,</span><span·class="w">245 ·</span><span·class="p"·data-group-id="2169280155-32">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2169280155-32">}</span><span·class="p">,</span><span·class="w">
246 ·</span><span·class="p"·data-group-id="1593675084-33">{</span><span·class="ss">node_pool</span><span·class="p">,</span><span·class="p"·data-group-id="1593675084-34">[</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:·26257224ebab70bd1a2e594ab563de1c0b752da901bf60aa1975b1f3933642eb·...·]-26">]</span><span·class="gp·unselectable">246 ·</span><span·class="p"·data-group-id="2169280155-33">{</span><span·class="ss">node_pool</span><span·class="p">,</span><span·class="p"·data-group-id="2169280155-34">[</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:·290d0e8f20d250cbf06c53f69a9ccf80fc4cc6768b6e8e4660363b4849ac7a85·...·]-26">]</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="1593675084-35">(</span><span·class="n">Item</span><span·class="p"·data-group-id="1593675084-35">)</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:·6e66d455409246604d58e637031898a112ecf55a2a37055781ecb4211bfc8ebd·...·]-36">)</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="2169280155-35">(</span><span·class="n">Item</span><span·class="p"·data-group-id="2169280155-35">)</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:·4289de18c3dab7e82d183d0542f8743330e7dcfb2e4937f6d003cefacbd07bfb·...·]-36">)</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="1593675084-37">(</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="1593675084-38">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·945a09bcadd1b4a770f9f008817fda8c887a12d9c5385f59db519e32acbc09e0·...·]-37">)</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="2169280155-37">(</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="2169280155-38">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·eed9460c811d908bb78e74f537cbdb2dd621833d80ba9f3dbd3987f2bc83b402·...·]-37">)</span><span·class="p">.</span><span·class="w">
250 </span><span·class="p"·data-group-id="1593675084-39">[</span><span·class="p"·data-group-id="1593675084-40">{</span><span·class="ss">c@sam</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="1593675084-40">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·d8ccb5ecc80d1ec69bd1d1dc5f2b3cb5e079abc01630778b7cc46b3bd975957e·...·]-39">]</span><span·class="gp·unselectable">250 </span><span·class="p"·data-group-id="2169280155-39">[</span><span·class="p"·data-group-id="2169280155-40">{</span><span·class="ss">c@sam</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2169280155-40">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·a778bd9f6841ba0325ad28192f819933e2910b7750d000e05be44430d081b9c3·...·]-39">]</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="1593675084-43">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1593675084-44">{</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:·da1140d682f6b04e88833d4201f9d34ec810798dc29c921fe1a9a6d74f314956·...·]-43">)</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="2169280155-43">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2169280155-44">{</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:·69ff580a5f15a6c3d041466b8d2edab4e8d857e864c36b40ef401d9ac034b89b·...·]-43">)</span><span·class="p">.</span><span·class="w">
252 </span><span·class="p"·data-group-id="1593675084-45">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1593675084-45">}</span><span·class="gp·unselectable">252 </span><span·class="p"·data-group-id="2169280155-45">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2169280155-45">}</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="1593675084-46">(</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="1593675084-47">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·b1043f4b8032cf2b9c4f5b4cab63e64a98075643b8245075123887786603ad4e·...·]-46">)</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="2169280155-46">(</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="2169280155-47">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·3c1cd097958de5a1deb1330df170db50c37fb0a272fbe2e643b4f8750d94a19e·...·]-46">)</span><span·class="p">.</span><span·class="w">
254 </span><span·class="p"·data-group-id="1593675084-48">[</span><span·class="p"·data-group-id="1593675084-49">{</span><span·class="ss">b@sam</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1593675084-49">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·4ce1b30fcef565012160b7f042f7fe144d7faf9e64936dbb06824e89001824a8·...·]-48">]</span><span·class="gp·unselectable">254 </span><span·class="p"·data-group-id="2169280155-48">[</span><span·class="p"·data-group-id="2169280155-49">{</span><span·class="ss">b@sam</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2169280155-49">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·7b3982b45444d422dfdddedaad4e0e933ff683d3134f30c6d8acd79c3991e28a·...·]-48">]</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="1593675084-52">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1593675084-53">{</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:·624d4c520496579f575e3b3b2664ddb7fac052fe5d7578a4359ca9b8fe894d6e·...·]-52">)</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="2169280155-52">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2169280155-53">{</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:·53f7ce365563becf73e60e67e0145b38c412c51013d5907ae758286ff040ef90·...·]-52">)</span><span·class="p">.</span><span·class="w">
256 </span><span·class="p"·data-group-id="1593675084-54">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1593675084-54">}</span><span·class="gp·unselectable">256 </span><span·class="p"·data-group-id="2169280155-54">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2169280155-54">}</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="1593675084-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">·</span><span·class="p"·data-group-id="1593675084-56">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·27131d73e203bf68a98f47b542c1011cdcf5c85dd7b90b0441f6d482b3e14327·...·]-55">)</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="2169280155-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">·</span><span·class="p"·data-group-id="2169280155-56">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·a4e2d28f0e703713f62c3782f09c2dad4c613567ff861a5a9eff34dbadcd4655·...·]-55">)</span><span·class="p">.</span><span·class="w">
258 </span><span·class="p"·data-group-id="1593675084-57">[</span><span·class="p"·data-group-id="1593675084-58">{</span><span·class="ss">a@sam</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="1593675084-58">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·df76bc2ac13801659c9cc08661f4c8ed21c9b9a75eb4cf7e9dd5dd7fbe384cb1·...·]-57">]</span><span·class="gp·unselectable">258 </span><span·class="p"·data-group-id="2169280155-57">[</span><span·class="p"·data-group-id="2169280155-58">{</span><span·class="ss">a@sam</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2169280155-58">}</span><span·class="p">,</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·414,·SHA:·00c8acc13ca2fd7af0ef7329fccb2f3752e9b02b82193781642bb7700cc887a4·...·]-57">]</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="1593675084-61">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1593675084-62">{</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:·be06029646d76d04e6a7fdc53098894b2386c783997714301127cd179e957ffe·...·]-61">)</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="2169280155-61">(</span><span·class="n">Tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2169280155-62">{</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:·3b6bbc3ab2eacf9d756a5a95e4b42bd2f3c891adb2124e40e5d18b33d6541962·...·]-61">)</span><span·class="p">.</span><span·class="w">
260 </span><span·class="p"·data-group-id="1593675084-63">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1593675084-63">}</span><span·class="gp·unselectable">260 </span><span·class="p"·data-group-id="2169280155-63">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="2169280155-63">}</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="1593675084-64">(</span><span·class="n">Key</span><span·class="p"·data-group-id="1593675084-64">)</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:·4813bed9ec394bc89c2d0aa904504a1f7490e8c3c1bad53edfe1691d91fb7262·...·]-65">)</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="2169280155-64">(</span><span·class="n">Key</span><span·class="p"·data-group-id="2169280155-64">)</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:·5caf96cd8afe63518a79dbb2066e137b1b3979c9bdb4d7f7dcf2f578793b335a·...·]-65">)</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="1593675084-67">(</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="1593675084-68">[</span><span·class="mi">12</[·...·truncated·by·diffoscope;·len:·183,·SHA:·23360cbbc2f65f9f93b116d0cb907490422873fe47dd1adac016f35ac5691f17·...·]-67">)</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="2169280155-67">(</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="2169280155-68">[</span><span·class="mi">12</[·...·truncated·by·diffoscope;·len:·183,·SHA:·a59776d673b5c638c5338341f362223f671627fc3d0523f0d8d4bee9e75ddffd·...·]-67">)</span><span·class="p">.</span><span·class="w">
264 </span><span·class="p"·data-group-id="1593675084-69">[</span><span·class="p"·data-group-id="1593675084-70">{</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:·c50045c35b1f5e7b5e4a0c332fcdcad89de28d6039e64746b6b60c4e5d7b16ed·...·]-69">]</span><span·class="gp·unselectable">264 </span><span·class="p"·data-group-id="2169280155-69">[</span><span·class="p"·data-group-id="2169280155-70">{</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:·c92d6a4543cd41407e2f0f594046e064d586a156c66db775ed5a1cc2c6acd24e·...·]-69">]</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="1593675084-71">(</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="1593675084-72">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·aaad9c47e384a13962088182f781ed33f875369f57bfbebb8f082edb84061b3c·...·]-71">)</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="2169280155-71">(</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="2169280155-72">[</span><span·class="ss">frag_[·...·truncated·by·diffoscope;·len:·189,·SHA:·a0bbd9a1195c5dd93acb5fcb03d1d648c3862dcc0e54826f843a1db46e7f0348·...·]-71">)</span><span·class="p">.</span><span·class="w">
266 </span><span·class="p"·data-group-id="1593675084-73">[</span><span·class="p"·data-group-id="1593675084-74">{</span><span·class="ss">dictionary</span><span·class="p">,</span><span·class="mi">57</span><span·class="p"·data-group-id="1593675084-74">}</span><span·class="p">,</span><span·class="w">266 </span><span·class="p"·data-group-id="2169280155-73">[</span><span·class="p"·data-group-id="2169280155-74">{</span><span·class="ss">dictionary</span><span·class="p">,</span><span·class="mi">57</span><span·class="p"·data-group-id="2169280155-74">}</span><span·class="p">,</span><span·class="w">
267 ·</span><span·class="p"·data-group-id="1593675084-75">{</span><span·class="ss">dictionary_frag2</span><span·class="p">,</span><span·class="mi">63</span><span·class="p"·data-group-id="1593675084-75">}</span><span·class="p">,</span><span·class="w">267 ·</span><span·class="p"·data-group-id="2169280155-75">{</span><span·class="ss">dictionary_frag2</span><span·class="p">,</span><span·class="mi">63</span><span·class="p"·data-group-id="2169280155-75">}</span><span·class="p">,</span><span·class="w">
268 ·</span><span·class="p"·data-group-id="1593675084-76">{</span><span·class="ss">dictionary_frag3</span><span·class="p">,</span><span·class="mi">62</span><span·class="p"·data-group-id="1593675084-76">}</span><span·class="p">,</span><span·class="w">268 ·</span><span·class="p"·data-group-id="2169280155-76">{</span><span·class="ss">dictionary_frag3</span><span·class="p">,</span><span·class="mi">62</span><span·class="p"·data-group-id="2169280155-76">}</span><span·class="p">,</span><span·class="w">
269 ·</span><span·class="p"·data-group-id="1593675084-77">{</span><span·class="ss">dictionary_frag4</span><span·class="p">,</span><span·class="mi">74</span><span·class="p"·data-group-id="1593675084-77">}</span><span·class="p"·data-group-id="1593675084-73">]</span><span·class="w"> 
270 </span><span·class="p"·data-group-id="1593675084-78">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="1593675084-78">)</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="2169280155-77">{</span><span·class="ss">dictionary_frag4</span><span·class="p">,</span><span·class="mi">74</span><span·class="p"·data-group-id="2169280155-77">}</span><span·class="p"·data-group-id="2169280155-73">]</s[·...·truncated·by·diffoscope;·len:·18,·SHA:·7f5c6b1212d3eb04fd43abf1652541570d6ef0d2bed264ce2c2977e5b9aeee63·...·]">
 270 </span><span·class="p"·data-group-id="2169280155-78">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="2169280155-78">)</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">V15</span><span·class="p">.</span><span·class="mf">1.2</span><span·class="w">·</span><span·class="p"·data-group-id="8110494469-1">(</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:·e62b089a00fe77ed7ef99c58568194ba9ee1f9f3c27d5ab13ee139028626c04a·...·]-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">V15</span><span·class="p">.</span><span·class="mf">1.2</span><span·class="w">·</span><span·class="p"·data-group-id="1579217815-1">(</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:·1babcf18a1cf441f088e94fb12cb4d0a9cf572290096f8b3c0997c38630723d9·...·]-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="8110494469-3">(</span><span·class="p"·data-group-id="8110494469-3">)</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="1579217815-3">(</span><span·class="p"·data-group-id="1579217815-3">)</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="8110494469-4">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="8110494469-4">)</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:·811,·SHA:·2914028b1dc99a0f79c87f9aa4b8e87a57a777a668aa18caaf729fe2cdd05ed2·...·]-5">]</span><span·class="p">.</span><span·class="w">315 </span><span·class="p"·data-group-id="1579217815-4">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="1579217815-4">)</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:·811,·SHA:·034bc8bd3ec6608eeb8fa17281d43600d7730e9fd4d289d1d0c2270777eaa331·...·]-5">]</span><span·class="p">.</span><span·class="w">
316 </span><span·class="p"·data-group-id="8110494469-10">[</span><span·class="p"·data-group-id="8110494469-11">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="8110494469-11">}</span><span·class="p">,</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·326,·SHA:·99b7bffa4b1a004128ee5f476af785cfe716e6f987f76127de5910328f3a83e2·...·]-10">]</span><span·class="gp·unselectable">316 </span><span·class="p"·data-group-id="1579217815-10">[</span><span·class="p"·data-group-id="1579217815-11">{</span><span·class="ss">n_fragments</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="1579217815-11">}</span><span·class="p">,</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·326,·SHA:·c837cb106d36d9bbc0b18973ed485ba9bf4e58b3c7bf889b979b4b586df77041·...·]-10">]</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="8110494469-14">(</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="1579217815-14">(</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="w">
318 ······························</span><span·class="p"·data-group-id="8110494469-15">[</span><span·class="p"·data-group-id="8110494469-16">{</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="8110494469-16">}</span><span·class="p">,</span><span·class="w">318 ······························</span><span·class="p"·data-group-id="1579217815-15">[</span><span·class="p"·data-group-id="1579217815-16">{</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="1579217815-16">}</span><span·class="p">,</span><span·class="w">
319 ·······························</span><span·class="p"·data-group-id="8110494469-17">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8110494469-18">[</span><span·class="ss">prim_key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·218,·SHA:·be2bd1cc01ffc4c8b598c1e2aa53728209223a8c811c3c24e3f1f6920b7ec540·...·]-14">)</span><span·class="p">.</span><span·class="w">319 ·······························</span><span·class="p"·data-group-id="1579217815-17">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1579217815-18">[</span><span·class="ss">prim_key</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·218,·SHA:·ec8cd38c758b60e2f54e87e46f8b1551388cace860de12709160a53e72a4259c·...·]-14">)</span><span·class="p">.</span><span·class="w">
320 </span><span·class="p"·data-group-id="8110494469-19">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="8110494469-19">}</span><span·class="gp·unselectable">320 </span><span·class="p"·data-group-id="1579217815-19">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1579217815-19">}</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="8110494469-20">[</span><span·class="p"·data-group-id="8110494469-21">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8110494469-22">{</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="8110494469-22">}</span><span·class="p"·data-group-id="8110494469-21">}</span><span·class="p"·data-group-id="8110494469-20">]</span><span·class="p">.</span><span·class="w"> 
322 </span><span·class="p"·data-group-id="8110494469-23">[</span><span·class="p"·data-group-id="8110494469-24">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="p"·data-group-id="8110494469-25">{</span><span·class="ss">prim_dict</[·...·truncated·by·diffoscope;·len:·250,·SHA:·573012bf057f7c489ac884f6ef9b76a84c993a99ff49d88554fe6d4b0e627f26·...·]">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="1579217815-20">[</span><span·class="p"·data-group-id="1579217815-21">{</span><span·class="ss">foreign_[·...·truncated·by·diffoscope;·len:·424,·SHA:·6950b07ac51bd55e7b65411181f4f24751b2709167ba95c15fd247287dc1aca5·...·]">
 322 </span><span·class="p"·data-group-id="1579217815-23">[</span><span·class="p"·data-group-id="1579217815-24">{</span><span·class="ss">foreign_key</span><span·class="p">,</span><span·class="p"·data-group-id="1579217815-25">{</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="ss">sec_val</span><span·class="p"·data-group-id="1579217815-25">}</span><span·class="p"·data-group-id="1579217815-24">}</span><span·class="p"·data-group-id="1579217815-23">]</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="8110494469-26">(</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="1579217815-26">(</span><span·class="ss">sec_dict</span><span·class="p">,</span><span·class="w">
324 ······························</span><span·class="p"·data-group-id="8110494469-27">[</span><span·class="p"·data-group-id="8110494469-28">{</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="8110494469-28">}</span><span·class="p">,</span><span·class="w">324 ······························</span><span·class="p"·data-group-id="1579217815-27">[</span><span·class="p"·data-group-id="1579217815-28">{</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="1579217815-28">}</span><span·class="p">,</span><span·class="w">
325 ·······························</span><span·class="p"·data-group-id="8110494469-29">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8110494469-30">[</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:·d141088fccc10768d5f3cfe4e02506e5617902a70c3943dd301cc479f06ae676·...·]-26">)</span><span·class="p">.</span><span·class="w">325 ·······························</span><span·class="p"·data-group-id="1579217815-29">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1579217815-30">[</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:·97abb9888ec9b897222d3bdca961fc885143ed176ff06c6a4abd9887a6085d9a·...·]-26">)</span><span·class="p">.</span><span·class="w">
326 </span><span·class="p"·data-group-id="8110494469-31">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="8110494469-31">}</span><span·class="gp·unselectable">326 </span><span·class="p"·data-group-id="1579217815-31">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1579217815-31">}</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="8110494469-32">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="8110494469-32">)</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:·15f7d3ad6135712051f677a664aa36231b1e4f38598e9572f6e10f896302e770·...·]-33">)</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="1579217815-32">(</span><span·class="n">Rec</span><span·class="p"·data-group-id="1579217815-32">)</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:·f5a7a17dff8d407958c6ab1cb2a1daebbb4c5641e15beff7dce70dedee5c9b7a·...·]-33">)</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="8110494469-34">(</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="1579217815-34">(</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="8110494469-35">[</span><span·class="p"·data-group-id="8110494469-36">{</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:·a74e859aa38a71b5e5af5c0ac7ba3d75295d12e96a31cbe2d2b149a7ebcbd9da·...·]-34">)</span><span·class="p">.</span><span·class="w">334 ··························</span><span·class="p"·data-group-id="1579217815-35">[</span><span·class="p"·data-group-id="1579217815-36">{</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:·368e4e48067673d6e5d16668e4b885ae7950d1c258b46073016cb8fb97787b6e·...·]-34">)</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="8110494469-37">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="8110494469-37">)</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:·512d6dd37b46530abfd23375eaf29d13d3a3b5a6785423daad0a107fb736988a·...·]-38">(</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="1579217815-37">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="1579217815-37">)</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:·6b44c1fc8684214cb13856905c28cd79dcbce723e848656e91516ac0e2bdde9a·...·]-38">(</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="8110494469-39">[</span><span·class="p"·data-group-id="8110494469-40">{</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:·41a7a91f372035a4e4d2ed285482a74b7805bd81da2e1dc03084e1d2bbe8b3ff·...·]-38">)</span><span·class="p">.</span><span·class="w">337 ···························</span><span·class="p"·data-group-id="1579217815-39">[</span><span·class="p"·data-group-id="1579217815-40">{</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:·587c5fe63fb35fae4dbe4931e153fd2c9271ee348ff9b4cbaf79d0f5b8b81afd·...·]-38">)</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="8110494469-41">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="8110494469-41">)</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">change_table_frag</span><span·class="p"·data-group-id="8110494469-42">(</span><span·class="ss">prim_dict</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8110494469-43">{</span><span·class="ss">add_frag</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8110494469-44">[</span><span·class="nf">node</span><span·class="p"·data-group-id="8110494469-45">(</span><span·class="p"·data-group-id="8110494469-45">)</span><span·class="p"·data-group-id="8110494469-44">]</span><span·class="p"·data-group-id="8110494469-43">}</span><span·class="p"·data-group-id="8110494469-42">)</span><span·class="p">.</span><span·class="w"> 
340 </span><span·class="p"·data-group-id="8110494469-46">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="8110494469-46">}</span><span·class="gp·unselectable">339 </span><span·class="p"·data-group-id="1579217815-41">(</span><span·class="ss">a@sam</span><span·class="p"·data-group-id="1579217815-41">)</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:·681,·SHA:·57dc3c269f0a841c09827a70fa104039cc36cf4f4a567fd943dade2af02f67af·...·]">
 340 </span><span·class="p"·data-group-id="1579217815-46">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1579217815-46">}</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="8110494469-47">(</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="8110494469-47">)</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="1579217815-47">(</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="1579217815-47">)</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="8110494469-48">(</span><span·class="p"·data-group-id="8110494469-49">{</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="8110494469-49">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·179,·SHA:·776cda3f38a3ab6461972f7492302dc72e3e7e8f0cd18423509cae3dad478c90·...·]-48">)</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="1579217815-48">(</span><span·class="p"·data-group-id="1579217815-49">{</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="1579217815-49">}</span><span·class="p"[·...·truncated·by·diffoscope;·len:·179,·SHA:·b894c1f748728831726e84330f7f6472b21ce43946aaa8f64ec6e33ac1de206f·...·]-48">)</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="8110494469-50">(</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="1579217815-50">(</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="8110494469-51">[</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="8110494469-51">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_[·...·truncated·by·diffoscope;·len:·52,·SHA:·9bc55655451ff415eea9daf05a2eb2081791ff90809c7918ee1c6fb0ab626b97·...·]-50">)</span><span·class="p">.</span><span·class="w">345 ···························</span><span·class="p"·data-group-id="1579217815-51">[</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="1579217815-51">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">mnesia_[·...·truncated·by·diffoscope;·len:·52,·SHA:·5e927d52cebc0921c5417c71df5e206eba566cec6a927fe385a20d5f2acdbe7e·...·]-50">)</span><span·class="p">.</span><span·class="w">
346 </span><span·class="p"·data-group-id="8110494469-52">[</span><span·class="p"·data-group-id="8110494469-53">{</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="8110494469-53">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·17a92ea988ce2882ccfa7a181572195f5b6fcd550c1432f1ae1bc08ced33d466·...·]-52">]</span><span·class="gp·unselectable">346 </span><span·class="p"·data-group-id="1579217815-52">[</span><span·class="p"·data-group-id="1579217815-53">{</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="1579217815-53">}[·...·truncated·by·diffoscope;·len:·48,·SHA:·bd11b2cba275afe9d4c3f912b05f8a3ff49bea39628b415a1daeb20e935a188d·...·]-52">]</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="8110494469-54">(</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="8110494469-54">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·282,·SHA:·764303864930dbf92faa13f2376413a3811a1804dd59265656f7b169ab6f31a5·...·]-55">)</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="1579217815-54">(</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="1579217815-54">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·282,·SHA:·afc418353137bb86f67842c1d7147a82fa16ee9dcc6f4f8c08d7c76f8f205df3·...·]-55">)</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="8110494469-56">(</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="1579217815-56">(</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; 62851/153008 bytes (41.08%) of diff not shown.
45.5 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.4/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="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="8971041729-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.1</span><span·class="p">.</span><span·class="mi">2</span><span·class="p"·data-group-id="8971041729-1">]</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="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="8699949306-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.1</span><span·class="p">.</span><span·class="mi">2</span><span·class="p"·data-group-id="8699949306-1">]</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="mf">1.2</span><span·class="w">·</span><span·class="p"·data-group-id="8971041729-2">(</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><spa[·...·truncated·by·diffoscope;·len:·398,·SHA:·d2be465b4815a85c6b9c329c0161240bd69b00f7a40986527aa8f4b5eba1f513·...·]-2">)</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="mf">1.2</span><span·class="w">·</span><span·class="p"·data-group-id="8699949306-2">(</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><spa[·...·truncated·by·diffoscope;·len:·398,·SHA:·cd9c9ad154eff81b38b0a72b87b8dd04b2602627c1f1b3ffbc5154f189cc6d64·...·]-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="8971041729-4">(</span><span·class="p"·data-group-id="8971041729-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="8971041729-6">(</span><span·class="p"·data-group-id="8971041729-6">)</span><span·class="p"·data-group-id="8971041729-5">]</[·...·truncated·by·diffoscope;·len:·46,·SHA:·ec257cb5cb7f4ae7bbdbb52febd7a594af177f91b38f4216f7d2c8933ae2b024·...·]-4">)</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="8699949306-4">(</span><span·class="p"·data-group-id="8699949306-5">[</span><span·class="nf">node</span><span·class="p"·data-group-id="8699949306-6">(</span><span·class="p"·data-group-id="8699949306-6">)</span><span·class="p"·data-group-id="8699949306-5">]</[·...·truncated·by·diffoscope;·len:·46,·SHA:·97e08c437ffe49afa42968ec6f0f14f6254507b0ba65aec784582723802f81cd·...·]-4">)</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="8971041729-7">(</span><span·class="ss">klacke@gin</span><span·class="p"·data-group-id="8971041729-7">)</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">240 </span><span·class="p"·data-group-id="8699949306-7">(</span><span·class="ss">klacke@gin</span><span·class="p"·data-group-id="8699949306-7">)</span><span·class="mi">2</span><span·class="o">&gt;</span><span·class="w">
241 </span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">Z</span><span·class="w">241 </span><span·class="n">Ctrl</span><span·class="o">+</span><span·class="n">Z</span><span·class="w">
242 </span><span·class="p"·data-group-id="8971041729-8">[</span><span·class="mi">1</span><span·class="p"·data-group-id="8971041729-8">]</span><span·class="o">+</span><span·class="w">··</span><span·class="n">Stopped</span><span·class="w">·················</span><span·class="ss">erl</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="p"·data-group-id="8699949306-8">[</span><span·class="mi">1</span><span·class="p"·data-group-id="8699949306-8">]</span><span·class="o">+</span><span·class="w">··</span><span·class="n">Stopped</span><span·class="w">·················</span><span·class="ss">erl</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="gp·unselectable">(klacke@gin)3&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="9753066936-1">(</span><span·class="p"·data-group-id="9753066936-1">)</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="gp·unselectable">(klacke@gin)3&gt;·</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="5181051038-1">(</span><span·class="p"·data-group-id="5181051038-1">)</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="0376718322-1">(</span><span·class="ss">foo</span><span·class="p">,</span><span·class="p"·data-group-id="0376718322-2">[</span><span·class="p"·data-group-id="0376718322-3">{</span><span·class="ss">disc_copies</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0376718322-4">[</span><span·class="nf">node</span><span·class="p"·data-group-id="0376718322-5">(</span><span·class="p"·data-group-id="0376718322-5">)</span><span·class="p"·data-group-id="0376718322-4">]</span><span·class="p"·data-group-id="0376718322-3">}</span><span·class="p"·data-group-id="0376718322-2">]</span><span·class="p"·data-group-id="0376718322-1">)</span><span·class="p">.</span><span·class="w"> 
254 </span><span·class="p"·data-group-id="0376718322-6">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="0376718322-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:·3e4ad5b113db200cc42183a004b466802794d4137f1acf6cc8560ec3a416f256·...·]
 254 </span><span·class="p"·data-group-id="1753841789-6">{</span><span·class="ss">atomic</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p"·data-group-id="1753841789-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.1/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.1/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.1/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.1/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="9547501893-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="9547501893-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·688,·SHA:·37160d8f436493d9ff5168adea5814e328db099275808b873e45c92e9ead709a·...·]-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="2427055122-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="2427055122-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·688,·SHA:·a3bac3e8199efb4c2caa505d96705469a3fabe984f5d153744eabb1748506928·...·]-5">}</span><span·class="p">,</span><span·class="w">
300 </span><span·class="p"·data-group-id="9547501893-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="9547501893-6">}</span><span·class="p"·data-group-id="9547501893-3">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·b866149172c54ac9a11622fbe384470b2790a2e2fc4e04a3a3579f5684ee1146·...·]-2">)</span><span·class="p">,</span><span·class="w">300 </span><span·class="p"·data-group-id="2427055122-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="2427055122-6">}</span><span·class="p"·data-group-id="2427055122-3">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·568645d492937baf8cc6a84ed35e2e1bdfb05271da214a6687209b33fe9e7a9e·...·]-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="9547501893-7">(</span><span·class="n">X</span><span·class="p"·data-group-id="9547501893-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:·41b4e12055b0c3325371a325523632667868b6e732926d94d8522bf8551b1a82·...·]-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="2427055122-7">(</span><span·class="n">X</span><span·class="p"·data-group-id="2427055122-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:·eb51b0828114bdd2bd404bd61de2e8a6e99bd0aa7a60a369a8633d139955f3b1·...·]-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="9547501893-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="9547501893-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="2427055122-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="2427055122-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="9547501893-11">(</span><span·class="n">N</span><span·class="p"·data-group-id="9547501893-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="2427055122-11">(</span><span·class="n">N</span><span·class="p"·data-group-id="2427055122-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, 46 lines modifiedOffset 530, 46 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="3996059267-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:·d38e967838ef7318c8d73e817806348ab61078b57d3b55e1fbb74cb85a8738fc·...·]-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="6610992548-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:·a419f99d61d80b41b24925f531d8f20e34d65f9f34c49ef2b071e98122bd4c8a·...·]-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="3996059267-2">(</span><span·class="n">Node</span><span·class="p"·data-group-id="3996059267-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="6610992548-2">(</span><span·class="n">Node</span><span·class="p"·data-group-id="6610992548-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="3996059267-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="3996059267-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:·627d2ab5372c1ed1df6afb30d108c0a8809ec0a7bfe3bfdd77bf80e7ecbbe617·...·]-4">)</span><span·class="p">;</span><span·class="w">540 ···········</span><span·class="p"·data-group-id="6610992548-3">(</span><span·class="n">Node</span><span·class="p"·data-group-id="6610992548-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:·cbf839e54fdd63b28a64d9a680dae8e7aca9d1d9a7e4e86cfdb11f2d007f0bf4·...·]-4">)</span><span·class="p">;</span><span·class="w">
541 ···········</span><span·class="p"·data-group-id="3996059267-6">(</span><span·class="n">Node</span><span·class="p"·data-group-id="3996059267-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="6610992548-6">(</span><span·class="n">Node</span><span·class="p"·data-group-id="6610992548-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="3996059267-7">(</span><span·class="p"·data-group-id="3996059267-8">{</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">Version<[·...·truncated·by·diffoscope;·len:·174,·SHA:·405850432ce37a040bc4b51bedb67dcc30fc117c825fb4a1871399c1533014f2·...·]-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="6610992548-7">(</span><span·class="p"·data-group-id="6610992548-8">{</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">Version<[·...·truncated·by·diffoscope;·len:·174,·SHA:·6d84aa6fa59e504ff13666011a9d7bf0da3086a9073e27eb4c62c2ec57061571·...·]-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
545 ················</span><span·class="p"·data-group-id="3996059267-9">{</span><span·class="p"·data-group-id="3996059267-10">[</span><span·class="p"·data-group-id="3996059267-11">{</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:·284,·SHA:·bde081327ab09448f35088bb962e61074f515d05147a97d41e7b6100ecb37920·...·]-9">}</span><span·class="p">;</span><span·class="w">545 ················</span><span·class="p"·data-group-id="6610992548-9">{</span><span·class="p"·data-group-id="6610992548-10">[</span><span·class="p"·data-group-id="6610992548-11">{</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:·284,·SHA:·b2e2a1ef3b1b1ac5b540f389183d828d2b01122ab3ca59a537dc63f2c126d23a·...·]-9">}</span><span·class="p">;</span><span·class="w">
546 ···········</span><span·class="p"·data-group-id="3996059267-12">(</span><span·class="p"·data-group-id="3996059267-13">{</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:·1ff70fe3caf23de67cbcb1ab84e77ba703846eb128aad98d740cf5c3133f7fd7·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">546 ···········</span><span·class="p"·data-group-id="6610992548-12">(</span><span·class="p"·data-group-id="6610992548-13">{</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:·2f9a95a40faafb687141c9ed6a3d96bb01a00c8ee1c6de3b8e22e44f8e6032a7·...·]-12">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
547 ················</span><span·class="p"·data-group-id="3996059267-14">{</span><span·class="p"·data-group-id="3996059267-15">[</span><span·class="p"·data-group-id="3996059267-16">{</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:·14ecc1ecaf21642891265ee876f173e83dc8e1eb04e920124f58acc66f1fdbf5·...·]-14">}</span><span·class="p">;</span><span·class="w">547 ················</span><span·class="p"·data-group-id="6610992548-14">{</span><span·class="p"·data-group-id="6610992548-15">[</span><span·class="p"·data-group-id="6610992548-16">{</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:·846bef8c6c7367874805a81b99061db586923b7b534722f9d9bc8c700f3a0958·...·]-14">}</span><span·class="p">;</span><span·class="w">
548 ···········</span><span·class="p"·data-group-id="3996059267-17">(</span><span·class="p"·data-group-id="3996059267-18">{</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:·a33807902572e5df27c952932e6132ed7f6abab398255d2fc5a6136b1ad233ad·...·]-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">548 ···········</span><span·class="p"·data-group-id="6610992548-17">(</span><span·class="p"·data-group-id="6610992548-18">{</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:·2a20d684e4aad88c87117e75a9dfe0ec2eea3e022962d0211c4ebcbc68dd48d1·...·]-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
549 ················</span><span·class="n">Keys</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3996059267-19">[</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:·f352d98c1ad3ad82d30384824ea9733d54485ba8f0f675d17ef26a2c35254fd1·...·]-19">]</span><span·class="p">,</span><span·class="w">549 ················</span><span·class="n">Keys</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="6610992548-19">[</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:·b20be9f49b0bf99782c7aeb6782c45e3a0a364299e23b1002715af8fd3caac9c·...·]-19">]</span><span·class="p">,</span><span·class="w">
550 ················</span><span·class="n">OptSwitch</span><span·class="w">·</span><span·class="o">=</span><span·class="w">550 ················</span><span·class="n">OptSwitch</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
551 ····················</span><span·class="nf">fun</span><span·class="p"·data-group-id="3996059267-20">(</span><span·class="p"·data-group-id="3996059267-21">{</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="3996059267-21">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·47528bfa207eeb962048f48c98e114d051e165ea767fcf674daedc5677cf76b5·...·]-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">551 ····················</span><span·class="nf">fun</span><span·class="p"·data-group-id="6610992548-20">(</span><span·class="p"·data-group-id="6610992548-21">{</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="6610992548-21">}</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·2e8449e40fef4dff813d237e740610905fd60cf997e84d8450ca691543fdbdc2·...·]-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
552 ····························</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="3996059267-22">(</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="3996059267-22">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">552 ····························</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="6610992548-22">(</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="6610992548-22">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
553 ································</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="3996059267-23">{</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="3996059267-24">(</span><span·class="n">Switch</s[·...·truncated·by·diffoscope;·len:·173,·SHA:·43f41cd68f1b7e9b0761b13060bdef40406a05168bfdcb3db89586fce20c344a·...·]-23">}</span><span·class="p">;</span><span·class="w">553 ································</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="6610992548-23">{</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="6610992548-24">(</span><span·class="n">Switch</s[·...·truncated·by·diffoscope;·len:·173,·SHA:·d58e2ff1777d11c50e90f103066e2f9502e1adb0a6bb8f5c8fb6581cecc5311c·...·]-23">}</span><span·class="p">;</span><span·class="w">
554 ································</span><span·class="ss">false</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3996059267-25">{</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="3996059267-25">}</span><span·class="w">554 ································</span><span·class="ss">false</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6610992548-25">{</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="6610992548-25">}</span><span·class="w">
555 ····························</span><span·class="k">end</span><span·class="w">555 ····························</span><span·class="k">end</span><span·class="w">
556 ····················</span><span·class="k">end</span><span·class="p">,</span><span·class="w">556 ····················</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
557 ················</span><span·class="p"·data-group-id="3996059267-26">{</span><span·class="p"·data-group-id="3996059267-27">[</span><span·class="p"·data-group-id="3996059267-28">{</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:·c5f06af05d300bb6518fe9fb99bc423f76727dd0aa58d7597d332db829c0ab2f·...·]-26">}</span><span·class="p">;</span><span·class="w">557 ················</span><span·class="p"·data-group-id="6610992548-26">{</span><span·class="p"·data-group-id="6610992548-27">[</span><span·class="p"·data-group-id="6610992548-28">{</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:·fa61429617ca89d516feec397efb29a786f5072782b5d976af337ae37d863966·...·]-26">}</span><span·class="p">;</span><span·class="w">
558 ···········</span><span·class="p"·data-group-id="3996059267-30">(</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="3996059267-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">558 ···········</span><span·class="p"·data-group-id="6610992548-30">(</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="6610992548-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
559 ················</span><span·class="p"·data-group-id="3996059267-31">{</span><span·class="p"·data-group-id="3996059267-32">[</span><span·class="n">Other</span><span·class="p"·data-group-id="3996059267-32">]</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:·d2c50ed555356ff01c0ba3d775661a007862d46e19f663229fce270a5f92fa0c·...·]-31">}</span><span·class="w">559 ················</span><span·class="p"·data-group-id="6610992548-31">{</span><span·class="p"·data-group-id="6610992548-32">[</span><span·class="n">Other</span><span·class="p"·data-group-id="6610992548-32">]</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:·533bca3d6fba26424a94e3a9e8b5c04cbe29927c428ee674c4616050871dd808·...·]-31">}</span><span·class="w">
560 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">560 ········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
561 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">traverse_backup</span><span·class="p"·data-group-id="3996059267-33">(</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:·635d9f99563e098f5f53c2a75a357ac6e387d917a669e18b8237a1d187ae0d63·...·]-33">)</span><span·class="p">.</span><span·class="w">561 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">traverse_backup</span><span·class="p"·data-group-id="6610992548-33">(</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:·8aeb3dfd54e40568db276c8ca0a08ce6b7ea862c78d43fda903057369a170359·...·]-33">)</span><span·class="p">.</span><span·class="w">
  
562 </span><span·class="nf">view</span><span·class="p"·data-group-id="3996059267-34">(</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="3996059267-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">562 </span><span·class="nf">view</span><span·class="p"·data-group-id="6610992548-34">(</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="6610992548-34">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
563 ····</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="3996059267-35">(</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="3996059267-35">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">563 ····</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="6610992548-35">(</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="6610992548-35">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
564 ···················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="3996059267-36">(</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="3996059267-37">[</span><span·class="n">Item<[·...·truncated·by·diffoscope;·len:·101,·SHA:·928f0d9de26ac4d5bbfe28dd6986b45c735ecbe683b262b10e1c10cd930f82b9·...·]-36">)</span><span·class="p">,</span><span·class="w">564 ···················</span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="6610992548-36">(</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="6610992548-37">[</span><span·class="n">Item<[·...·truncated·by·diffoscope;·len:·101,·SHA:·f2190348292f9634f1f077d157fcded892366778ce0aca8bb57980f2442d95af·...·]-36">)</span><span·class="p">,</span><span·class="w">
565 ···················</span><span·class="p"·data-group-id="3996059267-38">{</span><span·class="p"·data-group-id="3996059267-39">[</span><span·class="n">Item</span><span·class="p"·data-group-id="3996059267-39">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·114,·SHA:·a65e6530664c6252586f5f5864b29806086fac4819ab7ecbe205ce392ef9aa3e·...·]-38">}</span><span·class="w">565 ···················</span><span·class="p"·data-group-id="6610992548-38">{</span><span·class="p"·data-group-id="6610992548-39">[</span><span·class="n">Item</span><span·class="p"·data-group-id="6610992548-39">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Acc</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·114,·SHA:·fcf9fc33ba7ccc07a72b33a2b7fef6ad424b9ca1caaff7acc4e46728359c2437·...·]-38">}</span><span·class="w">
566 ···········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">566 ···········</span><span·class="k">end</span><span·class="p">,</span><span·class="w">
567 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">traverse_backup</span><span·class="p"·data-group-id="3996059267-40">(</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:·333fa4d021264fa2e275d317c880afeefeb31f836c90c6aa7c823fb145ccba27·...·]-40">)</span><span·class="p">.</span></code></pre><h3·id="restore"·class="section-heading">567 ····</span><span·class="nc">mnesia</span><span·class="p">:</span><span·class="nf">traverse_backup</span><span·class="p"·data-group-id="6610992548-40">(</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:·19a92a24938e96cf671b01d8950f7ee10500b197fa433c4f908a9a3a1b157a29·...·]-40">)</span><span·class="p">.</span></code></pre><h3·id="restore"·class="section-heading">
568 ··<a·href="#restore"·class="hover-link">568 ··<a·href="#restore"·class="hover-link">
569 ····<i·class="ri-link-m"·aria-hidden="true"></i>569 ····<i·class="ri-link-m"·aria-hidden="true"></i>
570 ··</a>570 ··</a>
571 ··<span·class="text">Restore</span>571 ··<span·class="text">Restore</span>
572 </h3>572 </h3>
573 <p>Tables·can·be·restored·online·from·a·backup·without·restarting·<code·class="inline">Mnesia</code>.·A573 <p>Tables·can·be·restored·online·from·a·backup·without·restarting·<code·class="inline">Mnesia</code>.·A
574 restore·is·performed·with·the·function574 restore·is·performed·with·the·function
3.75 KB
./usr/share/doc/erlang-doc/html/lib/mnesia-4.23.4/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.3/doc/html/erlang.html#t:atom/0">atom</a>(),·Opt·::·[{<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:atom/0">atom</a>(),·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:atom/0">atom</a>(),·Opt·::·[{<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:atom/0">atom</a>(),·<a·href="../../../../erts-15.2.3/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="0073093332-1">[</span><span·class="p"·data-group-id="0073093332-2">{</span><span·class="p"·data-group-id="0073093332-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:·8b478da523c08d44b5085402d628c0e892834d23a0165cb77e2557df38969486·...·]-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="6897681594-1">[</span><span·class="p"·data-group-id="6897681594-2">{</span><span·class="p"·data-group-id="6897681594-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:·e0924e95c5d538a205b731ab7404a97ec5e01c55c50d1d41a339b779283918cb·...·]-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="0073093332-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="0073093332-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="6897681594-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="6897681594-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:·116862·bytes,·number·of·entries:·231 Zip·file·size:·116866·bytes,·number·of·entries:·23
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:56·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:51·mimetype
3 ?rw-r--r--··6.1·unx···158943·bx·defN·25-Mar-18·07:56·OEBPS/ttb_ug.xhtml3 ?rw-r--r--··6.1·unx···158943·bx·defN·25-Mar-18·08:51·OEBPS/ttb_ug.xhtml
4 ?rw-r--r--··6.1·unx···105646·bx·defN·25-Mar-18·07:56·OEBPS/ttb.xhtml4 ?rw-r--r--··6.1·unx···105646·bx·defN·25-Mar-18·08:51·OEBPS/ttb.xhtml
5 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·07:56·OEBPS/title.xhtml5 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·08:51·OEBPS/title.xhtml
6 ?rw-r--r--··6.1·unx····17377·bx·defN·25-Mar-18·07:56·OEBPS/observer_ug.xhtml6 ?rw-r--r--··6.1·unx····17377·bx·defN·25-Mar-18·08:51·OEBPS/observer_ug.xhtml
7 ?rw-r--r--··6.1·unx·····1190·bx·defN·25-Mar-18·07:56·OEBPS/observer_app.xhtml7 ?rw-r--r--··6.1·unx·····1190·bx·defN·25-Mar-18·08:51·OEBPS/observer_app.xhtml
8 ?rw-r--r--··6.1·unx·····8120·bx·defN·25-Mar-18·07:56·OEBPS/observer.xhtml8 ?rw-r--r--··6.1·unx·····8120·bx·defN·25-Mar-18·08:51·OEBPS/observer.xhtml
9 ?rw-r--r--··6.1·unx····65022·bx·defN·25-Mar-18·07:56·OEBPS/notes.xhtml9 ?rw-r--r--··6.1·unx····65022·bx·defN·25-Mar-18·08:51·OEBPS/notes.xhtml
10 ?rw-r--r--··6.1·unx·····1682·bx·defN·25-Mar-18·07:56·OEBPS/nav.xhtml10 ?rw-r--r--··6.1·unx·····1682·bx·defN·25-Mar-18·08:51·OEBPS/nav.xhtml
11 ?rw-r--r--··6.1·unx·····1299·bx·defN·25-Mar-18·07:56·OEBPS/introduction_ug.xhtml11 ?rw-r--r--··6.1·unx·····1299·bx·defN·25-Mar-18·08:51·OEBPS/introduction_ug.xhtml
12 ?rw-r--r--··6.1·unx·····9700·bx·defN·25-Mar-18·07:56·OEBPS/etop_ug.xhtml12 ?rw-r--r--··6.1·unx·····9700·bx·defN·25-Mar-18·08:51·OEBPS/etop_ug.xhtml
13 ?rw-r--r--··6.1·unx····12167·bx·defN·25-Mar-18·07:56·OEBPS/etop.xhtml13 ?rw-r--r--··6.1·unx····12167·bx·defN·25-Mar-18·08:51·OEBPS/etop.xhtml
14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-erlang-ESPT6BQV.css14 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-erlang-ESPT6BQV.css
15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-LSJCIYTM.js15 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-LSJCIYTM.js
16 ?rw-r--r--··6.1·unx·····4815·bx·defN·25-Mar-18·07:56·OEBPS/crashdump_viewer.xhtml16 ?rw-r--r--··6.1·unx·····4815·bx·defN·25-Mar-18·08:51·OEBPS/crashdump_viewer.xhtml
17 ?rw-r--r--··6.1·unx····17541·bx·defN·25-Mar-18·07:56·OEBPS/crashdump_ug.xhtml17 ?rw-r--r--··6.1·unx····17541·bx·defN·25-Mar-18·08:51·OEBPS/crashdump_ug.xhtml
18 ?rw-r--r--··6.1·unx·····2990·bx·defN·25-Mar-18·07:56·OEBPS/content.opf18 ?rw-r--r--··6.1·unx·····2990·bx·defN·25-Mar-18·08:51·OEBPS/content.opf
19 ?rw-r--r--··6.1·unx·····1523·bx·defN·25-Mar-18·07:56·OEBPS/cdv_cmd.xhtml19 ?rw-r--r--··6.1·unx·····1523·bx·defN·25-Mar-18·08:51·OEBPS/cdv_cmd.xhtml
20 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:56·OEBPS/assets/logo.png20 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:51·OEBPS/assets/logo.png
21 ?rw-r--r--··6.1·unx·····8877·bx·stor·25-Mar-18·07:56·OEBPS/assets/et_processes.gif21 ?rw-r--r--··6.1·unx·····8877·bx·stor·25-Mar-18·08:51·OEBPS/assets/et_processes.gif
22 ?rw-r--r--··6.1·unx·····9369·bx·stor·25-Mar-18·07:56·OEBPS/assets/et_modsprocs.gif22 ?rw-r--r--··6.1·unx·····9369·bx·stor·25-Mar-18·08:51·OEBPS/assets/et_modsprocs.gif
23 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:56·META-INF/container.xml23 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:51·META-INF/container.xml
24 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:56·META-INF/com.apple.ibooks.display-options.xml24 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:51·META-INF/com.apple.ibooks.display-options.xml
25 23·files,·448311·bytes·uncompressed,·112866·bytes·compressed:··74.8%25 23·files,·448311·bytes·uncompressed,·112870·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,·Mar·18·2025·07:56:44,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Mar·18·2025·08:51:00,·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.3/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.3/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.3/doc/html/match_spec.html"><code·class="inline">Match·Specifications·in·Erlang</code></a>·in·ERTS,·which1853 <a·href="../../../../erts-15.2.3/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="9673609394-1">(</span><span·class="p"·data-group-id="9673609394-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="1491601008-1">(</span><span·class="p"·data-group-id="1491601008-1">)</span><span·class="p">.</span><span·class="w">
1856 </span><span·class="p"·data-group-id="9673609394-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9673609394-3">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9673609394-3">]</span><span·class="p"·data-group-id="9673609394-2">}</span><span·class="gp·unselectable">1856 </span><span·class="p"·data-group-id="1491601008-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1491601008-3">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1491601008-3">]</span><span·class="p"·data-group-id="1491601008-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="9673609394-4">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="9673609394-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="1491601008-4">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="1491601008-4">)</span><span·class="p">.</span><span·class="w">
1858 </span><span·class="p"·data-group-id="9673609394-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9673609394-6">{</span><span·class="p"·data-group-id="9673609394-7">[</span><span·class="ss">all</span><span·class="p"·data-group-id="9673609394-7">]</spa[·...·truncated·by·diffoscope;·len:·254,·SHA:·36260af30e398ece5ad913ac2d301ceb59deed7061180a6fa2680c63f2b361fa·...·]-5">}</span><span·class="gp·unselectable">1858 </span><span·class="p"·data-group-id="1491601008-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1491601008-6">{</span><span·class="p"·data-group-id="1491601008-7">[</span><span·class="ss">all</span><span·class="p"·data-group-id="1491601008-7">]</spa[·...·truncated·by·diffoscope;·len:·254,·SHA:·88895f64515a7c840b44f3b48922748dac740ffb71d8632a72784edbd0e3aa24·...·]-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="9673609394-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="9673609394-[·...·truncated·by·diffoscope;·len:·107,·SHA:·d505b60a58e44b5efa3769eb61aa720d6a94b86fbb7361e5132d664fd246eafd·...·]-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="1491601008-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="1491601008-[·...·truncated·by·diffoscope;·len:·107,·SHA:·b9c22330f6f6081b9fd45914639e41a251f3e88c7669b9a4456f9e32cac16108·...·]-9">)</span><span·class="p">.</span><span·class="w">
1860 </span><span·class="p"·data-group-id="9673609394-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9673609394-12">[</span><span·class="p"·data-group-id="9673609394-13">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="mi">1</[·...·truncated·by·diffoscope;·len:·364,·SHA:·9bcf8fe1e35993adf4f44a6f2b533fcfbf769f6108682d22fc3dfa579c4c1ddd·...·]-11">}</span><span·class="w">1860 </span><span·class="p"·data-group-id="1491601008-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1491601008-12">[</span><span·class="p"·data-group-id="1491601008-13">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="mi">1</[·...·truncated·by·diffoscope;·len:·364,·SHA:·7e4c0be980f7aa8731d28506517a35fcc807fa72d90c2fc3bbe5dfc3d9aa7165·...·]-11">}</span><span·class="w">
1861 </span><span·class="p"·data-group-id="9673609394-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9673609394-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="1491601008-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="1491601008-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.3/doc/html/erlang.html#t:term/0">term</a>(),1891 ·························TracerOpts·::·<a·href="../../../../erts-15.2.3/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="9386272692-1">(</span><span·class="p"·data-group-id="9386272692-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="9386272692-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="1363832525-1">(</span><span·class="p"·data-group-id="1363832525-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="1363832525-2">]</span><span·class="p">,</span><span·class="w">
1897 ··················</span><span·class="p"·data-group-id="9386272692-3">[</span><span·class="p"·data-group-id="9386272692-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:·5e9aba16bb8474f4d1726aa9f69d4f207874d96ab31706197ae2db7d324d260d·...·]-3">]</span><span·class="p">,</span><span·class="w">1897 ··················</span><span·class="p"·data-group-id="1363832525-3">[</span><span·class="p"·data-group-id="1363832525-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:·719d126312dc557bf093b1aa210ce2c4245fe36a1cdcabfe0f7aba2d06c82a23·...·]-3">]</span><span·class="p">,</span><span·class="w">
1898 ··················</span><span·class="p"·data-group-id="9386272692-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="9386272692-7">}</span><span·class="p">,</span><span·class="w">1898 ··················</span><span·class="p"·data-group-id="1363832525-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="1363832525-7">}</span><span·class="p">,</span><span·class="w">
1899 ··················</span><span·class="p"·data-group-id="9386272692-8">[</span><span·class="p"·data-group-id="9386272692-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="9386272692-9">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·1095,·SHA:·7d0474019c365bf302048fb70feea357a83ddf48f4e67019e42c2011323f791a·...·]-2">]</span><span·class="p">,</span><span·class="w">1899 ··················</span><span·class="p"·data-group-id="1363832525-8">[</span><span·class="p"·data-group-id="1363832525-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="1363832525-9">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·1095,·SHA:·1d82066022c193840ef869f83ee065fbdb43c2dc791ee2c76fb626a3f6d297c5·...·]-2">]</span><span·class="p">,</span><span·class="w">
1900 ··················</span><span·class="p"·data-group-id="8901597993-3">[</span><span·class="p"·data-group-id="8901597993-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="8901597993-4">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·588,·SHA:·df9876389c7b5a1b52b6f287a4a4491c6e673009be533f29e383a10acad287fb·...·]-1">)</span><span·class="p">,</span><span·class="w">1900 ··················</span><span·class="p"·data-group-id="2374881505-3">[</span><span·class="p"·data-group-id="2374881505-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="2374881505-4">}</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·588,·SHA:·9f9383db60842c94d7471c5dd3fac56ed05fd76d45107bdabfaced13f94023f8·...·]-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="8901597993-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="8901597993-8">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·78a0b47fd7b4703701d0e4cc5ec30dbac60b5b8718ac41b8556addd80ccd37e0·...·]-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="2374881505-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="2374881505-8">[</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·63,·SHA:·9b1fa12cce1b25692bad67176f0c637f3782d1bb03b30c12556ea985d2e0036d·...·]-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="8901597993-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:·138,·SHA:·dc4e323e846b802303cc89f294d98aaeb4c2b405c506cbb946345da2343f490b·...·]-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="2374881505-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:·138,·SHA:·3d725bd15a4d4b49bbb2c49c824e128a0d5c69ad5fb000d070ccaba5d8a415db·...·]-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="8901597993-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="8901597993-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="2374881505-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="2374881505-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="3973858466-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="3973858466-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="9914665555-1">(</span><span·class="ss">m</span><span·class="p"·data-group-id="9914665555-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="3973858466-2">(</span><span·class="p"·data-group-id="3973858466-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="3973858466-3">]</span><span·class="p"·data-group-id="3973858466-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="9914665555-2">(</span><span·class="p"·data-group-id="9914665555-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9914665555-3">]</span><span·class="p"·data-group-id="9914665555-2">)</span><span·class="p">.</span><span·class="w">
177 </span><span·class="nf">f</span><span·class="p"·data-group-id="3973858466-4">(</span><span·class="p"·data-group-id="3973858466-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="9914665555-4">(</span><span·class="p"·data-group-id="9914665555-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="3973858466-5">(</span><span·class="n">From</span><span·class="p"·data-group-id="3973858466-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="9914665555-5">(</span><span·class="n">From</span><span·class="p"·data-group-id="9914665555-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="3973858466-6">(</span><span·class="p"·data-group-id="3973858466-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="9914665555-6">(</span><span·class="p"·data-group-id="9914665555-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="3973858466-7">{</span><span·class="nf">self</span><span·class="p"·data-group-id="3973858466-8">(</span><span·class="p"·data-group-id="3973858466-8">)</span><span·class="p">,</span><span·class="n">Now</span><span·class="p"·data-group-id="3973858466-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="9914665555-7">{</span><span·class="nf">self</span><span·class="p"·data-group-id="9914665555-8">(</span><span·class="p"·data-group-id="9914665555-8">)</span><span·class="p">,</span><span·class="n">Now</span><span·class="p"·data-group-id="9914665555-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="9055670967-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="9055670967-2">[</span><span·class="p"·data-group-id="9055670967-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·f390bebfd1c811fd277f06062ffcadb9f94c9293d904541f83ed2e23e8640016·...·]-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="6101285938-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="6101285938-2">[</span><span·class="p"·data-group-id="6101285938-2">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·e80f2d642a2cb7ff16ec717bcc3cdeb57b7d19bee0da1dc90ac73895062e9464·...·]-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="9055670967-3">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9055670967-3">)</span><span·class="mi">48</span><span·class="o">&gt;</span><span·class="gp·unselectable">189 </span><span·class="p"·data-group-id="6101285938-3">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="6101285938-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="9055670967-4">(</span><span·class="p"·data-group-id="9055670967-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="6101285938-4">(</span><span·class="p"·data-group-id="6101285938-4">)</span><span·class="p">.</span><span·class="w">
192 </span><span·class="p"·data-group-id="9055670967-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9055670967-6">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9055670967-6">]</span><span·class="p"·data-group-id="9055670967-5">}</span><span·class="w"> 
193 </span><span·class="p"·data-group-id="9055670967-7">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9055670967-7">)</span><span·class="mi">49</span><span·class="o">&gt;</span><span·class="gp·unselectable">192 </span><span·class="p"·data-group-id="6101285938-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6101285938-6">[</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="6101285938-6">]</span><span·class="p"·data-group-id="6101285938-5[·...·truncated·by·diffoscope;·len:·24,·SHA:·9514610d0b259140b5a72a9a59a9416af812489313b738ea51e1262922ca17e0·...·]">
 193 </span><span·class="p"·data-group-id="6101285938-7">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="6101285938-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="9055670967-8">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="p"·data-group-id="9055670967-9">[</span><span·class="ss">call</span><span·class="p">,</span><span·class="nb">send</span><span·class="p"·data-group-id="9055670967-9">]</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·9bb25bb7194b07fa5e10f372289468d3daa5946fb3100b9acf31259156399370·...·]-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="6101285938-8">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="p"·data-group-id="6101285938-9">[</span><span·class="ss">call</span><span·class="p">,</span><span·class="nb">send</span><span·class="p"·data-group-id="6101285938-9">]</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·ab0a249f575a11f1b64be0303d6d28bbbf6de1506dacff0c7e951bfcdab4f9ae·...·]-8">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p"·data-group-id="9055670967-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9055670967-11">[</span><span·class="p"·data-group-id="9055670967-12">{</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="9055670967-13">[</span><span·class="p"·data-group-id="9055670967-14">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">tiger@durin</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9055670967-14">}</span><span·class="p"·data-group-id="9055670967-13">]</span><span·class="p"·data-group-id="9055670967-12">}</span><span·class="p"·data-group-id="9055670967-11">]</span><span·class="p"·data-group-id="9055670967-10">}</span><span·class="w"> 
198 </span><span·class="p"·data-group-id="9055670967-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9055670967-15">)</span><span·class="mi">50</span><span·class="o">&gt;</span><span·class="gp·unselectable">197 </span><span·class="p"·data-group-id="6101285938-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6101285938-11">[</span><span·class="p"·data-group-id="6101285938-12">{</span><span·class="o">&lt;</span><span·class="mf">0.125</span><span·class="p">.</[·...·truncated·by·diffoscope;·len:·612,·SHA:·1d66c52092e69e23b69e1809cda0ae0318aa5bd44c62b9626f30f0863eb0c7c0·...·]">
 198 </span><span·class="p"·data-group-id="6101285938-15">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="6101285938-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="9055670967-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="9055670967-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="6101285938-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="6101285938-16">)</span><span·class="p">.</span><span·class="w">
206 </span><span·class="p"·data-group-id="9055670967-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9055670967-18">[</span><span·class="p"·data-group-id="9055670967-19">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">tiger@durin</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9055670967-19">}</span><span·class="p">,</span><span·class="p"·data-group-id="9055670967-20">{</span><span·class="ss">saved</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9055670967-20">}</span><span·class="p"·data-group-id="9055670967-18">]</span><span·class="p"·data-group-id="9055670967-17">}</span><span·class="w"> 
207 </span><span·class="p"·data-group-id="9055670967-21">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9055670967-21">)</span><span·class="mi">52</span><span·class="o">&gt;</span><span·class="gp·unselectable">206 </span><span·class="p"·data-group-id="6101285938-17">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6101285938-18">[</span><span·class="p"·data-group-id="6101285938-19">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">tig[·...·truncated·by·diffoscope;·len:·450,·SHA:·103425ceff4a2dda1e184d86f8db7c254e4b05fd1b9cb4c7f5c560a925413531·...·]">
 207 </span><span·class="p"·data-group-id="6101285938-21">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="6101285938-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="9055670967-22">(</span><span·class="p"·data-group-id="9055670967-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="6101285938-22">(</span><span·class="p"·data-group-id="6101285938-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="9055670967-23">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9055670967-23">)</span><span·class="mi">53</span><span·class="o">&gt;</span><span·class="gp·unselectable">212 </span><span·class="p"·data-group-id="6101285938-23">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="6101285938-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="9055670967-24">(</span><span·class="p"·data-group-id="9055670967-25">[</span><span·class="ss">return</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9055670967-26">{</span><span·class="ss">fetch_dir</span><span·class="p[·...·truncated·by·diffoscope;·len:·223,·SHA:·88c1ee11a7fadcfdcdcb91068cb9d04232cc884887c8b430f48f2f8b69178806·...·]-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="6101285938-24">(</span><span·class="p"·data-group-id="6101285938-25">[</span><span·class="ss">return</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6101285938-26">{</span><span·class="ss">fetch_dir</span><span·class="p[·...·truncated·by·diffoscope;·len:·223,·SHA:·286cc7af2adda6044e46ace949e283f32b24a042da1c9fdbff834e8143ce7dbf·...·]-24">)</span><span·class="p">.</span><span·class="w">
216 </span><span·class="p"·data-group-id="9055670967-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="9055670967-27">}</span><span·class="w">216 </span><span·class="p"·data-group-id="6101285938-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="6101285938-27">}</span><span·class="w">
217 </span><span·class="p"·data-group-id="9055670967-28">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="9055670967-28">)</span><span·class="mi">54</span><span·class="o">&gt;</span><span·class="gp·unselectable">217 </span><span·class="p"·data-group-id="6101285938-28">(</span><span·class="ss">tiger@durin</span><span·class="p"·data-group-id="6101285938-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="9055670967-29">(</span><span·class="s">&quot;fetch&quot;</span><span·class="p"·data-group-id="9055670967-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="6101285938-29">(</span><span·class="s">&quot;fetch&quot;</span><span·class="p"·data-group-id="6101285938-29">)</span><span·class="p">.</span><span·class="w">
220 </span><span·class="p"·data-group-id="9055670967-30">(</span><span·class="p"·data-group-id="9055670967-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:·665bf477c0fdc5b0e90bf0a28dc202c308c8b67e8f2b6d57cb2083ab1913ba59·...·]-33">)</span><span·class="w">220 </span><span·class="p"·data-group-id="6101285938-30">(</span><span·class="p"·data-group-id="6101285938-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:·32117931afa2d017e059e1f786720cad5007b6f8339d8871bb53bd3896d97137·...·]-33">)</span><span·class="w">
221 </span><span·class="p"·data-group-id="9055670967-34">(</span><span·class="p"·data-group-id="9055670967-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:·3b233f642bc6215c613aebd143b3cff1e4a15aaabe6d1393c93fa01eb376145f·...·]-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="6101285938-34">(</span><span·class="p"·data-group-id="6101285938-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:·cc16200b92e27d0bcd06a6ec5643053b74d6e8e256ad3d8adc33fb6e24590148·...·]-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="9055670967-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="9055670967-37">}</span><span·class="w">222 </span><span·class="p"·data-group-id="6101285938-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="6101285938-37">}</span><span·class="w">
223 </span><span·class="p"·data-group-id="9055670967-38">(</span><span·class="p"·data-group-id="9055670967-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:·ecb961768eb246a8ab154a72c2ed62f014b2ebdc7ed64cff0f867ecca985550c·...·]-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="6101285938-38">(</span><span·class="p"·data-group-id="6101285938-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:·5ee21ba227689507c9e3fa72c483f6cfce3f630afbd2cb36537cd27de33b4842·...·]-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="9055670967-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="9055670967-42">{</span><span·class="mi">1031</[·...·truncated·by·diffoscope;·len:·208,·SHA:·a47113872e15ae9c5e3375a84a743d72fcfc677d32b2046465ed44dd2a0e6c81·...·]-41">}</span><span·class="w">224 </span><span·class="p"·data-group-id="6101285938-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="6101285938-42">{</span><span·class="mi">1031</[·...·truncated·by·diffoscope;·len:·208,·SHA:·04d245579fac6014ec419dd7ddb015687df7116314199f632de03e6c285e8e93·...·]-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="5380819045-1">(</span><span·class="ss">mydebug</span><span·class="p"·data-group-id="5380819045-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="1711565569-1">(</span><span·class="ss">mydebug</span><span·class="p"·data-group-id="1711565569-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="5380819045-2">(</span><span·class="p"·data-group-id="5380819045-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:·295,·SHA:·738e03c911e9cada89fe349a3d1e3c7d8637b0a902a4f2444b6fbc9ecdb2bb41·...·]-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="1711565569-2">(</span><span·class="p"·data-group-id="1711565569-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:·295,·SHA:·8dc835cc4de5784d1a2b578ed8c95b20bc0c345ccbf8b3dd46067e45ca88cd82·...·]-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="5380819045-4">(</span><span·class="p"·data-group-id="5380819045-5">[</span><span·class="ss">print</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="5380819045-5">]</span><span·class="p"·data-group-id="5380819045-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="1711565569-4">(</span><span·class="p"·data-group-id="1711565569-5">[</span><span·class="ss">print</span><span·class="p">/</span><span·class="mi">4</span><span·class="p"·data-group-id="1711565569-5">]</span><span·class="p"·data-group-id="1711565569-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="5380819045-6">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="5380819045-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="1711565569-6">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="1711565569-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="5380819045-7">(</span><span·class="p"·data-group-id="5380819045-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="1711565569-7">(</span><span·class="p"·data-group-id="1711565569-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="5380819045-8">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="p"·data-group-id="5380819045-9">[</span><span·class="p"·data-group-id="5380819045-10">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;de[·...·truncated·by·diffoscope;·len:·726,·SHA:·541897328caa6f1e435f9fd06b9db938472d7e516c553bf8f3ecf1996d665447·...·]-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="1711565569-8">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="p"·data-group-id="1711565569-9">[</span><span·class="p"·data-group-id="1711565569-10">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="s">&quot;de[·...·truncated·by·diffoscope;·len:·726,·SHA:·065f89c8360e3be66b4f2361180ba78213a1f44f7c941fbac3d7039c4d60d617·...·]-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="5380819045-14">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="5380819045-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="1711565569-14">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="1711565569-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="5380819045-15">(</span><span·class="n">M</span><span·class="p"·data-group-id="5380819045-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="5380819045-16">(</[·...·truncated·by·diffoscope;·len:·70,·SHA:·1377b71ae960cc5c934cb7fd8895dc7a676b5767e3ed1b904b1c97214939e435·...·]-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="1711565569-15">(</span><span·class="n">M</span><span·class="p"·data-group-id="1711565569-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="1711565569-16">(</[·...·truncated·by·diffoscope;·len:·70,·SHA:·574532f9bcc6f0df6b690e990a8909a332d92b27bbf7e9f3aa957dc0efe89cd0·...·]-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="5380819045-17">(</span><span·class="p"·data-group-id="5380819045-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="538081[·...·truncated·by·diffoscope;·len:·58,·SHA:·0ae292372a8715fd4bba1db05799ed70d05d7c32ec81abab134939637d8d5621·...·]-17">)</span><span·class="p">;</span><span·class="w">252 ····</span><span·class="nf">trc</span><span·class="p"·data-group-id="1711565569-17">(</span><span·class="p"·data-group-id="1711565569-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="171156[·...·truncated·by·diffoscope;·len:·58,·SHA:·5697ec867ebeba37d05a35efc9f92204543bd5eb83574d9c1f0b7a81afb5023d·...·]-17">)</span><span·class="p">;</span><span·class="w">
253 </span><span·class="nf">trc</span><span·class="p"·data-group-id="5380819045-19">(</span><span·class="p"·data-group-id="5380819045-20">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p"·data-group-id="5380819045-20">}</span><span·class="p"·data-group-id="5380819045-19">)</span[·...·truncated·by·diffoscope;·len:·437,·SHA:·efd265be312d70d0d37a713b760bf4cdbff2c8a087b099443bcdf75880c6859f·...·]-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="1711565569-19">(</span><span·class="p"·data-group-id="1711565569-20">{</span><span·class="n">M</span><span·class="p">,</span><span·class="n">F</span><span·class="p"·data-group-id="1711565569-20">}</span><span·class="p"·data-group-id="1711565569-19">)</span[·...·truncated·by·diffoscope;·len:·437,·SHA:·0bed93041adc2eec950a31136e6c167e8a674539562acefbe9a2688acd16c572·...·]-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="5380819045-23">(</span><span·class="p"·data-group-id="5380819045-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="5380819045-24">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·2aa468f7d65e4b6d16ce6910f18285076de1b6ddb518a62ff8239fb31be0f9aa·...·]-23">)</span><span·class="p">;</span><span·class="w">254 ····</span><span·class="nf">trc</span><span·class="p"·data-group-id="1711565569-23">(</span><span·class="p"·data-group-id="1711565569-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="1711565569-24">}<[·...·truncated·by·diffoscope;·len:·47,·SHA:·9c8a0c296ec845c496812e8354359b39638e52b5c3ea3f1c0619a810160bfd88·...·]-23">)</span><span·class="p">;</span><span·class="w">
255 </span><span·class="nf">trc</span><span·class="p"·data-group-id="5380819045-25">(</span><span·class="p"·data-group-id="5380819045-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="5380[·...·truncated·by·diffoscope;·len:·559,·SHA:·763a8c9d15058462e9816038c9d8ccbb31e82f40fab32c76eb9082bee10de868·...·]-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="1711565569-25">(</span><span·class="p"·data-group-id="1711565569-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="1711[·...·truncated·by·diffoscope;·len:·559,·SHA:·02d15c7cbc4da32b40edd69a1f476e15158cda8bb7b457e3d5428eb0e72cc485·...·]-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="5380819045-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5380819045-30">(</span><span·class="p">_</span><span·class="p"·data-group-id="5380819045-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·237,·SHA:·abb5630cd22bcac080514b578beeed60d541f52019dfe1ff0852d75cca3ae12d·...·]-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="1711565569-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1711565569-30">(</span><span·class="p">_</span><span·class="p"·data-group-id="1711565569-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·237,·SHA:·bace561e01a9a797c11755de25f87c7f4f7cbf84c2a61fc73775f13f37843ab8·...·]-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="5380819045-32">(</span><span·class="n">MFA</span><span·class="p">,</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="5380819045-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="1711565569-32">(</span><span·class="n">MFA</span><span·class="p">,</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="1711565569-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="5380819045-33">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="5380819045-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="1711565569-33">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="1711565569-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="5380819045-34">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="5380819045-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="1711565569-34">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="1711565569-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="5380819045-35">(</span><span·class="p"·data-group-id="5380819045-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="1711565569-35">(</span><span·class="p"·data-group-id="1711565569-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="5380819045-36">(</span><span·class="ss">return</span><span·class="p"·data-group-id="5380819045-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="1711565569-36">(</span><span·class="ss">return</span><span·class="p"·data-group-id="1711565569-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="5380819045-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:·39,·SHA:·8053a226ead57e211f4fa447f70e4223cdca80c85ceae416bb21bda1ff88fb8b·...·]-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="1711565569-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:·39,·SHA:·c4be3231ac699f52916c0dea3d2b39f4aee50c895930729b39699195f96dd6c3·...·]-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="5380819045-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="538[·...·truncated·by·diffoscope;·len:·7,·SHA:·3b4ad4bde353d7a6596f2424a3408d8a9d75378215acea205375bfbf6e2e119d·...·]-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="1711565569-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="171[·...·truncated·by·diffoscope;·len:·7,·SHA:·2ff519d1a73a8ed2eed529e414ef6ca01cdb9272d7bdbaba52b0f20fb3340371·...·]-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="5380819045-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="5380819045-39">)</span><span·class="p">,</span><span·class="w">272 ····</span><span·class="nf">do_print</span><span·class="p"·data-group-id="1711565569-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="1711565569-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="5380819045-40">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="5380819045-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:·447,·SHA:·f155a39370ae1480dba9500badf8fcb38276feb3745c4a31113d5bf992022c22·...·]-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="1711565569-40">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="1711565569-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:·447,·SHA:·e6ad1ed87e6c3ca78de6630b72c9fa4aaebbe0daf649b4f167295a73d4064ae6·...·]-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="5380819045-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="1711565569-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="5380819045-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:·313,·SHA:·08756e1a8be669c33706c988e2e44ac4371e5ae4d04d2e215646774c13d90836·...·]-43">)</span><span·class="p">;</span><span·class="w">279 ··············</span><span·class="p"·data-group-id="1711565569-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:·313,·SHA:·ec251923991483c1816fc4f3d3b58277b6a1f630dd903bdf8661d5e102218752·...·]-43">)</span><span·class="p">;</span><span·class="w">
280 </span><span·class="nf">do_print</span><span·class="p"·data-group-id="5380819045-46">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="5380819045-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:·502,·SHA:·c0dcb822d659f4fda5a07880036a5172328ff3d72a4dfee82c36e78833feed42·...·]-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="1711565569-46">(</span><span·class="n">Out</span><span·class="p">,</span><span·class="p"·data-group-id="1711565569-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:·502,·SHA:·39cc5c91e6b20c793cabbb8d7fb6626d5fecbacd5afbbaf4a4c37507c20cc60d·...·]-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="5380819045-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="1711565569-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="5380819045-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:·175,·SHA:·31899c9f4b731781a7fe4d9302c711556376d88a3f081afb03d4c03f1345049b·...·]-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="1711565569-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:·175,·SHA:·14a7181b66f601743903cd9bb42111c0c9639c230864f11f50f8af26c9f2d973·...·]-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
Max diff block lines reached; 197219/255850 bytes (77.08%) 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="5447016362-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="5447016362-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·394,·SHA:·c013a1f4a5edc79e09fec1fb96b8f2a548d025f2e8e2e11791e71d656c3c4533·...·]-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="2744530506-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="2744530506-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·394,·SHA:·0b4405d1198e62bc1066c41b27a71b0fa30b2da97ae6b8abafe0570b0152d559·...·]-2">)</span><span·class="p">.</span><span·class="w">
161 ······</span><span·class="p"·data-group-id="5447016362-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="5447016362-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="2744530506-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="2744530506-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="2167816107-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="2167816107-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="4128316670-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="4128316670-1">)</span><span·class="p">.</span><span·class="w">
168 ······</span><span·class="p"·data-group-id="2167816107-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2167816107-3">[</span><span·class="p"·data-group-id="2167816107-4">{</span><span·class="s">&quot;NR&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·107,·SHA:·807b6be4552bf999a368729cd935272cd0e02b572ab3e21d81320a4ba16171bc·...·]-4">}</span><span·class="p">,</span><span·class="w">168 ······</span><span·class="p"·data-group-id="4128316670-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4128316670-3">[</span><span·class="p"·data-group-id="4128316670-4">{</span><span·class="s">&quot;NR&quot;</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·107,·SHA:·7e568d28893a8715a7fa0516f9df8308f12bab3db8bc9b49de00507b68747d1f·...·]-4">}</span><span·class="p">,</span><span·class="w">
169 ············</span><span·class="p"·data-group-id="2167816107-5">{</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2167816107-6">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·114,·SHA:·cd02578d0f5e1089df4c56bb8fa26cd00c7345974a508cadea5b435dc19733f7·...·]-5">}</span><span·class="p">,</span><span·class="w">169 ············</span><span·class="p"·data-group-id="4128316670-5">{</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4128316670-6">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·114,·SHA:·21e9eb006171ed646d8ed96d1b9d6090037405ac94840a98b6921edeece6db0e·...·]-5">}</span><span·class="p">,</span><span·class="w">
170 ············</span><span·class="p"·data-group-id="2167816107-7">{</span><span·class="s">&quot;LASTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2167816107-8">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·113,·SHA:·b3aa00d470627a403bcbb10176bc7e6b20ce7e4b497ea84c5661d7972b1be90e·...·]-7">}</span><span·class="w">170 ············</span><span·class="p"·data-group-id="4128316670-7">{</span><span·class="s">&quot;LASTNAME&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4128316670-8">{</span><span·class="ss">sql_varchar</span><span·class="p">,</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·113,·SHA:·072382db5a9b96d4a32dd6fb9a599011bf26375a58b23df9cf14db55dde87cb6·...·]-7">}</span><span·class="w">
171 ············</span><span·class="p"·data-group-id="2167816107-9">{</span><span·class="s">&quot;GENDER&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2167816107-10">{</span><span·class="ss">sql_char</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·636,·SHA:·a0b27edf308ac2b72906133c4c529aa8494dfe92e576edeeb0d5ca8638271474·...·]-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="4128316670-9">{</span><span·class="s">&quot;GENDER&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4128316670-10">{</span><span·class="ss">sql_char</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·636,·SHA:·985ddecb12953b1b02b002c2a7e3c4e9ef03629610067446154e8f01096641b6·...·]-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="1971609616-2">[</span><span·class="p"·data-group-id="1971609616-3">{</span><span·class="ss">sql_integer</span><span·class="p">,</span><span·class="p"·data-group-id="1971609616-4">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</[·...·truncated·by·diffoscope;·len:·344,·SHA:·c42c4e403ea35809a1119fcad0c3fa1e381d87354d7b3716bde1a79878f1a7a6·...·]-3">}</span><span·class="p">,</span><span·class="w">173 ···················</span><span·class="p"·data-group-id="7487635714-2">[</span><span·class="p"·data-group-id="7487635714-3">{</span><span·class="ss">sql_integer</span><span·class="p">,</span><span·class="p"·data-group-id="7487635714-4">[</span><span·class="mi">2</span><span·class="p">,</span><span·class="mi">3</[·...·truncated·by·diffoscope;·len:·344,·SHA:·9a3d0e7607ba9d08e37c15a688ba30e2e480cb164b3d04fe30b0c9592efd5a33·...·]-3">}</span><span·class="p">,</span><span·class="w">
174 ····················</span><span·class="p"·data-group-id="1971609616-5">{</span><span·class="p"·data-group-id="1971609616-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="1971609616-6">}</span><span·class="p">,</span><span·class="w">174 ····················</span><span·class="p"·data-group-id="7487635714-5">{</span><span·class="p"·data-group-id="7487635714-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="7487635714-6">}</span><span·class="p">,</span><span·class="w">
175 ·····························</span><span·class="p"·data-group-id="1971609616-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="7487635714-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="1971609616-7">]</span><span·class="p"·data-group-id="1971609616-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="7487635714-7">]</span><span·class="p"·data-group-id="7487635714-5">}</span><span·class="p">,</span><span·class="w">
177 ···················</span><span·class="p"·data-group-id="1971609616-8">{</span><span·class="p"·data-group-id="1971609616-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="1971609616-9">}</span><span·class="p">,</span><span·class="w">177 ···················</span><span·class="p"·data-group-id="7487635714-8">{</span><span·class="p"·data-group-id="7487635714-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="7487635714-9">}</span><span·class="p">,</span><span·class="w">
178 ·····························</span><span·class="p"·data-group-id="1971609616-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="7487635714-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="1971609616-10">]</span><span·class="p"·data-group-id="1971609616-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="7487635714-10">]</span><span·class="p"·data-group-id="7487635714-8">}</span><span·class="p">,</span><span·class="w">
180 ···················</span><span·class="p"·data-group-id="1971609616-11">{</span><span·class="p"·data-group-id="1971609616-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="1971609616-12">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·680,·SHA:·99f33b8647f84715514a254d1e7aeba4aa75315cdb24492751a9d3dcce4ffe71·...·]-1">)</span><span·class="p">.</span><span·class="w">180 ···················</span><span·class="p"·data-group-id="7487635714-11">{</span><span·class="p"·data-group-id="7487635714-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="7487635714-12">}</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·680,·SHA:·f0170ae1bea8e629a3942274d4ded4f67aa5c2ffe34acb4fa3d0386ba33ff80e·...·]-1">)</span><span·class="p">.</span><span·class="w">
181 ······</span><span·class="p"·data-group-id="1971609616-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="1971609616-14">}</span></code></pre><p>Fetch·all·data·in·the·table·employee</p><pre><code·class="m[·...·truncated·by·diffoscope;·len:·438,·SHA:·c89b832879316318277dfc469f3447890a5173130ff277a6bff97d12f7460db7·...·]5-1">)</span><span·class="p">.</span><span·class="w">181 ······</span><span·class="p"·data-group-id="7487635714-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="7487635714-14">}</span></code></pre><p>Fetch·all·data·in·the·table·employee</p><pre><code·class="m[·...·truncated·by·diffoscope;·len:·438,·SHA:·73732db63251bb574edcf0d7828d2894cd1735ac64f2dbfb702b35dd4eee48dd·...·]5-1">)</span><span·class="p">.</span><span·class="w">
182 ····</span><span·class="p"·data-group-id="1068235215-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1068235215-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:·152,·SHA:·ec5008bdb1fcedd719cef8cdba92915bfa319ac55e7920c806f7d46b7ff220e2·...·]5-3">]</span><span·class="p">,</span><span·class="w">182 ····</span><span·class="p"·data-group-id="8547969235-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="8547969235-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:·152,·SHA:·b4952778966a2bd8ba383d7bf512082ca9c8e64ada54f3d341ba5f30c35a6f7a·...·]5-3">]</span><span·class="p">,</span><span·class="w">
183 ··········</span><span·class="p"·data-group-id="1068235215-4">[</span><span·class="p"·data-group-id="1068235215-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:·69,·SHA:·fa0b426874bf2a72eda5dc982cac21586f472412a6b671f820f814780363e9ee·...·]5-5">}</span><span·class="p">,</span><span·class="w">183 ··········</span><span·class="p"·data-group-id="8547969235-4">[</span><span·class="p"·data-group-id="8547969235-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:·69,·SHA:·82c03bdc16ab0339e1ad09e132623981d9baf78637fe4231a06c7055668b3880·...·]5-5">}</span><span·class="p">,</span><span·class="w">
184 ···········</span><span·class="p"·data-group-id="1068235215-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:·16,·SHA:·301194b0695b94eaffbe45799bf8f8c4b5c4cd98292a1419b2f22332036df74d·...·]5-6">}</span><span·class="p">,</span><span·class="w">184 ···········</span><span·class="p"·data-group-id="8547969235-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:·16,·SHA:·4eb1db106ecd01a98bbf1e3bf006ecf67a96aed452865823d2d3ed8f1cddedb2·...·]5-6">}</span><span·class="p">,</span><span·class="w">
185 ···········</span><span·class="p"·data-group-id="1068235215-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:·21,·SHA:·5eadacbbded95f321fb043f0fd5329a4cc0cb596f7c6cb5b2dfc14734ed5dff8·...·]5-7">}</span><span·class="p">,</span><span·class="w">185 ···········</span><span·class="p"·data-group-id="8547969235-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:·21,·SHA:·76b94b3fe1363cce7f4ff2daffc939cd4b778292a11bad73df64ed76841f1394·...·]5-7">}</span><span·class="p">,</span><span·class="w">
186 ···········</span><span·class="p"·data-group-id="1068235215-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:·19,·SHA:·17077ab2d23ac653f9fba201b0ebab4bf659594879d0abb275639f3d799016c6·...·]5-8">}</span><span·class="p">,</span><span·class="w">186 ···········</span><span·class="p"·data-group-id="8547969235-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:·19,·SHA:·86a1440bfeb8e08a474288caec9864c1682dd14a4accd804cf0b5d9212ea53ee·...·]5-8">}</span><span·class="p">,</span><span·class="w">
187 ···········</span><span·class="p"·data-group-id="1068235215-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:·20,·SHA:·0073552664834186a8f7ba6566cb88014a58eca6107ce9b2741e8f3323de7084·...·]5-9">}</span><span·class="p">,</span><span·class="w">187 ···········</span><span·class="p"·data-group-id="8547969235-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:·20,·SHA:·dc22f4ca98247bf526ad692279424983a9f9afbef61e4c23a3cc54af3e9b317a·...·]5-9">}</span><span·class="p">,</span><span·class="w">
188 ···········</span><span·class="p"·data-group-id="1068235215-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:·24,·SHA:·e3900e34404e31385fe10484a2ec74ff30c2a1b6e0381ea35197b37098419237·...·]5-10">}</span><span·class="p">,</span><span·class="w">188 ···········</span><span·class="p"·data-group-id="8547969235-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:·24,·SHA:·8ba5af6e534ca4d5ed1fc9773ac2ebe4cd2a810b3e0f8ce01c6c0ce614ad9a00·...·]5-10">}</span><span·class="p">,</span><span·class="w">
189 ···········</span><span·class="p"·data-group-id="1068235215-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:·23,·SHA:·ccf0b413d68f30607fbd0219e0978fb983a79812b5f5a21932c1cbad5492413b·...·]5-11">}</span><span·class="p">,</span><span·class="w">189 ···········</span><span·class="p"·data-group-id="8547969235-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:·23,·SHA:·c9cb9f7945184ea18ad919af8cd3025944b42c0fba54704fcff4a90abdc2f61c·...·]5-11">}</span><span·class="p">,</span><span·class="w">
190 ···········</span><span·class="p"·data-group-id="1068235215-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:·151,·SHA:·74cfff5ec221164723f3f976264b09274825fefc08f9d70c40b86c0e7cd4aaac·...·]5-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="8547969235-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:·151,·SHA:·a2f5372a2fbf579c21a74cf42f49c77f55865cb3a6453798e9e51db968b7f0bd·...·]5-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="2366012550-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="2366012550-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="2017682668-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="2017682668-1">)</span><span·class="p">.</span><span·class="w">
192 ······</span><span·class="p"·data-group-id="2366012550-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="2366012550-2">}</span></code></pre><p>You·can·always·traverse·the·result·set·sequential·by·using·next</p><pre><code·class="makeup[·...·truncated·by·diffoscope;·len:·348,·SHA:·cc89996020d1405077f942edb2560e37fcd12d126a1ac34abc67555b965fda2c·...·]-1">)</span><span·class="p">.</span><span·class="w">192 ······</span><span·class="p"·data-group-id="2017682668-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="2017682668-2">}</span></code></pre><p>You·can·always·traverse·the·result·set·sequential·by·using·next</p><pre><code·class="makeup[·...·truncated·by·diffoscope;·len:·348,·SHA:·515122e4737f736ecc4c90cdd3c5870046ad0658c5ee88708776e18386948189·...·]-1">)</span><span·class="p">.</span><span·class="w">
193 ······</span><span·class="p"·data-group-id="6054435100-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="6054435100-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:·50451e1ad622c028bba85ce648c2b9e040883a648c9542fa62303e5cf61d0178·...·]-1">)</span><span·class="p">.</span><span·class="w">193 ······</span><span·class="p"·data-group-id="1596612055-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1596612055-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:·d9c9625e34baed2f7d940d889b38c415b4a87109edb3afe264e7bd6e9531f457·...·]-1">)</span><span·class="p">.</span><span·class="w">
194 ······</span><span·class="p"·data-group-id="2765517678-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="2765517678-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:·4b0b8facea077228ffce183d36bbe3b218f0083722955556a51636896f023a0b·...·]-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="1534147283-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1534147283-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:·4cd390888d729f35f9aa50f856bd9e60f9e9342a3d2223a1ed83d875cfa546a4·...·]-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="2378019981-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="2378019981-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="0541497152-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="0541497152-1">)</span><span·class="p">.</span><span·class="w">
 196 ······</span><span·class="p"·data-group-id="0541497152-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="0541497152-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;LASTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;GENDER&quot;</span><span·class="p"·data-group-id="0541497152-3">]</span><span·class="p">,</span><span·class="p"·data-group-id="0541497152-4">[</span><span·class="p"·data-group-id="0541497152-5">{</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-group-id="0541497152-5">}</span><span·class="p"·data-group-id="0541497152-4">]</span><span·class="p"·data-group-id="0541497152-2">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">12</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">prev</span><span·class="p"·data-group-id="8328150212-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="8328150212-1">)</span><span·class="p">.</span><span·class="w">
 197 ······</span><span·class="p"·data-group-id="8328150212-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="8328150212-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;LASTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;GENDER&quot;</span><span·class="p"·data-group-id="8328150212-3">]</span><span·class="p">,</span><span·class="p"·data-group-id="8328150212-4">[</span><span·class="p"·data-group-id="8328150212-5">{</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"·data-group-id="8328150212-5">}</span><span·class="p"·data-group-id="8328150212-4">]</span><span·class="p"·data-group-id="8328150212-2">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">13</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">first</span><span·class="p"·data-group-id="4706389401-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="4706389401-1">)</span><span·class="p">.</span><span·class="w">
196 ······</span><span·class="p"·data-group-id="2378019981-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="2378019981-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:·00db88ba6196754a99283a0ef99c552ffe18bc9ac193b6835e7670651eb8186c·...·]-1">)</span><span·class="p">.</span><span·class="w">198 ······</span><span·class="p"·data-group-id="4706389401-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="4706389401-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:·3c4d83290f570191f92ce2162e0f116975cc5ee6fef5a77921c4e21c2c5ea99e·...·]-1">)</span><span·class="p">.</span><span·class="w">
197 ······</span><span·class="p"·data-group-id="4371708012-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="4371708012-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;LASTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;GENDER&quot;</span><span·class="p"·data-group-id="4371708012-3">]</span><span·class="p">,</span><span·class="p"·data-group-id="4371708012-4">[</span><span·class="p"·data-group-id="4371708012-5">{</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"·data-group-id="4371708012-5">}</span><span·class="p"·data-group-id="4371708012-4">]</span><span·class="p"·data-group-id="4371708012-2">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">13</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">first</span><span·class="p"·data-group-id="4299646459-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="4299646459-1">)</span><span·class="p">.</span><span·class="w"> 
198 ······</span><span·class="p"·data-group-id="4299646459-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="4299646459-3">[</span><span·class="s">&quot;NR&quot;</span><span·class="p">,</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;LASTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;GENDER&quot;</span><span·class="p"·data-group-id="4299646459-3">]</span><span·class="p">,</span><span·class="p"·data-group-id="4299646459-4">[</span><span·class="p"·data-group-id="4299646459-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·class="s">&quot;F&quot;</span><span·class="p"·data-group-id="4299646459-5">}</span><span·class="p"·data-group-id="4299646459-4">]</span><span·class="p"·data-group-id="4299646459-2">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">14</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">next</span><span·class="p"·data-group-id="5652687510-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="5652687510-1">)</span><span·class="p">.</span><span·class="w"> 
199 ······</span><span·class="p"·data-group-id="5652687510-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="5652687510-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:·1318,·SHA:·7dca69b53243f310c62843950ec0657e1f91a6a37609be97db0d0089b1e1ea69·...·]-1">)</span><span·class="p">.</span><span·class="w">199 ······</span><span·class="p"·data-group-id="6143462591-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="6143462591-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:·1318,·SHA:·b57a76ff5a12483150d7319f8c9c0a53adddc0afb84f163406934cbf58ace211·...·]-1">)</span><span·class="p">.</span><span·class="w">
200 ·····</span><span·class="p"·data-group-id="5394802164-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="5394802164-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:·20,·SHA:·fde1046e415c99baec7928419b643d011f32f412cac5eec33cd922cbf2c843ab·...·]-3">]</span><span·class="p">,</span><span·class="w">200 ·····</span><span·class="p"·data-group-id="5466600205-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="5466600205-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:·20,·SHA:·d3fb2aa4c835a5b0ff3f62d0ae9c243f52ef8e91b5ae3e0027bead29da60b925·...·]-3">]</span><span·class="p">,</span><span·class="w">
201 ··········</span><span·class="p"·data-group-id="5394802164-4">[</span><span·class="p"·data-group-id="5394802164-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5394802164-5">}</span><span·class="p">,</span><span·class="w">201 ··········</span><span·class="p"·data-group-id="5466600205-4">[</span><span·class="p"·data-group-id="5466600205-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5466600205-5">}</span><span·class="p">,</span><span·class="w">
202 ···········</span><span·class="p"·data-group-id="5394802164-6">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="5394802164-6">}</span><span·class="p">,</span><span·class="w">202 ···········</span><span·class="p"·data-group-id="5466600205-6">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="5466600205-6">}</span><span·class="p">,</span><span·class="w">
203 ···········</span><span·class="p"·data-group-id="5394802164-7">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="5394802164-7">}</span><span·class="p">,</span><span·class="w">203 ···········</span><span·class="p"·data-group-id="5466600205-7">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="5466600205-7">}</span><span·class="p">,</span><span·class="w">
204 ···········</span><span·class="p"·data-group-id="5394802164-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="5394802164-8">}</span><span·class="p">,</span><span·class="w">204 ···········</span><span·class="p"·data-group-id="5466600205-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="5466600205-8">}</span><span·class="p">,</span><span·class="w">
205 ···········</span><span·class="p"·data-group-id="5394802164-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="5394802164-9">}</span><span·class="p">,</span><span·class="w">205 ···········</span><span·class="p"·data-group-id="5466600205-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="5466600205-9">}</span><span·class="p">,</span><span·class="w">
206 ···········</span><span·class="p"·data-group-id="5394802164-10">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="5394802164-10">}</span><span·class="p"·data-group-id="5394802164-4">]</span><span·class="p"·data-group-id="539480[·...·truncated·by·diffoscope;·len:·4,·SHA:·34df2d15ee336296547593d47aa1f39f653dcb7b76215dacccd0488e14f579e6·...·]-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="5466600205-10">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="5466600205-10">}</span><span·class="p"·data-group-id="5466600205-4">]</span><span·class="p"·data-group-id="546660[·...·truncated·by·diffoscope;·len:·4,·SHA:·b7fbb9f14ca908bf20c16e78647d36945e254a3b494982890cffb2e58cbc3d95·...·]-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="9947121148-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="1075018892-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="9947121148-1">)</span><span·class="p">.</span><span·class="w">208 ······ORDER·BY·FIRSTNAME&quot;</span><span·class="p"·data-group-id="1075018892-1">)</span><span·class="p">.</span><span·class="w">
209 ····</span><span·class="p"·data-group-id="9947121148-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="9947121148-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:·ac08d4c34773cee1d287bfbdfd4b3c523df547d250832b8d34a06ee6c23b24bd·...·]-3">]</span><span·class="p">,</span><span·class="w">209 ····</span><span·class="p"·data-group-id="1075018892-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1075018892-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:·06505359e1aff13dbd8721e9c08a022c05fea7b48842057e8659882a5444da38·...·]-3">]</span><span·class="p">,</span><span·class="w">
210 ··········</span><span·class="p"·data-group-id="9947121148-4">[</span><span·class="p"·data-group-id="9947121148-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9947121148-5">}</span><span·class="p">,</span><span·class="w">210 ··········</span><span·class="p"·data-group-id="1075018892-4">[</span><span·class="p"·data-group-id="1075018892-5">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1075018892-5">}</span><span·class="p">,</span><span·class="w">
211 ···········</span><span·class="p"·data-group-id="9947121148-6">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="9947121148-6">}</span><span·class="p">,</span><span·class="w">211 ···········</span><span·class="p"·data-group-id="1075018892-6">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="1075018892-6">}</span><span·class="p">,</span><span·class="w">
212 ···········</span><span·class="p"·data-group-id="9947121148-7">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="9947121148-7">}</span><span·class="p">,</span><span·class="w">212 ···········</span><span·class="p"·data-group-id="1075018892-7">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1075018892-7">}</span><span·class="p">,</span><span·class="w">
213 ···········</span><span·class="p"·data-group-id="9947121148-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9947121148-8">}</span><span·class="p">,</span><span·class="w">213 ···········</span><span·class="p"·data-group-id="1075018892-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="1075018892-8">}</span><span·class="p">,</span><span·class="w">
214 ···········</span><span·class="p"·data-group-id="9947121148-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="9947121148-9">}</span><span·class="p">,</span><span·class="w">214 ···········</span><span·class="p"·data-group-id="1075018892-9">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="1075018892-9">}</span><span·class="p">,</span><span·class="w">
215 ···········</span><span·class="p"·data-group-id="9947121148-10">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="9947121148-10">}</span><span·class="p"·data-group-id="9947121148-4">]</span><span·class="p"·data-group-id="99471[·...·truncated·by·diffoscope;·len:·5,·SHA:·466aeceddec41ce292b6c697c6164233b6e093602f2b4e17b4fc1ed7311abdea·...·]-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="1075018892-10">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="1075018892-10">}</span><span·class="p"·data-group-id="1075018892-4">]</span><span·class="p"·data-group-id="10750[·...·truncated·by·diffoscope;·len:·5,·SHA:·b6fca0cd22b2f02fe4b4abc7f133b48b3fb06e19089409b4228ac23bbc15b582·...·]-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="6540959760-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="6540959760-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="3312474966-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="3312474966-1">)</span><span·class="p">.</span><span·class="w">
218 ······</span><span·class="p"·data-group-id="6540959760-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="6540959760-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="3312474966-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="3312474966-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="1498161643-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1498161643-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:·cc05721947b0805601a44c54b89244918790e55c19213d9b06226d60def29ed7·...·]-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="9729013417-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9729013417-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:·c0d8e39f4a65d7acaee3ea4a19547ae95f131d5f835a61d7505be460a046c552·...·]-1">)</span><span·class="p">.</span><span·class="w">
 221 ····</span><span·class="p"·data-group-id="9729013417-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="9729013417-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data-group-id="9729013417-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="9729013417-5">[</span><span·class="p"·data-group-id="9729013417-6">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="9729013417-6">}</span><span·class="p">,</span><span·class="p"·data-group-id="9729013417-7">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="9729013417-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="9729013417-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="9729013417-8">}</span><span·class="p"·data-group-id="9729013417-5">]</span><span·class="p"·data-group-id="9729013417-3">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">19</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="1129381636-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">next</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="1129381636-1">)</span><span·class="p">.</span><span·class="w">
221 ····</span><span·class="p"·data-group-id="1498161643-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1498161643-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data-group-id="1498161643-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="1498161643-5">[</span><span·class="p"·data-group-id="1498161643-6">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="1498161643-6">}</span><span·class="p">,</span><span·class="p"·data-group-id="1498161643-7">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="1498161643-7">}</span><span·class="p">,</span><span·class="p"·data-group-id="1498161643-8">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="1498161643-8">}</span><span·class="p"·data-group-id="1498161643-5">]</span><span·class="p"·data-group-id="1498161643-3">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">19</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="8143980269-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">next</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="8143980269-1">)</span><span·class="p">.</span><span·class="w"> 
222 ······</span><span·class="p"·data-group-id="8143980269-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="8143980269-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data-group-id="8143980269-3">]</span><span·class="p">,</span><span·class="p"·data-group-id="8143980269-4">[</span><span·class="p"·data-group-id="8143980269-5">{</span><span·class="s">&quot;Prue&quot;</span><span·class="p">,</span><span·class="mi">7</span><span·class="p"·data-group-id="8143980269-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="8143980269-6">{</span><span·class="s">&quot;Louise&quot;</span><span·class="p">,</span><span·class="mi">8</span><span·class="p"·data-group-id="8143980269-6">}</span><span·class="p"·data-group-id="8143980269-4">]</span><span·class="p"·data-group-id="8143980269-2">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">20</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="7479266962-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7479266962-2">{</span><span·class="ss">absolute</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="7479266962-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="7479266962-1">)</span><span·class="p">.</span><span·class="w"> 
223 ······</span><span·class="p"·data-group-id="7479266962-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="7479266962-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data-group-id="7479266962-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="7479266962-5">[</span><span·class="p"·data-group-id="7479266962-6">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7479266962-6">}</span><span·class="p">,</span><span·class="p"·data-group-id="7479266962-7">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="7479266962-7">}</span><span·class="p"·data-group-id="7479266962-5">]</span><span·class="p"·data-group-id="7479266962-3">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">21</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="3018788044-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">next</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="3018788044-1">)</span><span·class="p">.</span><span·class="w"> 
224 ····</span><span·class="p"·data-group-id="3018788044-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="3018788044-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·1389,·SHA:·77167b7e41ed78f91a216842c102f8c95356c0f18df5e5bc54f8d29e3e48d8ed·...·]-1">)</span><span·class="p">.</span><span·class="w">222 ······</span><span·class="p"·data-group-id="1129381636-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1129381636-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&[·...·truncated·by·diffoscope;·len:·1390,·SHA:·2d320f51bcd2b4b82b15d2eacd2ddfef71137de7207519841244249c505da7d7·...·]-1">)</span><span·class="p">.</span><span·class="w">
 223 ······</span><span·class="p"·data-group-id="4743271878-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="4743271878-4">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data-group-id="4743271878-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="4743271878-5">[</span><span·class="p"·data-group-id="4743271878-6">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4743271878-6">}</span><span·class="p">,</span><span·class="p"·data-group-id="4743271878-7">{</span><span·class="s">&quot;Monica&quot;</span><span·class="p">,</span><span·class="mi">3</span><span·class="p"·data-group-id="4743271878-7">}</span><span·class="p"·data-group-id="4743271878-5">]</span><span·class="p"·data-group-id="4743271878-3">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">21</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="5748766942-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">next</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="5748766942-1">)</span><span·class="p">.</span><span·class="w">
 224 ····</span><span·class="p"·data-group-id="5748766942-2">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="5748766942-3">[</span><span·class="s">&quot;FIRSTNAME&quot;</span><span·class="p">,</span><span·class="s">&quot;NR&quot;</span><span·class="p"·data-group-id="5748766942-3">]</span><span·class="p">,</span><span·class="p"·data-group-id="5748766942-4">[</span><span·class="p"·data-group-id="5748766942-5">{</span><span·class="s">&quot;Rachel&quot;</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="5748766942-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="5748766942-6">{</span><span·class="s">&quot;Piper&quot;</span><span·class="p">,</span><span·class="mi">6</span><span·class="p"·data-group-id="5748766942-6">}</span><span·class="p"·data-group-id="5748766942-4">]</span><span·class="p"·data-group-id="5748766942-2">}</span></code></pre><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="mi">22</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="5712980819-1">(</span><span·class="n">Ref</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5712980819-2">{</span><span·class="ss">absolute</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="5712980819-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">4</span><span·class="p"·data-group-id="5712980819-1">)</span><span·class="p">.</span><span·class="w">
225 ······</span><span·class="p"·data-group-id="1456272619-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="1456272619-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:·19,·SHA:·5ead8bd4d77541cdb3fd267ff867b99c488577e5630e5a7885baf1e3e912affd·...·]19-4">]</span><span·class="p">,</span><span·class="w">225 ······</span><span·class="p"·data-group-id="5712980819-3">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="5712980819-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:·19,·SHA:·c72693b3d4d7849acc2ff1b18c8cb9d60071667ae2d6ae17a045765850fa5689·...·]19-4">]</span><span·class="p">,</span><span·class="w">
226 ················</span><span·class="p"·data-group-id="1456272619-5">[</span><span·class="p"·data-group-id="1456272619-6">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1456272619-6">}</span><span·class="p">,</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·1082,·SHA:·b70519c0d383b10f37734f10d03600268e0d328d54bf3f4ff866c340a5539d4a·...·]-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">226 ················</span><span·class="p"·data-group-id="5712980819-5">[</span><span·class="p"·data-group-id="5712980819-6">{</span><span·class="s">&quot;Jane&quot;</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5712980819-6">}</span><span·class="p">,</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·1082,·SHA:·08c40c30e1f92d4777bb5aec3aa96918d5989bd0a59f20f7b6c167334d8ae183·...·]-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="5675285797-2">[</span><span·class="p"·data-group-id="5675285797-3">{</span><span·class="p"·data-group-id="5675285797-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-gr[·...·truncated·by·diffoscope;·len:·367,·SHA:·f3d376aa66542176974b8c088d3a4f824a7896481eb06e6a8dd32e0038ea195c·...·]-1">)</span><span·class="p">.</span><span·class="w">227 ······</span><span·class="p"·data-group-id="0482659836-2">[</span><span·class="p"·data-group-id="0482659836-3">{</span><span·class="p"·data-group-id="0482659836-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-gr[·...·truncated·by·diffoscope;·len:·367,·SHA:·372316e2e2d4ce1dc3f805cbb657dd39f4bd4d6a67836433da6abeec892a10c0·...·]-1">)</span><span·class="p">.</span><span·class="w">
228 ······</span><span·class="p"·data-group-id="5675285797-6">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="5675285797-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:·25cfe040e6b247a2f7a6c4459d2ea64ca503373808fae00e5f089d881ff8921e·...·]-7">]</span><span·class="p">,</span><span·class="w">228 ······</span><span·class="p"·data-group-id="0482659836-6">{</span><span·class="ss">selected</span><span·class="p">,</span><span·class="p"·data-group-id="0482659836-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:·5c092888dde07e5bf41d8fdf220b8328e8249729abf6319417bd87fa247a0860·...·]-7">]</span><span·class="p">,</span><span·class="w">
229 ················</span><span·class="p"·data-group-id="5675285797-8">[</span><span·class="p"·data-group-id="5675285797-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:·7a2741d2e5f1ddf214f4885a3d7341c63130eb48f854eddc534b702423bcbbb2·...·]-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="0482659836-8">[</span><span·class="p"·data-group-id="0482659836-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:·ec9e7f09069c71b773348594ca197c18989ff608cfcbe1837cede5061a57bdf1·...·]-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="5933914905-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="5933914905-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="8634749055-1">(</span><span·class="n">Ref</span><span·class="p"·data-group-id="8634749055-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>
143 KB
./usr/share/doc/erlang-doc/html/lib/odbc-2.15/doc/html/odbc.epub
2.59 KB
zipinfo {}
    
Offset 1, 18 lines modifiedOffset 1, 18 lines modified
1 Zip·file·size:·67284·bytes,·number·of·entries:·161 Zip·file·size:·67284·bytes,·number·of·entries:·16
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:56·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:51·mimetype
3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Mar-18·07:56·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······710·bx·defN·25-Mar-18·08:51·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····70635·bx·defN·25-Mar-18·07:56·OEBPS/odbc.xhtml4 ?rw-r--r--··6.1·unx····70635·bx·defN·25-Mar-18·08:51·OEBPS/odbc.xhtml
5 ?rw-r--r--··6.1·unx····51061·bx·defN·25-Mar-18·07:56·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx····51061·bx·defN·25-Mar-18·08:51·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx·····1245·bx·defN·25-Mar-18·07:56·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx·····1245·bx·defN·25-Mar-18·08:51·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx·····2442·bx·defN·25-Mar-18·07:56·OEBPS/introduction.xhtml7 ?rw-r--r--··6.1·unx·····2442·bx·defN·25-Mar-18·08:51·OEBPS/introduction.xhtml
8 ?rw-r--r--··6.1·unx····45354·bx·defN·25-Mar-18·07:56·OEBPS/getting_started.xhtml8 ?rw-r--r--··6.1·unx····45354·bx·defN·25-Mar-18·08:51·OEBPS/getting_started.xhtml
9 ?rw-r--r--··6.1·unx·····8056·bx·defN·25-Mar-18·07:56·OEBPS/error_handling.xhtml9 ?rw-r--r--··6.1·unx·····8056·bx·defN·25-Mar-18·08:51·OEBPS/error_handling.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx····11572·bx·defN·25-Mar-18·07:56·OEBPS/databases.xhtml12 ?rw-r--r--··6.1·unx····11572·bx·defN·25-Mar-18·08:51·OEBPS/databases.xhtml
13 ?rw-r--r--··6.1·unx·····2032·bx·defN·25-Mar-18·07:56·OEBPS/content.opf13 ?rw-r--r--··6.1·unx·····2032·bx·defN·25-Mar-18·08:51·OEBPS/content.opf
14 ?rw-r--r--··6.1·unx····12172·bx·stor·25-Mar-18·07:56·OEBPS/assets/odbc_app_arc.gif14 ?rw-r--r--··6.1·unx····12172·bx·stor·25-Mar-18·08:51·OEBPS/assets/odbc_app_arc.gif
15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:56·OEBPS/assets/logo.png15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:51·OEBPS/assets/logo.png
16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:56·META-INF/container.xml16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:51·META-INF/container.xml
17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:56·META-INF/com.apple.ibooks.display-options.xml17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:51·META-INF/com.apple.ibooks.display-options.xml
18 16·files,·226611·bytes·uncompressed,·64480·bytes·compressed:··71.5%18 16·files,·226611·bytes·uncompressed,·64480·bytes·compressed:··71.5%
56.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,·Mar·18·2025·07:56: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,·Mar·18·2025·08:51:04,·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
627 B
./usr/share/doc/erlang-doc/html/lib/os_mon-2.10.1/doc/html/.build
    
Offset 16, 15 lines modifiedOffset 16, 15 lines modified
16 dist/lato-latin-300-normal-YUMVEFOL.woff216 dist/lato-latin-300-normal-YUMVEFOL.woff2
17 dist/lato-latin-400-normal-W7754I4D.woff217 dist/lato-latin-400-normal-W7754I4D.woff2
18 dist/lato-latin-700-normal-2XVSBPG4.woff218 dist/lato-latin-700-normal-2XVSBPG4.woff2
19 dist/lato-latin-ext-300-normal-VPGGJKJL.woff219 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
20 dist/lato-latin-ext-400-normal-N27NCBWW.woff220 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
21 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff221 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
22 dist/remixicon-NKANDIL5.woff222 dist/remixicon-NKANDIL5.woff2
23 dist/search_data-30902A86.js23 dist/search_data-D20C2403.js
24 dist/sidebar_items-CB1A13C5.js24 dist/sidebar_items-CB1A13C5.js
25 index.html25 index.html
26 memsup.html26 memsup.html
27 notes.html27 notes.html
28 nteventlog.html28 nteventlog.html
29 os_mon_app.html29 os_mon_app.html
30 os_sup.html30 os_sup.html
52.2 KB
./usr/share/doc/erlang-doc/html/lib/os_mon-2.10.1/doc/html/os_mon.epub
2.54 KB
zipinfo {}
    
Offset 1, 18 lines modifiedOffset 1, 18 lines modified
1 Zip·file·size:·50285·bytes,·number·of·entries:·161 Zip·file·size:·50285·bytes,·number·of·entries:·16
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:56·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:50·mimetype
3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·07:56·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·08:50·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····17153·bx·defN·25-Mar-18·07:56·OEBPS/os_sup.xhtml4 ?rw-r--r--··6.1·unx····17153·bx·defN·25-Mar-18·08:50·OEBPS/os_sup.xhtml
5 ?rw-r--r--··6.1·unx·····3941·bx·defN·25-Mar-18·07:56·OEBPS/os_mon_app.xhtml5 ?rw-r--r--··6.1·unx·····3941·bx·defN·25-Mar-18·08:50·OEBPS/os_mon_app.xhtml
6 ?rw-r--r--··6.1·unx·····9012·bx·defN·25-Mar-18·07:56·OEBPS/nteventlog.xhtml6 ?rw-r--r--··6.1·unx·····9012·bx·defN·25-Mar-18·08:50·OEBPS/nteventlog.xhtml
7 ?rw-r--r--··6.1·unx····51221·bx·defN·25-Mar-18·07:56·OEBPS/notes.xhtml7 ?rw-r--r--··6.1·unx····51221·bx·defN·25-Mar-18·08:50·OEBPS/notes.xhtml
8 ?rw-r--r--··6.1·unx·····1225·bx·defN·25-Mar-18·07:56·OEBPS/nav.xhtml8 ?rw-r--r--··6.1·unx·····1225·bx·defN·25-Mar-18·08:50·OEBPS/nav.xhtml
9 ?rw-r--r--··6.1·unx····25551·bx·defN·25-Mar-18·07:56·OEBPS/memsup.xhtml9 ?rw-r--r--··6.1·unx····25551·bx·defN·25-Mar-18·08:50·OEBPS/memsup.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx····18738·bx·defN·25-Mar-18·07:56·OEBPS/disksup.xhtml12 ?rw-r--r--··6.1·unx····18738·bx·defN·25-Mar-18·08:50·OEBPS/disksup.xhtml
13 ?rw-r--r--··6.1·unx····22574·bx·defN·25-Mar-18·07:56·OEBPS/cpu_sup.xhtml13 ?rw-r--r--··6.1·unx····22574·bx·defN·25-Mar-18·08:50·OEBPS/cpu_sup.xhtml
14 ?rw-r--r--··6.1·unx·····2044·bx·defN·25-Mar-18·07:56·OEBPS/content.opf14 ?rw-r--r--··6.1·unx·····2044·bx·defN·25-Mar-18·08:50·OEBPS/content.opf
15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:56·OEBPS/assets/logo.png15 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:50·OEBPS/assets/logo.png
16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:56·META-INF/container.xml16 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:50·META-INF/container.xml
17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:56·META-INF/com.apple.ibooks.display-options.xml17 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:50·META-INF/com.apple.ibooks.display-options.xml
18 16·files,·173509·bytes·uncompressed,·47531·bytes·compressed:··72.6%18 16·files,·173509·bytes·uncompressed,·47531·bytes·compressed:··72.6%
48.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,·Mar·18·2025·07:56:24,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Mar·18·2025·08:50:26,·uncompressed·size·20,·method=store
1.21 KB
OEBPS/content.opf
1.18 KB
OEBPS/content.opf
Max HTML report size reached
632 B
./usr/share/doc/erlang-doc/html/lib/os_mon-2.10.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-30902A86.js"></script>124 <script·src="dist/search_data-D20C2403.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>
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="8993471550-1">[</span><span·class="mi">0</span><span·class="o">-</span><span·class="mi">9</span><span·class="p"·data-group-id="8993471550-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="3516083172-1">[</span><span·class="mi">0</span><span·class="o">-</span><span·class="mi">9</span><span·class="p"·data-group-id="3516083172-1">]</span><span·class="w">
  
177 </span><span·class="p"·data-group-id="8993471550-2">{</span><span·class="n">D</span><span·class="p"·data-group-id="8993471550-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="3516083172-2">{</span><span·class="n">D</span><span·class="p"·data-group-id="3516083172-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="8993471550-3">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="8993471550-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:·255,·SHA:·3393f0b907312e594ea5716858ddd94566ff7b5e63f78e500c67cad3598f1816·...·]-3">}</span><span·class="p">.</span><span·class="w">178 ··</span><span·class="p"·data-group-id="3516083172-3">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="3516083172-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:·255,·SHA:·efa289a71425bfc9afcd35e589a66780d2fe6939bcffc5753af0e2c5c0e8ad3d·...·]-3">}</span><span·class="p">.</span><span·class="w">
  
179 </span><span·class="p"·data-group-id="8993471550-6">{</span><span·class="n">D</span><span·class="p"·data-group-id="8993471550-6">}</span><span·class="o">+</span><span·class="err">\</span><span·class="p">.</span><span·class="p"·data-group-id="8993471550-7">{</span><span·class="n">D</span><span·class="p"·data-group-id="8993471550-7">}</span><span·class="o">+</span><span·class="p"·data-group-id="8993471550-8">(</span><span·class="p"·data-group-id="8993471550-9">(</span><span·class="n">E</span><span·class="p">|</span><span·class="ss">e</span><span·class="p"·data-group-id="8993471550-9">)</span><span·class="p"·data-group-id="8993471550-10">(</span><span·class="err">\</span><span·class="o">+</span><span·class="p">|</span><span·class="err">\</span><span·class="o">-</span><span·class="p"·data-group-id="8993471550-10">)</span><span·class="o">?</span><span·class="p"·data-group-id="8993471550-11">{</span><span·class="n">D</span><span·class="p"·data-group-id="8993471550-11">}</span><span·class="o">+</span><span·class="p"·data-group-id="8993471550-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="8993471550-12">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="8993471550-13">{</span><span·class="nb">float</span><span·class="p">,</span><span·class="n">TokenLine</span><[·...·truncated·by·diffoscope;·len:·452,·SHA:·abecd9d942048927ab30bb800463095324a4417c8e9a70cfd10a52e815402671·...·]179 </span><span·class="p"·data-group-id="3516083172-6">{</span><span·class="n">D</span><span·class="p"·data-group-id="3516083172-6">}</span><span·class="o">+</span><span·class="err">\</span><span·class="p">.</span><span·class="p"·data-group-id="3516083172-7">[·...·truncated·by·diffoscope;·len:·894,·SHA:·1382ff9254c0898c7c4e668c79f02e22a5013aba2f09db5289c983377948404f·...·]
 180 ··</span><span·class="p"·data-group-id="3516083172-12">{</span><span·class="ss">token</span><span·class="p">,</span><span·class="p"·data-group-id="3516083172-13">{</span><span·class="nb">float</span><span·class="p">,</span><span·class="n">TokenLine</span><span·class="p">,</span><span·class="nf">list_to_float</span><span·class="p"·data-group-id="3516083172-14">(</span><span·class="n">TokenChars</span><span·class="p"·data-group-id="3516083172-14">)</span><span·class="p"·data-group-id="3516083172-13">}</span><span·class="p"·data-group-id="3516083172-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="1017013120-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1017013120-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:·c0f31719ff3750f635860b8f2ed8cf7c2b0e1ece6d519ea8fa9b78e754cf01ae·...·]-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="2932579591-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2932579591-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:·7367f35f6ab5f06ec1b4f49566e2d225e12e323268c4e284436c496e9814855e·...·]-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="6836520424-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6836520424-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:·c4cecfb567ccd4ea999e33fc4a0187ea7fd4495a7ca071f6504cbd3598d48a3f·...·]-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="9801228498-1">(</span><span·class="n">InFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9801228498-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:·9c025cd3332f8b0022b1244f4d89a0e5f47f94cc3fb332a90e13f815c8e6ea26·...·]-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>
  
107 KB
./usr/share/doc/erlang-doc/html/lib/parsetools-2.6/doc/html/parsetools.epub
1.94 KB
zipinfo {}
    
Offset 1, 14 lines modifiedOffset 1, 14 lines modified
1 Zip·file·size:·44439·bytes,·number·of·entries:·121 Zip·file·size:·44439·bytes,·number·of·entries:·12
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:54·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:46·mimetype
3 ?rw-r--r--··6.1·unx····61841·bx·defN·25-Mar-18·07:54·OEBPS/yecc.xhtml3 ?rw-r--r--··6.1·unx····61841·bx·defN·25-Mar-18·08:46·OEBPS/yecc.xhtml
4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Mar-18·07:54·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······720·bx·defN·25-Mar-18·08:46·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx····31920·bx·defN·25-Mar-18·07:54·OEBPS/notes.xhtml5 ?rw-r--r--··6.1·unx····31920·bx·defN·25-Mar-18·08:46·OEBPS/notes.xhtml
6 ?rw-r--r--··6.1·unx······987·bx·defN·25-Mar-18·07:54·OEBPS/nav.xhtml6 ?rw-r--r--··6.1·unx······987·bx·defN·25-Mar-18·08:46·OEBPS/nav.xhtml
7 ?rw-r--r--··6.1·unx····49472·bx·defN·25-Mar-18·07:54·OEBPS/leex.xhtml7 ?rw-r--r--··6.1·unx····49472·bx·defN·25-Mar-18·08:46·OEBPS/leex.xhtml
8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:54·OEBPS/dist/epub-erlang-ESPT6BQV.css8 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:46·OEBPS/dist/epub-erlang-ESPT6BQV.css
9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:54·OEBPS/dist/epub-LSJCIYTM.js9 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:46·OEBPS/dist/epub-LSJCIYTM.js
10 ?rw-r--r--··6.1·unx·····1463·bx·defN·25-Mar-18·07:54·OEBPS/content.opf10 ?rw-r--r--··6.1·unx·····1463·bx·defN·25-Mar-18·08:46·OEBPS/content.opf
11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:54·OEBPS/assets/logo.png11 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:46·OEBPS/assets/logo.png
12 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:54·META-INF/container.xml12 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:46·META-INF/container.xml
13 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:54·META-INF/com.apple.ibooks.display-options.xml13 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:46·META-INF/com.apple.ibooks.display-options.xml
14 12·files,·167735·bytes·uncompressed,·42369·bytes·compressed:··74.7%14 12·files,·167735·bytes·uncompressed,·42369·bytes·compressed:··74.7%
40.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,·Mar·18·2025·07:54: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,·Mar·18·2025·08:46:52,·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="7716358597-1">[</span><span·class="p"·data-group-id="7716358597-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="7716358597-2">}</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·1016,·SHA:·ade22062b3a72203af1c0e5dd0ec37fa44a4acb72caa5b2d8aed96a54cd93087·...·]-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="2806469004-1">[</span><span·class="p"·data-group-id="2806469004-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="2806469004-2">}</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·1016,·SHA:·909cd8c44222fb9e7003fedddf6a341591ff561095e631800b5c605629d44345·...·]-6">}</span><span·class="p">,</span><span·class="w">
166 ·</span><span·class="p"·data-group-id="7716358597-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="7716358597-7">}</span><span·class="p"·data-group-id="7716358597-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="2806469004-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="2806469004-7">}</span><span·class="p"·data-group-id="2806469004-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.1/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.1/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="3919881363-1">[</span><span·class="p"·data-group-id="3919881363-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="3919881363-2">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·920,·SHA:·5169c57713d3168dfe3654801c2dc525aaf7cad94c5cdbafd77a81f0e3beba96·...·]-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="0537040056-1">[</span><span·class="p"·data-group-id="0537040056-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="0537040056-2">}</span><span·class="w">·</s[·...·truncated·by·diffoscope;·len:·920,·SHA:·953a0526fa553c5ffaf4292670d1aeb3c7d05ed96aba18e95ac185ceef036538·...·]-5">}</span><span·class="p">,</span><span·class="w">
237 ·</span><span·class="p"·data-group-id="3919881363-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="3919881363-6">}</span><span·class="p"·data-group-id="3919881363-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="0537040056-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="0537040056-6">}</span><span·class="p"·data-group-id="0537040056-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="2483140416-1">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2483140416-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:·ef7e8dc9bd53be26350c536807670d87a12ee21f1d61c73868d3c515957a71aa·...·]-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="7022921815-1">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7022921815-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:·6e6488187965dca888db58d69fb29ae348a1b30f9ff97c3d435c9d869ac2bad3·...·]-4">}</span><span·class="p">,</span><span·class="w">
250 ····························</span><span·class="p"·data-group-id="2483140416-5">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2483140416-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:·ab228f90b177f4b7ad5af22df2eda5784b47e5083fa808d8dba0054e0ff9174a·...·]-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="7022921815-5">{</span><span·class="ss">cons</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7022921815-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:·457f723037f1639539aa9dacee33fcfacc01191a199577a69746f65ebeacfc10·...·]-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="9657329633-1">(</span><span·class="n">Grammarfile</span><span·class="p"·data-group-id="9657329633-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="6034346597-1">(</span><span·class="n">Grammarfile</span><span·class="p"·data-group-id="6034346597-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="3869050009-1">(</span><span·class="nc">myscanner</span><span·class="p">:</span><span·class="nf">scan</span><span·class="p"·data-group-id="3869050009-2">(</span><span·class="n">Inport</span><span·class="p"·data-group-id="3869050009-2">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·2d6f203841a71c3fc0f4c842b998d04914570020cd25f821cfb710e88b9bdde6·...·]-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="3441906577-1">(</span><span·class="nc">myscanner</span><span·class="p">:</span><span·class="nf">scan</span><span·class="p"·data-group-id="3441906577-2">(</span><span·class="n">Inport</span><span·class="p"·data-group-id="3441906577-2">)</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·963f7106bae59fdf824f748df5516d47288ede1e01ae74a82ec4d76e0282cdce·...·]-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.1/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.1/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="6635643214-1">(</span><span·class="p"·data-group-id="6635643214-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="6635643214-2">}</span><span·class="p"·data-group-id="6635643214-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="6635643214-3">(</span><span·class="p"·data-group-id="6635643214-4">{</span><span·class="n">Mod</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·386,·SHA:·c418a19b01594d99e2ffbe5e5528dfdf0865652ce9f1642c84803900d2bb9398·...·]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="6458585208-1">(</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·258,·SHA:·0ac7394f70c87ce5fc4b4365883034fa12d469a765a536ef5cfb09f49e80e31f·...·]
 288 </span><span·class="nc">myparser</span><span·class="p">:</span><span·class="nf">parse_and_scan</span><span·class="p"·data-group-id="6458585208-3">(</span><span·class="p"·data-group-id="6458585208-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="6458585208-4">}</span><span·class="p"·data-group-id="6458585208-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.3/doc/html/erlang.html#apply/2"><code·class="inline">apply(Function,·Args)</code></a>·or289 <a·href="../../../../erts-15.2.3/doc/html/erlang.html#apply/2"><code·class="inline">apply(Function,·Args)</code></a>·or
290 <a·href="../../../../erts-15.2.3/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.3/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="0341252182-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="0341252182-1">}</span><span·class="w">293 following:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4272616430-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="4272616430-1">}</span><span·class="w">
294 </span><span·class="p"·data-group-id="0341252182-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="0341252182-2">}</span><span·class="w">294 </span><span·class="p"·data-group-id="4272616430-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="4272616430-2">}</span><span·class="w">
295 </span><span·class="p"·data-group-id="0341252182-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="0341[·...·truncated·by·diffoscope;·len:·6,·SHA:·88040474cc4f5b15bd3d807878d97f3d417f554adc391b35d04d14db0aa7766b·...·]-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="4272616430-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="4272[·...·truncated·by·diffoscope;·len:·6,·SHA:·959528a9055632e71af2c58eba589319033c742ca0cf59409cb5db577e62b190·...·]-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="9091657409-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="9091657409-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="6332061019-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="6332061019-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="9091657409-2">{</span><span·class="ss">rule</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9091657409-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:·79,·SHA:·f8c73cd4c79c0e4c9248434866c6158a3d576d9089989463ae63db99767c404b·...·]9-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="6332061019-2">{</span><span·class="ss">rule</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6332061019-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:·79,·SHA:·de848c4bf81e6889e59405f7f217604cf3cc8aedcc18f00686e4f6ab67277ac8·...·]9-3">]</span><span·class="p">,</span><span·class="w">
347 ········</span><span·class="ss">&#39;$4&#39;</span><span·class="p"·data-group-id="9091657409-2">}</span><span·class="p">.</span><span·class="w">347 ········</span><span·class="ss">&#39;$4&#39;</span><span·class="p"·data-group-id="6332061019-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="9091657409-4">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="9091657409-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="6332061019-4">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="6332061019-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="9091657409-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="9091657409-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="6332061019-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="6332061019-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="9091657409-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="9091657409-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="6332061019-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="6332061019-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="9091657409-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="6332061019-7">{</span><span·class="ss">erlang_code</span><span·class="p">,</span><span·class="w">
353 ·················</span><span·class="p"·data-group-id="9091657409-8">[</span><span·class="p"·data-group-id="9091657409-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:·158,·SHA:·284a0c48ac6aaab19b84d775635094200a5df88324327b5fa4d662383283c66c·...·]9-7">}</span><span·class="p">.</span><span·class="w">353 ·················</span><span·class="p"·data-group-id="6332061019-8">[</span><span·class="p"·data-group-id="6332061019-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:·158,·SHA:·15b5933d052aec486728c06f9b7fbfff85f66bd6b01c64517013106de1418254·...·]9-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="9091657409-10">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="9091657409-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="6332061019-10">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="6332061019-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="9091657409-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="9091657409-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="6332061019-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="6332061019-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="9091657409-12">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="9091657409-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="6332061019-12">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="6332061019-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="9091657409-13">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="9091657409-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="6332061019-13">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="6332061019-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="9091657409-14">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="9091657409-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="6332061019-14">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="6332061019-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="9091657409-15">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="9091657409-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="6332061019-15">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="6332061019-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="9091657409-16">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="9091657409-17">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="9091657409-17">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·206,·SHA:·e684d3665e5388d0c3ba66391f7252ec92d0b941251ee923d81034ff5953ed3e·...·]9-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="6332061019-16">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="6332061019-17">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="6332061019-17">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·206,·SHA:·4504ad338a8a366a3abf6e2a1ac29e992f6f581791ab6d08937b4e96fce35cc7·...·]9-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="9091657409-19">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="9091657409-20">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="9091657409-20">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·206,·SHA:·60de7971dac03c793a55982e7bd998c396fdff4b316df2cf13c0a2e404145e0c·...·]9-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="6332061019-19">{</span><span·class="nf">value_of</span><span·class="p"·data-group-id="6332061019-20">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="6332061019-20">)</span><span·class="p">,</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·206,·SHA:·6e32aa2a27aa295df5187f255ad6a4052472632bcdf4ca1450c785572d3e988b·...·]9-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="9091657409-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="9091657409-23">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·d312b089a0a78fbcc04627ba27ce1dc7c0858091716d1c96ad9822041fc046c3·...·]9-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="6332061019-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="6332061019-23">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·fbf24442965af4a60b3c4254b2fda3088b311437544cbe8ccfc7927b0525df76·...·]9-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="9091657409-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="9091657409-25">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·df7d3cbcee275cd188ab50847ae71deddd040dd9c7b7b5fc4a0db36de12145ae·...·]9-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="6332061019-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="6332061019-25">(</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·65,·SHA:·81764b08ccfba03e2edc63d4eb61be2c9807617f735632914128f26a41f53d5e·...·]9-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="9091657409-26">(</span><span·class="n">Token</span><span·class="p"·data-group-id="9091657409-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="6332061019-26">(</span><span·class="n">Token</span><span·class="p"·data-group-id="6332061019-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="9091657409-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="9091657409-27">)</span><span·class="p">.</span><span·class="w">372 ····</span><span·class="nf">element</span><span·class="p"·data-group-id="6332061019-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="6332061019-27">)</span><span·class="p">.</span><span·class="w">
373 </span><span·class="nf">line_of</span><span·class="p"·data-group-id="9091657409-28">(</span><span·class="n">Token</span><span·class="p"·data-group-id="9091657409-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="6332061019-28">(</span><span·class="n">Token</span><span·class="p"·data-group-id="6332061019-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="9091657409-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="9091657409-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="6332061019-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="6332061019-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/50402 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:·99828·bytes,·number·of·entries:·141 Zip·file·size:·99816·bytes,·number·of·entries:·14
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:56·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:50·mimetype
3 ?rw-r--r--··6.1·unx···125467·bx·defN·25-Mar-18·07:56·OEBPS/using_public_key.xhtml3 ?rw-r--r--··6.1·unx···125467·bx·defN·25-Mar-18·08:50·OEBPS/using_public_key.xhtml
4 ?rw-r--r--··6.1·unx······726·bx·defN·25-Mar-18·07:56·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······726·bx·defN·25-Mar-18·08:50·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx····64574·bx·defN·25-Mar-18·07:56·OEBPS/public_key_records.xhtml5 ?rw-r--r--··6.1·unx····64574·bx·defN·25-Mar-18·08:50·OEBPS/public_key_records.xhtml
6 ?rw-r--r--··6.1·unx·····4198·bx·defN·25-Mar-18·07:56·OEBPS/public_key_app.xhtml6 ?rw-r--r--··6.1·unx·····4198·bx·defN·25-Mar-18·08:50·OEBPS/public_key_app.xhtml
7 ?rw-r--r--··6.1·unx···198860·bx·defN·25-Mar-18·07:56·OEBPS/public_key.xhtml7 ?rw-r--r--··6.1·unx···198860·bx·defN·25-Mar-18·08:50·OEBPS/public_key.xhtml
8 ?rw-r--r--··6.1·unx····83769·bx·defN·25-Mar-18·07:56·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx····83769·bx·defN·25-Mar-18·08:50·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····1240·bx·defN·25-Mar-18·07:56·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····1240·bx·defN·25-Mar-18·08:50·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx·····1854·bx·defN·25-Mar-18·07:56·OEBPS/content.opf12 ?rw-r--r--··6.1·unx·····1854·bx·defN·25-Mar-18·08:50·OEBPS/content.opf
13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:56·OEBPS/assets/logo.png13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:50·OEBPS/assets/logo.png
14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:56·META-INF/container.xml14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:50·META-INF/container.xml
15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:56·META-INF/com.apple.ibooks.display-options.xml15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:50·META-INF/com.apple.ibooks.display-options.xml
16 14·files,·502020·bytes·uncompressed,·97354·bytes·compressed:··80.6%16 14·files,·502020·bytes·uncompressed,·97342·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,·Mar·18·2025·07:56:32,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Mar·18·2025·08:50:40,·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="8987355247-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="89873[·...·truncated·by·diffoscope;·len:·58,·SHA:·e8705fcab400d9e1e88f194ab3563f76bd638724dab86d5646bf34add774cef7·...·]-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="6702152586-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="67021[·...·truncated·by·diffoscope;·len:·58,·SHA:·101474ce7593ac62bea34b93a57c79f87d5f097e4cf2c1da3f86d5e222bf68de·...·]-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="8987355247-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:·acec282e6872baf9efd5d7430ae13e33020118304abc5a06966e897cef69cf70·...·]-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="6702152586-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:·ae5526e24c5b753e1632a351d58d89b521adecab2073e2cbdaed7181affc8a57·...·]-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3196 ·············</span><span·class="p"·data-group-id="8987355247-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="8987355247-8">{</span><span·class="p"·data-group-id="89[·...·truncated·by·diffoscope;·len:·61,·SHA:·bde2cd7ccf3308ea33852a5ac3e8921ea4dff2cf8dbd4024c1acac218165c6d2·...·]-7">}</span><span·class="p">,</span><span·class="w">3196 ·············</span><span·class="p"·data-group-id="6702152586-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="6702152586-8">{</span><span·class="p"·data-group-id="67[·...·truncated·by·diffoscope;·len:·61,·SHA:·cbdee5ec65a4219f61179777130a871d5124891e8c99609bc004c5a0d17360cc·...·]-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="8987355247-9">(</span><span·class="p"·data-group-id="8987355247-9">)</span><span·class="p"·data-group-id="8987355247-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="6702152586-9">(</span><span·class="p"·data-group-id="6702152586-9">)</span><span·class="p"·data-group-id="6702152586-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
3198 ··</span><span·class="p"·data-group-id="8987355247-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:·adf1598814704aa6b9f6f0f8196da95a80ae4e098fbad02df53eba0032fba211·...·]-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3198 ··</span><span·class="p"·data-group-id="6702152586-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:·2621e126a69e1b0e5cdac01323fa21fe6f4eeb8bfdefea2afd5a4a106cd85a27·...·]-10">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3199 ··</span><span·class="p"·data-group-id="8987355247-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:·b4a28c3b0bc4993c1e89e98e0f4c5898188f308d64f29a9e1c2759371b764191·...·]-12">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3199 ··</span><span·class="p"·data-group-id="6702152586-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:·a92c1ff8d5a40f4ebd15088d7669a30271ea4e7da668f8101a35d8c4f53393df·...·]-12">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3200 ··</span><span·class="p"·data-group-id="8987355247-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:·4cb5f83f36b7d0b018d7f453957ccadc3656b6e03358451aead3e4bece8841b8·...·]-14">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3200 ··</span><span·class="p"·data-group-id="6702152586-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:·a5bfd5ff9ab29be0dc11a3822c8b2943ea96ba64b452b6b17fe22a86e5702075·...·]-14">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3201 ··</span><span·class="p"·data-group-id="8987355247-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:·80e04e965f25e8722b066d371fed606518cc578c7b2113008d1cc047bd6052e0·...·]-2">}</span><span·class="p">,</span><span·class="w">3201 ··</span><span·class="p"·data-group-id="6702152586-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:·555b5f20fba23017f326d5b7d82ff78f25965ea8de0a9e19699c5d7642c222ba·...·]-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="7554795127-3">(</span><span·class="p"·data-group-id="7554795127-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="2090481294-3">(</span><span·class="p"·data-group-id="2090481294-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="7554795127-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:·e8f02b7fee8a66251837232e83d67ce006eb0532c1f4b903fa8e133125b2a089·...·]-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="2090481294-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:·f65107e6ad66d15b45e3e7ef3d96cbcae6583df6788c1a3f2f848962a14d76f2·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3204 ·············</span><span·class="p"·data-group-id="7554795127-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="7554795127-9">{</span><span·class="p"·data-group-id="75[·...·truncated·by·diffoscope;·len:·61,·SHA:·f2abdc99ac5561c6787ae09636cdb761a447200ecfa0671910297da5061b88b3·...·]-8">}</span><span·class="p">,</span><span·class="w">3204 ·············</span><span·class="p"·data-group-id="2090481294-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="2090481294-9">{</span><span·class="p"·data-group-id="20[·...·truncated·by·diffoscope;·len:·61,·SHA:·81855d9dda29c85ae378c61c4578bad4c4a62fa91ce657829de0d4b9481050ba·...·]-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="7554795127-10">(</span><span·class="p"·data-group-id="7554795127-10">)</span><span·class="p"·data-group-id="7554795127-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="2090481294-10">(</span><span·class="p"·data-group-id="2090481294-10">)</span><span·class="p"·data-group-id="2090481294-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
3206 ··</span><span·class="p"·data-group-id="7554795127-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:·7de8bde0accd4d4926dbbb0078a0de270bc922e12764e72f526e736964bb0d1b·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3206 ··</span><span·class="p"·data-group-id="2090481294-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:·679271d105aa74ab0955bbe5a91386c14aeedc36cc8b80017b66f6348ceae970·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3207 ··</span><span·class="p"·data-group-id="7554795127-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:·561712ed1a3e861879b328a33066600bb0ab25a16a52ec449a1d245e1f8097c4·...·]-13">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3207 ··</span><span·class="p"·data-group-id="2090481294-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:·bf58d004d78fdfe9163604be61f0a4bc03ff8a36fa4d690aa58df3f4e253830b·...·]-13">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3208 ··</span><span·class="p"·data-group-id="7554795127-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:·34c9a60dc1dd8fd19c5ee5c08a0d28cd276a233d0c446beedb348b1db706a5b3·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3208 ··</span><span·class="p"·data-group-id="2090481294-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:·810ecbb3cc1edb9d3ca9ba9dfb3e5c20a0c4b8d40bee55ed8c4b3d2cb15d1902·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3209 ··</span><span·class="p"·data-group-id="7554795127-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:·98d456931e827ccf1f08e22ef5a1a27abffcbad6925fd8193f06f926246e804b·...·]-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="2090481294-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:·799eac1b249c2cc06930f41215568a5e06ec66aca43a2fdb40092ece3eaae047·...·]-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="1856867724-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="1856867724-2">(</span><span·class="p"·data-group-id="1856867724-2">)</span><span·class="w[·...·truncated·by·diffoscope;·len:·257,·SHA:·11214e34b3156813f017e853406f730a63fc461d4b450e29a7a7368ec5cc5a92·...·]-3">)</span><span·class="p">,</span><span·class="w">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="1835524902-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="1835524902-2">(</span><span·class="p"·data-group-id="1835524902-2">)</span><span·class="w[·...·truncated·by·diffoscope;·len:·257,·SHA:·39dcdbb582115ba98483430ca67d4b5499e830d28fb872fd91140418aec1d1f4·...·]-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="1856867724-4">{</span><span·class="ss">dNSName</span><span·class="p">,</span><span·class="nf">string</span><span·class="p"·data-group-id="1856867724-5">(</span><span·class="p"·data-group-id="1856867724-5">)</span><span·class="p"·data-group-id="1856867724-4">[·...·truncated·by·diffoscope;·len:·330,·SHA:·54f8f395285d8a9a46ffb8e7024e198097d0d675536abf909ef6f42681e88413·...·]-7">)</span><span·class="w">·</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="1835524902-4">{</span><span·class="ss">dNSName</span><span·class="p">,</span><span·class="nf">string</span><span·class="p"·data-group-id="1835524902-5">(</span><span·class="p"·data-group-id="1835524902-5">)</span><span·class="p"·data-group-id="1835524902-4">[·...·truncated·by·diffoscope;·len:·330,·SHA:·e402699fb7153f78ee6aae1d7fde0501bf8ef08164236a42066817fd49b4f43f·...·]-7">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3375 ·················</span><span·class="p"·data-group-id="1856867724-8">{</span><span·class="ss">iPAddress</span><span·class="p">,</span><span·class="nf">list</span><span·class="p"·data-group-id="1856867724-9">(</span><span·class="nf">byte</span><span·class="p"·data-group-id="1856867724-10">(</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·951,·SHA:·3f31ae182d2bb7ced7b99dff219657359f19d7ee0bfb1f85f4b84e76ebc44e2e·...·]-1">)</span></code></pre><p>This·function·replaces·the·default·host·name·matching·rules.·The·fun·should3375 ·················</span><span·class="p"·data-group-id="1835524902-8">{</span><span·class="ss">iPAddress</span><span·class="p">,</span><span·class="nf">list</span><span·class="p"·data-group-id="1835524902-9">(</span><span·class="nf">byte</span><span·class="p"·data-group-id="1835524902-10">(</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·951,·SHA:·7d427f61ec24b151b80d04d181587a7228272ba13ce5e51c53ac85d7565dcf90·...·]-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.3/doc/html/erlang.html#t:term/0">term</a>()}·|3561 ····································{revocation_status_undetermined,·Reason·::·<a·href="../../../../erts-15.2.3/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="4939789865-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="4939789865-2">{</span><span·class="p"·data-group-id="4939789865-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·215,·SHA:·47965fd91c5d7f247ccc853fde5e9d822d97a2bb96e26afff3fd9b232ee430f3·...·]-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="7408516189-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="7408516189-2">{</span><span·class="p"·data-group-id="7408516189-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·215,·SHA:·2381d17c2cfc12a5d5b6c50bd38782421c2313f3e141948791cc88c87f35f8fe·...·]-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="4939789865-4">{</span><span·class="p"·data-group-id="4939789865-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="7408516189-4">{</span><span·class="p"·data-group-id="7408516189-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="2651208359-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="2651208359-2">{</span><span·class="p"·data-group-id="2651208359-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·5e18bdcf341687a848dce17fd310def5dfecdcc5b5dd79455cc6b118bf32a937·...·]-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="3580872696-1">(</span><span·class="o">#</span><span·class="ss">&#39;DistributionPoint&#39;</span><span·class="p"·data-group-id="3580872696-2">{</span><span·class="p"·data-group-id="3580872696-2">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·162,·SHA:·d1761c73d3d6420d3a4b1797b1b764a2b87d920204d2bc5b705f363a4d25883e·...·]-3">}</span><span·class="p">,</span><span·class="w">
3570 ····</span><span·class="p"·data-group-id="2651208359-4">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="p"·data-group-id="2651208359-5">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2651208359-6">{</span><span·class="p"·data-group-id="2651208359-6">}</span><span·class="p"·data-group-id="2651208359-5">]</span><span·class="p"·data-group-id="2651208359-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserState</span><span·class="p">:</span><span·class="p">:</span><span·class="nf">term</span><span·class="p"·data-group-id="2651208359-7">(</span><span·class="p"·data-group-id="2651208359-7">)</span><span·class="p"·data-group-id="2651208359-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
3571 ··</span><span·class="p"·data-group-id="2651208359-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="2651208359-9">{</sp[·...·truncated·by·diffoscope;·len:·394,·SHA:·88ecd6d7b8bb57980ddfa55336f5ae41e92c171d85893875e23ebb35caba60e4·...·]3570 ····</span><span·class="p"·data-group-id="3580872696-4">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="p"·data-group-id="3580872696-5">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><sp[·...·truncated·by·diffoscope;·len:·592,·SHA:·5126505f3887683cd4260c0496221f4fd59369ed2ea4b8afc1e0e96dd11de7ba·...·]
 3571 ··</span><span·class="p"·data-group-id="3580872696-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="3580872696-9">{</span><span·class="p"·data-group-id="3580872696-9">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3580872696-10">[</span><span·class="ss">der_encoded</span><span·class="p"·data-group-id="3580872696-10">]</span><span·class="p"·data-group-id="3580872696-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="4082717501-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:·430,·SHA:·ab8a4d73c9be82a8fcc3187ae23e4a8e29eaa63ee162353cdd1eef00eb1277db·...·]-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="5430849730-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:·430,·SHA:·e8699c72047d556767179bbd3285ee23bb6d0ad05f3e96d79074c6211df24163·...·]-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="3474687964-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="3474687964-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="8688538515-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="8688538515-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="3474687964-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="3474687964-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="8688538515-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="8688538515-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="8688538515-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="8688538515-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="8688538515-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="8688538515-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="8688538515-4">}</span><span·class="p"·data-group-id="8688538515-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="4460395216-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="4460395216-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="4460395216-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="4460395216-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="3474687964-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="4460395216-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="3474687964-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="3474687964-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="3474687964-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="3474687964-4">}</span><span·class="p"·data-group-id="3474687964-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="7037987543-1">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="7037987543-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="7037987543-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="7037987543-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="7037987543-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="7037987543-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="4460395216-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="7037987543-5">[</span><span·class="p"·data-group-id="7037987543-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="7037987543-6">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·d0023c267f9394803961797e8f96a7114e2e700796cb8f235ff69cfa09510a24·...·]-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="4460395216-5">[</span><span·class="p"·data-group-id="4460395216-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="4460395216-6">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·4e866c682d9487a0344f892f29dc6c4c2a47d6fbce66dcdf6417f140bd9163f5·...·]-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="7037987543-4">}</span><span·class="p"·data-group-id="7037987543-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="4460395216-4">}</span><span·class="p"·data-group-id="4460395216-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="9059289029-1">(</span><span·class="s">&quot;public_key/include/public_key.hrl&quot;</span><span·class="p"·data-group-id="9059289029-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="3281256682-1">(</span><span·class="s">&quot;public_key/include/public_key.hrl&quot;</span><span·class="p"·data-group-id="3281256682-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="4382285586-1">(</span><span·class="p"·data-group-id="4382285586-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="4382285586-2">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·231,·SHA:·60644793fcd97454861080f74ea31e58cb5c1a7802786ed1ded6ac604f56bdd1·...·]-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="7049867764-1">(</span><span·class="p"·data-group-id="7049867764-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="7049867764-2">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·231,·SHA:·acf9aadea392aaf13f1cbe540554873f07a71b58def8741c7d79c1b107da7d89·...·]-3">)</span><span·class="w">
  
140 </span><span·class="nf">utc_time</span><span·class="p"·data-group-id="4382285586-4">(</span><span·class="p"·data-group-id="4382285586-4">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4382285586-5">{</span><span·class="ss">utcTime</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·113,·SHA:·5d96dabb2389edb4b099a33b476e0f610aa26042789b6fa8bb5a5139af1037e9·...·]-5">}</span><span·class="w">140 </span><span·class="nf">utc_time</span><span·class="p"·data-group-id="7049867764-4">(</span><span·class="p"·data-group-id="7049867764-4">)</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7049867764-5">{</span><span·class="ss">utcTime</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·113,·SHA:·e23c3741efec3f296556577c5206d9269976400cfec3166037d51295c41b60cf·...·]-5">}</span><span·class="w">
  
141 </span><span·class="nf">general_time</span><span·class="p"·data-group-id="4382285586-6">(</span><span·class="p"·data-group-id="4382285586-6">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4382285586-7">{</span><span·class="ss">generalTime</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·118,·SHA:·3681ca2b3b2cdb80dd75d18745d61422e0ff30cac73c270a25b4b12bda4121e5·...·]-7">}</span><span·class="w">141 </span><span·class="nf">general_time</span><span·class="p"·data-group-id="7049867764-6">(</span><span·class="p"·data-group-id="7049867764-6">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7049867764-7">{</span><span·class="ss">generalTime</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·118,·SHA:·053bcb9ec7f77aaaad380ee6c1731067fb48b8643cd3c2f5be7ba86dbed5cf4b·...·]-7">}</span><span·class="w">
  
142 </span><span·class="nf">general_name</span><span·class="p"·data-group-id="4382285586-8">(</span><span·class="p"·data-group-id="4382285586-8">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4382285586-9">{</span><span·class="ss">rfc822Name</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·205,·SHA:·9b7047e6d4f6bfd841830de7551ec9b71f0f1550cfb976a5d761d476b7b618d6·...·]-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="7049867764-8">(</span><span·class="p"·data-group-id="7049867764-8">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7049867764-9">{</span><span·class="ss">rfc822Name</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·205,·SHA:·62d208c1e09c543561c469e5ed2f8be416354b7219cf070c73c804c908015341·...·]-9">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
143 ·················</span><span·class="p"·data-group-id="4382285586-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="4382285586-12">(</span><span·class="p"·data-group-id="4382285586-12">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·63d1a6b74d269e12409c0299aedbe0fe172ea34ae5c8b5000334ca4682e1c5f5·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">143 ·················</span><span·class="p"·data-group-id="7049867764-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="7049867764-12">(</span><span·class="p"·data-group-id="7049867764-12">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·16d0903870d6292452335d7cef92dbb504fb4a1b7201e43f4bf81dffbcdf89e1·...·]-11">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
144 ·················</span><span·class="p"·data-group-id="4382285586-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="4382285586-14">(</span><span·class="p"·data-group-id="4382285586-14">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">144 ·················</span><span·class="p"·data-group-id="7049867764-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="7049867764-14">(</span><span·class="p"·data-group-id="7049867764-14">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
145 ·················</span><span·class="p"·data-group-id="4382285586-15">{</span><span·class="ss">directoryName</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4382285586-16">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·379,·SHA:·54663a544e395e2094987923564cb3d46be8c6a267e7b4ab995e0f4e3e321c91·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">145 ·················</span><span·class="p"·data-group-id="7049867764-15">{</span><span·class="ss">directoryName</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7049867764-16">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·379,·SHA:·e248e82fce3caa0d7ec0ebe4d9b372b9f1d35835ab84717116d0f683cd0e660c·...·]-15">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
146 ·················</span><span·class="p"·data-group-id="4382285586-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="4382285586-20">(</span><span·class="p"·data-group-id="4382285586-20">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·42990bbd291aa8934a71bb3761e458252b53f51e8c5be5e7b565e230cd840255·...·]-19">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">146 ·················</span><span·class="p"·data-group-id="7049867764-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="7049867764-20">(</span><span·class="p"·data-group-id="7049867764-20">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·b101a18704042aa3b0a9a14d874c44c8abf5dd4d51df197e014424dbf49579eb·...·]-19">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
147 ·················</span><span·class="p"·data-group-id="4382285586-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="4382285586-22">(</span><span·class="p"·data-group-id="4382285586-22">)</span><sp[·...·truncated·by·diffoscope;·len:·232,·SHA:·f749c2f82ef0f1ff1092e8d1f8bbeaf5d8af32d8ab047b3460cf9afe7c54db80·...·]-21">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">147 ·················</span><span·class="p"·data-group-id="7049867764-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="7049867764-22">(</span><span·class="p"·data-group-id="7049867764-22">)</span><sp[·...·truncated·by·diffoscope;·len:·232,·SHA:·73ffb7d23956fd36f2611b18999473253d22a5992f312a3ea986a1cbff1989b6·...·]-21">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
148 ·················</span><span·class="p"·data-group-id="4382285586-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="4382285586-25">(</span><span·class="p"·data-group-id="4382285586-25">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·0dd83a5639712f3e9f59d2352b93256815cac17142a3aa2c200579bbc021c46d·...·]-24">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">148 ·················</span><span·class="p"·data-group-id="7049867764-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="7049867764-25">(</span><span·class="p"·data-group-id="7049867764-25">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·0ac9e368e5003369c2e7709da0ef76dbd8bfa2eb9e9110721701edf4ea14faff·...·]-24">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
149 ·················</span><span·class="p"·data-group-id="4382285586-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="4382285586-27">(</span><span·class="p"·data-group-id="4382285586-27">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·4c7d6726dd0b5dfdf31e0b3fd26cc1fc8854cd7ddbc29f90a436f37222cca9ba·...·]-26">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">149 ·················</span><span·class="p"·data-group-id="7049867764-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="7049867764-27">(</span><span·class="p"·data-group-id="7049867764-27">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·d83e72f95fa5396b8addc12277b9fec1936360fab2115d53df0dff251c730098·...·]-26">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
150 ·················</span><span·class="p"·data-group-id="4382285586-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="4382285586-29">(</span><span·class="p"·data-group-id="4382285586-29">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·4c7d6726dd0b5dfdf31e0b3fd26cc1fc8854cd7ddbc29f90a436f37222cca9ba·...·]-28">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">150 ·················</span><span·class="p"·data-group-id="7049867764-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="7049867764-29">(</span><span·class="p"·data-group-id="7049867764-29">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·d83e72f95fa5396b8addc12277b9fec1936360fab2115d53df0dff251c730098·...·]-28">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
151 ·················</span><span·class="p"·data-group-id="4382285586-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="4382285586-31">(</span><span·class="p"·data-group-id="4382285586-31">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·63d1a6b74d269e12409c0299aedbe0fe172ea34ae5c8b5000334ca4682e1c5f5·...·]-30">}</span><span·class="w">151 ·················</span><span·class="p"·data-group-id="7049867764-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="7049867764-31">(</span><span·class="p"·data-group-id="7049867764-31">)</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·16d0903870d6292452335d7cef92dbb504fb4a1b7201e43f4bf81dffbcdf89e1·...·]-30">}</span><span·class="w">
  
152 </span><span·class="nf">special_string</span><span·class="p"·data-group-id="4382285586-32">(</span><span·class="p"·data-group-id="4382285586-32">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4382285586-33">{</span><span·class="ss">teletexString</span><span·class="p">[·...·truncated·by·diffoscope;·len:·211,·SHA:·6be3d86fd2b25adf24e34200ab4bfe2d6d77725459aff48b6aec505d07343b64·...·]-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="7049867764-32">(</span><span·class="p"·data-group-id="7049867764-32">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7049867764-33">{</span><span·class="ss">teletexString</span><span·class="p">[·...·truncated·by·diffoscope;·len:·211,·SHA:·741b9c130a28cae6500cb3bf378053af7b5ab16c7cff71145836dfb4313c9553·...·]-33">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
153 ·153 ·
154 ···················</span><span·class="p"·data-group-id="4382285586-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="4382285586-36">(</span><span·class="p"·data-group-id="4382285586-36">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·22fa9ed8f30a3dc1b1817c95432455597eca4e1c4f6c2039aae9978a464499d9·...·]-35">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">154 ···················</span><span·class="p"·data-group-id="7049867764-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="7049867764-36">(</span><span·class="p"·data-group-id="7049867764-36">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·8f518a305720a25c39fe7f5c8c716d74ec516c1fdb4240b51aa2b12ca6390eba·...·]-35">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
155 ···················</span><span·class="p"·data-group-id="4382285586-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="4382285586-38">(</span><span·class="p"·data-group-id="4382285586-38">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·22fa9ed8f30a3dc1b1817c95432455597eca4e1c4f6c2039aae9978a464499d9·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">155 ···················</span><span·class="p"·data-group-id="7049867764-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="7049867764-38">(</span><span·class="p"·data-group-id="7049867764-38">)</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·8f518a305720a25c39fe7f5c8c716d74ec516c1fdb4240b51aa2b12ca6390eba·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
156 ···················</span><span·class="p"·data-group-id="4382285586-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="4382285586-40">(</span><span·class="p"·data-group-id="4382285586-40">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·013ad77f1713ff53c628d642f1f87b9c5ad6e136f6e6bb26ca1ff37fc2a01439·...·]-39">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">156 ···················</span><span·class="p"·data-group-id="7049867764-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="7049867764-40">(</span><span·class="p"·data-group-id="7049867764-40">)</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·6c1a78b3cf5e700496e8eea7cda7ae8665047255da3a90f2fa0bcaabc4b75b1a·...·]-39">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
  
157 ···················</span><span·class="p"·data-group-id="4382285586-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="4382285586-42">(</span><span·class="p"·data-group-id="4382285586-42">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·4c7d6726dd0b5dfdf31e0b3fd26cc1fc8854cd7ddbc29f90a436f37222cca9ba·...·]-41">}</span><span·class="w">157 ···················</span><span·class="p"·data-group-id="7049867764-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="7049867764-42">(</span><span·class="p"·data-group-id="7049867764-42">)</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·d83e72f95fa5396b8addc12277b9fec1936360fab2115d53df0dff251c730098·...·]-41">}</span><span·class="w">
  
158 </span><span·class="nf">dist_reason</span><span·class="p"·data-group-id="4382285586-43">(</span><span·class="p"·data-group-id="4382285586-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="7049867764-43">(</span><span·class="p"·data-group-id="7049867764-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="4382285586-44">(</span><span·class="p"·data-group-id="4382285586-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="4382285586-45">(</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·0dd83a5639712f3e9f59d2352b93256815cac17142a3aa2c200579bbc021c46d·...·]-45">)</span><span·class="w">160 </span><span·class="n">OID_macro</span><span·class="p"·data-group-id="7049867764-44">(</span><span·class="p"·data-group-id="7049867764-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="7049867764-45">(</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·0ac9e368e5003369c2e7709da0ef76dbd8bfa2eb9e9110721701edf4ea14faff·...·]-45">)</span><span·class="w">
  
161 </span><span·class="n">OID_name</span><span·class="p"·data-group-id="4382285586-46">(</span><span·class="p"·data-group-id="4382285586-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="4382285586-47">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·4e975a4cb273f32471f2dc8e0a42f189f2bb9e65a6f4298d82ca6cfb250e60b9·...·]-47">)</span></code></pre><h2·id="rsa"·class="section-heading">161 </span><span·class="n">OID_name</span><span·class="p"·data-group-id="7049867764-46">(</span><span·class="p"·data-group-id="7049867764-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="7049867764-47">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·611140d25aad76e08835c757a665a155666f0bcd6b230414bea4a5666c6b82a9·...·]-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="7184111910-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="5745223415-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="7184111910-1">}</span><span·class="p">.</span><span·class="w">172 ··</span><span·class="p"·data-group-id="5745223415-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="7184111910-2">{</span><span·class="w">173 </span><span·class="o">#</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p"·data-group-id="5745223415-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="7184111910-2">}</span><span·class="p">.</span><span·class="w">184 ··</span><span·class="p"·data-group-id="5745223415-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="7184111910-3">{</span><span·class="w">185 </span><span·class="o">#</span><span·class="ss">&#39;OtherPrimeInfo&#39;</span><span·class="p"·data-group-id="5745223415-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="7184111910-3">}</span><span·class="p">.</span><span·class="w">189 ··</span><span·class="p"·data-group-id="5745223415-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="7184111910-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="5745223415-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="7184111910-4">}</span><span·class="p">.</span><span·class="w">195 ··</span><span·class="p"·data-group-id="5745223415-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="7184111910-5">{</span><span·class="w">196 </span><span·class="o">#</span><span·class="ss">&#39;HashAlgorithm&#39;</span><span·class="p"·data-group-id="5745223415-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="7184111910-5">}</span><span·class="p">.</span><span·class="w">199 ··</span><span·class="p"·data-group-id="5745223415-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="7184111910-6">{</span><span·class="w">200 </span><span·class="o">#</span><span·class="ss">&#39;MaskGenAlgorithm&#39;</span><span·class="p"·data-group-id="5745223415-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="7184111910-6">}</span><span·class="p">.</span></code></pre><h2·id="dsa"·class="section-heading">203 ··</span><span·class="p"·data-group-id="5745223415-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="5334754600-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="1106098476-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="5334754600-1">}</span><span·class="p">.</span><span·class="w">217 ··</span><span·class="p"·data-group-id="1106098476-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="5334754600-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="1106098476-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="5334754600-2">}</span><span·class="p">.</span></code></pre><h2·id="ecdsa-and-eddsa"·class="section-heading">222 ··</span><span·class="p"·data-group-id="1106098476-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="2803925349-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="2803925349-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·215,·SHA:·6a928236ed658d7a0b7747fed0a5419ed32e05a8f64332d0c947bc26649f1669·...·]-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="6144431208-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="6144431208-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·215,·SHA:·40ddb83905e74631a6265a23e55140909c21b9b285d3b2b3feb994ca3feb6980·...·]-2">)</span><span·class="p">.</span><span·class="w">
152 </span><span·class="p"·data-group-id="2803925349-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2803925349-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:·2fbbeeb3114579e6c6a6b908c48700f9e8f7923c850617128929278b95fd7bf6·...·]-2">)</span><span·class="p">.</span><span·class="w">152 </span><span·class="p"·data-group-id="6144431208-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6144431208-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:·3bde557251a573389aab47f2969bebda75dabb268aafc93068c837974e8387bd·...·]-2">)</span><span·class="p">.</span><span·class="w">
153 </span><span·class="p"·data-group-id="1918421445-3">[</span><span·class="p"·data-group-id="1918421445-4">{</span><span·class="ss">&#39;DSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1918421445-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="0738161967-3">[</span><span·class="p"·data-group-id="0738161967-4">{</span><span·class="ss">&#39;DSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="0738161967-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="1918421445-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="0738161967-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="1918421445-4">}</span><span·class="p"·data-group-id="1918421445-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:·244,·SHA:·0a1100bddf4375639a25dbaaa20318d36ed7b3a83f2655be9e25274f394cca5d·...·]-1">)</span><span·class="p">.</span><span·class="w">156 ····················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="0738161967-4">}</span><span·class="p"·data-group-id="0738161967-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:·244,·SHA:·8eb23d06a2ca6fcc9c677ececd7a1eebc31513bca889f917688d59cbf68e9617·...·]-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="5139670552-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="3608993634-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="5139670552-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="3608993634-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="7383740852-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="7383740852-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="7383740852-2">(</span><span·class="s">&quot;rsa.pem&quot;</span><span·class="p"·data-group-id="7383740852-2">)</span><span·class="p">.</span><span·class="w"> 
169 </span><span·class="p"·data-group-id="7383740852-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7383740852-4">&lt;&lt;</span><span·class="s">&quot;Bag·Attribute&quot;</span><span·class="p">.</span><span·class="p"[·...·truncated·by·diffoscope;·len:·751,·SHA:·a3ca7ceaa97cdad73bbd84a6830b3052e191308419ebbc5e6a3cc106bd29eb2b·...·]-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="0957370508-1">{</span><span·class="ss">ok</span><span·class="p"[·...·truncated·by·diffoscope;·len:·408,·SHA:·045d1a3ea7e91bb1ac017789727e9a5ff8928f4ea9d6072ad36ef10097e9f3e5·...·]-2">)</span><span·class="p">.</span><span·class="w">
 169 </span><span·class="p"·data-group-id="0957370508-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0957370508-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·class="p"·data-group-id="0957370508-4">&gt;&gt;</span><span·class="p"·data-group-id="0957370508-3">}</span></code></pre><p>The·following·PEM·file·has·only·one·entry,·a·private·RSA·key:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="mi">2</span><span·class="o">&gt;</span><span·class="p"·data-group-id="5534922850-1">[</span><span·class="n">RSAEntry</span><span·class="p"·data-group-id="5534922850-1">]</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">public_key</span><span·class="p">:</span><span·class="nf">pem_decode</span><span·class="p"·data-group-id="5534922850-2">(</span><span·class="n">PemBin</span><span·class="p"·data-group-id="5534922850-2">)</span><span·class="p">.</span><span·class="w">
170 </span><span·class="p"·data-group-id="9913489271-3">[</span><span·class="p"·data-group-id="9913489271-4">{</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9913489271-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="5534922850-3">[</span><span·class="p"·data-group-id="5534922850-4">{</span><span·class="ss">&#39;RSAPrivateKey&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="5534922850-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="9913489271-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="5534922850-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">
173 ··················</span><span·class="p"·data-group-id="9913489271-6">{</span><span·class="s">&quot;DES-EDE3-CBC&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9913489271-7">&lt;&lt;</span><span·class="s">&quot;kÙeø¼pµL&quot;</span><span·class="p"·data-group-id="9913489271-7">&gt;&gt;</span>[·...·truncated·by·diffoscope;·len:·774,·SHA:·a954d2a40c051b348d51118f7505ee1a257d5bddac539a3cc99e20fc31f64c5e·...·]-1">)</span><span·class="p">.</span><span·class="w">173 ··················</span><span·class="p"·data-group-id="5534922850-6">{</span><span·class="s">&quot;DES-EDE3-CBC&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="5534922850-7">&lt;&lt;</span><span·class="s">&quot;kÙeø¼pµL&quot;</span><span·class="p"·data-group-id="5534922850-7">&gt;&gt;</span>[·...·truncated·by·diffoscope;·len:·774,·SHA:·cef7f77efd2ca9accb412184e480379bdcfddb795876406f966a696199fea2d0·...·]-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="2702223782-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="1928313084-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="2702223782-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="1928313084-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="3524788591-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="3524788591-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·219,·SHA:·f2e34e5bbc5b1854fde4bc6c2534457e7d4d869be9304a078db07e7f48592c5d·...·]-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="8205314050-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="8205314050-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·219,·SHA:·505d6bcb81a92af6823797240c4e1b391d4d8403ee45d71992b91a549a40664a·...·]-2">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="p"·data-group-id="3524788591-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3524788591-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:·a0be6a1382a54ea4a7ef6d41b4cd181ea450c8a4b38aeffaea75ad07ee08d245·...·]1-2">)</span><span·class="p">.</span><span·class="w">190 </span><span·class="p"·data-group-id="8205314050-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8205314050-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:·99b8d9a7506fc4406fb09fe089bfa10b09f0912e2592ce62f613830c0fd66234·...·]1-2">)</span><span·class="p">.</span><span·class="w">
191 </span><span·class="p"·data-group-id="9202893591-3">[</span><span·class="p"·data-group-id="9202893591-4">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9202893591-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="4903603081-3">[</span><span·class="p"·data-group-id="4903603081-4">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4903603081-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="9202893591-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="4903603081-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="9202893591-4">}</span><span·class="p">,</span><span·class="w">194 ················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="4903603081-4">}</span><span·class="p">,</span><span·class="w">
195 ·</span><span·class="p"·data-group-id="9202893591-6">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="9202893591-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="4903603081-6">{</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="4903603081-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="9202893591-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="4903603081-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="9202893591-6">}</span><span·class="p"·data-group-id="9202893591-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:·291,·SHA:·643744635354329c34aa9d2b47b8c5c1cf35d05a43a336d5eabc484dfa220b0c·...·]-1">)</span><span·class="p">.</span><span·class="w">197 ················</span><span·class="ss">not_encrypted</span><span·class="p"·data-group-id="4903603081-6">}</span><span·class="p"·data-group-id="4903603081-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:·291,·SHA:·c9c9562361d814b1fb945a6820f066b459cd8111cd18a96a7a348a6754d23d6e·...·]-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="5729909525-2">{</span><span·class="w">198 </span><span·class="o">#</span><span·class="ss">&#39;Certificate&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-3">{</span><span·class="w">200 ········</span><span·class="o">#</span><span·class="ss">&#39;TBSCertificate&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-4">{</span><span·class="w">203 ················</span><span·class="o">#</span><span·class="ss">&#39;AlgorithmIdentifier&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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:·133,·SHA:·35a73fa4f788da379782b077738e53bfce0bcbbe57bf4947e8a620df9179e2d1·...·]-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="2195569521-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:·133,·SHA:·b0e8bea9264f9e4dce006c3e0a0333b3cfbc8474899d32fe1f9c24a595a6d934·...·]-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="5729909525-6">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5729909525-6">&gt;&gt;</span><span·class="p"·data-group-id="5729909525-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="2195569521-6">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2195569521-6">&gt;&gt;</span><span·class="p"·data-group-id="2195569521-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="5729909525-7">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">207 ················</span><span·class="p"·data-group-id="2195569521-7">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">
208 ····················</span><span·class="p"·data-group-id="5729909525-8">[</span><span·class="p"·data-group-id="5729909525-9">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-10">{</span><span·class="w">208 ····················</span><span·class="p"·data-group-id="2195569521-8">[</span><span·class="p"·data-group-id="2195569521-9">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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:·410,·SHA:·77e8a0413b9e27ac5f7111d185594ab4e2c2bf5a1ee41b102ac6af838a47a9fc·...·]-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="2195569521-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:·410,·SHA:·89c5e87315e6303237a069db00abd5c4a62fb5fe21ddd96520edec588b55d887·...·]-9">]</span><span·class="p">,</span><span·class="w">
211 ·····················</span><span·class="p"·data-group-id="5729909525-13">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-14">{</span><span·class="w">211 ·····················</span><span·class="p"·data-group-id="2195569521-13">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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:·510,·SHA:·4a05c8f844eec0f09d68d02afd837fbac3151dd3c655b040d31464ed253a1e55·...·]-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="2195569521-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:·510,·SHA:·f07596f4ed3466db57fe3ca742d33ff61e8b61babecdb56f6fccb01ce724e2f9·...·]-13">]</span><span·class="p">,</span><span·class="w">
214 ·····················</span><span·class="p"·data-group-id="5729909525-17">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-18">{</span><span·class="w">214 ·····················</span><span·class="p"·data-group-id="2195569521-17">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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:·562,·SHA:·8a06b61804af873cd6475fc4c7899291434c1dc9699ca994196f2e569cfabce5·...·]-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="2195569521-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:·562,·SHA:·eaa11c47b4f8b3cef66e8a4516743a329fd6110765214b436761f98922c1a845·...·]-17">]</span><span·class="p">,</span><span·class="w">
217 ·····················</span><span·class="p"·data-group-id="5729909525-21">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-22">{</span><span·class="w">217 ·····················</span><span·class="p"·data-group-id="2195569521-21">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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:·462,·SHA:·ac35d097666bb9477b844d3638dc8fec5faa8dca2e458e871ccbae4ff81b3c8d·...·]-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="2195569521-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:·462,·SHA:·f85981c3efbf4717add2db13591f5ad473c3db0516b6aa3ee67044f9f9ecb8c3·...·]-21">]</span><span·class="p">,</span><span·class="w">
220 ·····················</span><span·class="p"·data-group-id="5729909525-25">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-26">{</span><span·class="w">220 ·····················</span><span·class="p"·data-group-id="2195569521-25">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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="5729909525-28">&gt;&[·...·truncated·by·diffoscope;·len:·105,·SHA:·4ffbe0b89269fda02c69be41fa4a189671e2b0d5cc358675e756a0f1989731b6·...·]-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="2195569521-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="2195569521-28">&gt;&[·...·truncated·by·diffoscope;·len:·105,·SHA:·42fd8fb3f264bfd664be91cbf2c131884804e7bc579266f661c25565c571ae95·...·]-25">]</span><span·class="p">,</span><span·class="w">
223 ·····················</span><span·class="p"·data-group-id="5729909525-29">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-30">{</span><span·class="w">223 ·····················</span><span·class="p"·data-group-id="2195569521-29">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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:·134,·SHA:·b18876ec89de9f23ba920e296f709e44bf2e14c39cfd5f4325269b5524f976c7·...·]-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="2195569521-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:·134,·SHA:·67dbe64ddab074f6b3ed4444955df33e1febeb791b4df1b3cab9d8be8b2c2f41·...·]-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="5729909525-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:·616,·SHA:·1ccc6f9ddd8d294fd4fce3a0c1c981aea30ed66822c30b0e589549effcc8f95b·...·]-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="2195569521-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:·616,·SHA:·bb5a21ade4033d1c08bf91d57e9c52f2b08a6f9a8f8ce2ef33b2ee990a1497fc·...·]-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="5729909525-33">{</span><span·class="w">227 ················</span><span·class="o">#</span><span·class="ss">&#39;Validity&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-34">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080109082929Z&quot;</span><span·class="p"·data-group-id="5729909525-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="2195569521-34">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080109082929Z&quot;</span><span·class="p"·data-group-id="2195569521-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="5729909525-35">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080208082929Z&quot;</span><span·class="p"·data-group-id="5729909525-35">}</span><span·class="p"·data-group-id="5729909525-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="2195569521-35">{</span><span·class="ss">utcTime</span><span·class="p">,</span><span·class="s">&quot;080208082929Z&quot;</span><span·class="p"·data-group-id="2195569521-35">}</span><span·class="p"·data-group-id="2195569521-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="5729909525-36">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">231 ················</span><span·class="p"·data-group-id="2195569521-36">{</span><span·class="ss">rdnSequence</span><span·class="p">,</span><span·class="w">
232 ····················</span><span·class="p"·data-group-id="5729909525-37">[</span><span·class="p"·data-group-id="5729909525-38">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-39">{</span><span·class="w">232 ····················</span><span·class="p"·data-group-id="2195569521-37">[</span><span·class="p"·data-group-id="2195569521-38">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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:·410,·SHA:·efd31d62b74505a6089c2bf93f0cfb0a62b139a9cbc33ef29c654e53b93ea149·...·]-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="2195569521-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:·410,·SHA:·5bed594f24a5cef80ca14119eb2634875e4ac5bcb61d744d7593ebc4a9fd25d6·...·]-38">]</span><span·class="p">,</span><span·class="w">
235 ·····················</span><span·class="p"·data-group-id="5729909525-42">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-43">{</span><span·class="w">235 ·····················</span><span·class="p"·data-group-id="2195569521-42">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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:·510,·SHA:·9fe53c69b620835b06feb8322645ad62e6a2040a0113df1dfbb62237031de7cc·...·]-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="2195569521-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:·510,·SHA:·440b287b1819c906e0f9dc4afebde7387878c778da800a84c2e786d69d80c845·...·]-42">]</span><span·class="p">,</span><span·class="w">
238 ·····················</span><span·class="p"·data-group-id="5729909525-46">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-47">{</span><span·class="w">238 ·····················</span><span·class="p"·data-group-id="2195569521-46">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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:·558,·SHA:·3ad7c03c40d563afc562b37823ef80bc5d53d15682d8b89f7fe36f44b5f96c04·...·]-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="2195569521-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:·558,·SHA:·1c449730eec18099dbbbf35e949a0d1cf78206d4ecdf8a958e58cef6bbfd3843·...·]-46">]</span><span·class="p">,</span><span·class="w">
241 ·····················</span><span·class="p"·data-group-id="5729909525-50">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-51">{</span><span·class="w">241 ·····················</span><span·class="p"·data-group-id="2195569521-50">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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:·507,·SHA:·8d2708a90dc74b37a8140b3d3fd6313c2346dee2c9285f8fefd85a5920fb76fa·...·]-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="2195569521-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:·507,·SHA:·53b7cd273b3fa74f2ba4723e155199bf5fe8a66ec4f68f0acda9d726198b5d57·...·]-50">]</span><span·class="p">,</span><span·class="w">
244 ·····················</span><span·class="p"·data-group-id="5729909525-54">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-55">{</span><span·class="w">244 ·····················</span><span·class="p"·data-group-id="2195569521-54">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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="5729909525-57">&gt;&[·...·truncated·by·diffoscope;·len:·105,·SHA:·1bd215295353d676d70e488b36054b999de185b060692cc5fd8c38243327b213·...·]-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="2195569521-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="2195569521-57">&gt;&[·...·truncated·by·diffoscope;·len:·105,·SHA:·5d534480cec1ca7801d2b758087d4d7c9bedddbe5cfa2c76397e0ffe0443d8bb·...·]-54">]</span><span·class="p">,</span><span·class="w">
247 ·····················</span><span·class="p"·data-group-id="5729909525-58">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="5729909525-59">{</span><span·class="w">247 ·····················</span><span·class="p"·data-group-id="2195569521-58">[</span><span·class="o">#</span><span·class="ss">&#39;AttributeTypeAndValue&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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:·134,·SHA:·b18876ec89de9f23ba920e296f709e44bf2e14c39cfd5f4325269b5524f976c7·...·]-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="2195569521-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:·134,·SHA:·67dbe64ddab074f6b3ed4444955df33e1febeb791b4df1b3cab9d8be8b2c2f41·...·]-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="5729909525-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:·515,·SHA:·bb1dca3d605bc03d07dbb5cf8d4c6f4c301660c17f447a849ebcf3ca38ec8d92·...·]-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="2195569521-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:·515,·SHA:·f33d65da284bce4065bc431b579dae6cb2e614790be63a6a2ef9f91fa2ceb918·...·]-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="5729909525-62">{</span><span·class="w">251 ················</span><span·class="o">#</span><span·class="ss">&#39;SubjectPublicKeyInfo&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-63">{</span><span·class="w">253 ························</span><span·class="o">#</span><span·class="ss">&#39;AlgorithmIdentifier&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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:·134,·SHA:·399ebb41602108d6b9213b7bb235259f06b37f8daa75bdaf3696180050021dfd·...·]-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="2195569521-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:·134,·SHA:·348ed44e7832930e21ffad588b2da20cfef5fea0aece1543812f210070118bed·...·]-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="5729909525-65">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="5729909525-65">&gt;&gt;</span><span·class="p"·data-group-id="5729909525-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="2195569521-65">&lt;&lt;</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2195569521-65">&gt;&gt;</span><span·class="p"·data-group-id="2195569521-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="5729909525-66">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="5729909525-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:·811,·SHA:·84b9f6500960c8ef4264ad70b9a3158d657e66786c63873d6d8bdb8ab904b398·...·]-62">}</span><span·class="p">,</span><span·class="w">257 ························</span><span·class="p"·data-group-id="2195569521-66">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="p"·data-group-id="2195569521-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:·811,·SHA:·5426362416342399898f28afb4ba453bd228582dd7bd76fd4720e652eed69923·...·]-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="5729909525-68">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="5729909525-69">{</span><span·class="w">261 ················</span><span·class="p"·data-group-id="2195569521-68">[</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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:·86,·SHA:·48abb374d0496c2c0be1bf224d82cf7bc7b8c7d15c91ba6469094aee63d7a168·...·]-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="2195569521-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:·86,·SHA:·f103812bcc316130297dea55b4c34dba777fd7c01663aa5512c7c43fdfee85ce·...·]-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="5729909525-72">{</span><span·class="w">265 ·················</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="2195569521-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="5729909525-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="5729909525-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="2195569521-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="2195569521-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="5729909525-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="5729909525-74">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·3d2522cee0cc62340b7a91b62de86ecdd2a00a35821fc55b15a51df2d98102c7·...·]-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="2195569521-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="2195569521-74">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·6e89c9ce3523dcad137ed7b23753da02617b1b450b4d3010a82f916f5f6d50ce·...·]-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="5729909525-75">{</span><span·class="w">269 ·················</span><span·class="o">#</span><span·class="ss">&#39;Extension&#39;</span><span·class="p"·data-group-id="2195569521-75">{</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:·62890·bytes,·number·of·entries:·141 Zip·file·size:·62888·bytes,·number·of·entries:·14
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:56·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:50·mimetype
3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·07:56·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······718·bx·defN·25-Mar-18·08:50·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····17091·bx·defN·25-Mar-18·07:56·OEBPS/reltool_usage.xhtml4 ?rw-r--r--··6.1·unx····17091·bx·defN·25-Mar-18·08:50·OEBPS/reltool_usage.xhtml
5 ?rw-r--r--··6.1·unx·····3354·bx·defN·25-Mar-18·07:56·OEBPS/reltool_intro.xhtml5 ?rw-r--r--··6.1·unx·····3354·bx·defN·25-Mar-18·08:50·OEBPS/reltool_intro.xhtml
6 ?rw-r--r--··6.1·unx···193923·bx·defN·25-Mar-18·07:56·OEBPS/reltool_examples.xhtml6 ?rw-r--r--··6.1·unx···193923·bx·defN·25-Mar-18·08:50·OEBPS/reltool_examples.xhtml
7 ?rw-r--r--··6.1·unx····94623·bx·defN·25-Mar-18·07:56·OEBPS/reltool.xhtml7 ?rw-r--r--··6.1·unx····94623·bx·defN·25-Mar-18·08:50·OEBPS/reltool.xhtml
8 ?rw-r--r--··6.1·unx····40198·bx·defN·25-Mar-18·07:56·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx····40198·bx·defN·25-Mar-18·08:50·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····1198·bx·defN·25-Mar-18·07:56·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····1198·bx·defN·25-Mar-18·08:50·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx·····1817·bx·defN·25-Mar-18·07:56·OEBPS/content.opf12 ?rw-r--r--··6.1·unx·····1817·bx·defN·25-Mar-18·08:50·OEBPS/content.opf
13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:56·OEBPS/assets/logo.png13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:50·OEBPS/assets/logo.png
14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:56·META-INF/container.xml14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:50·META-INF/container.xml
15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:56·META-INF/com.apple.ibooks.display-options.xml15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:50·META-INF/com.apple.ibooks.display-options.xml
16 14·files,·374254·bytes·uncompressed,·60434·bytes·compressed:··83.9%16 14·files,·374254·bytes·uncompressed,·60432·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,·Mar·18·2025·07:56: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,·Mar·18·2025·08:50:00,·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="6541870135-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="6541870135-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="6541870135-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·ec2a5c0e32b20c55d5213ee00f7a179f1114d49c6e5dd2cfc8e7a8420f2bf355·...·]-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="8448974121-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="8448974121-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="8448974121-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·6660f989acec1700e6f0234abbd784e6fdb821b45bc3004a2535c11775438570·...·]-6">]</span><span·class="w">
139 </span><span·class="p"·data-group-id="6541870135-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="6541870135-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="6541870135-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·0900fd9a0f4b09e7219546158f902003cbdae2d671e4e31b25e440dc524f8fd2·...·]-8">]</span><span·class="w">139 </span><span·class="p"·data-group-id="8448974121-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="8448974121-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="8448974121-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·16ccbce2053d5052be84cb8a8ed09e12e7625c3262a3481000ae3aa1657b01a4·...·]-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="6541870135-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="6541870135-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="8448974121-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="8448974121-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="6541870135-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="6541870135-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·280,·SHA:·c43f7a72004a79541774d3f7b2c1aa80eec7190ea26ff038e30156c8c019353e·...·]-11">)</span><span·class="p">.</span><span·class="w">142 1&gt;·</span><span·class="p"·data-group-id="8448974121-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="8448974121-10">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·280,·SHA:·6df5a4de8b5c7f8818987b0998e8485cceeb68fb41a0edb8e2efaf3af16b6586·...·]-11">)</span><span·class="p">.</span><span·class="w">
143 </span><span·class="p"·data-group-id="6541870135-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="6541870135-13">}</span><span·class="gp·unselectable">143 </span><span·class="p"·data-group-id="8448974121-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="8448974121-13">}</span><span·class="gp·unselectable">
144 2&gt;·</span><span·class="p"·data-group-id="6541870135-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="6541870135-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·206,·SHA:·a8dda8c726dae552b4cd536e389b23811315892e9a45b4538a62361a0273e916·...·]-15">)</span><span·class="p">.</span><span·class="w">144 2&gt;·</span><span·class="p"·data-group-id="8448974121-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="8448974121-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·206,·SHA:·cf1c54895bef87e20787126354761b454ecf8996c67ad5d22e0e858b2077c601·...·]-15">)</span><span·class="p">.</span><span·class="w">
145 </span><span·class="p"·data-group-id="6541870135-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="6541870135-16">}</span><span·class="gp·unselectable">145 </span><span·class="p"·data-group-id="8448974121-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="8448974121-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="6541870135-17">(</span><span·class="n">Server</span><span·class="p"·data-group-id="6541870135-17">)</span><span·class="p">.</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="8448974121-17">(</span><span·class="n">Server</span><span·class="p"·data-group-id="8448974121-17">)</span><span·class="p">.</span><span·class="w">
147 </span><span·class="p"·data-group-id="6541870135-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6541870135-19">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="6541870135-20">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·125,·SHA:·cde4b5b1fa88d1210767e9f2cfafbeef6ec0640e0fbfedf7ee696682962b0834·...·]-18">}</span><span·class="w">147 </span><span·class="p"·data-group-id="8448974121-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8448974121-19">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8448974121-20">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·125,·SHA:·058f580532f2b248a420a3b74ef0a35916cd5ad6765694df7ee694be9573ce54·...·]-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="6541870135-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="6541870135-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·291,·SHA:·f92edbe200d04dbb3ceba60a64bc973bd840ad553b5c9af91b42abe157135325·...·]-22">)</span><span·class="p">.</span><span·class="w">149 4&gt;·</span><span·class="p"·data-group-id="8448974121-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="8448974121-21">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·291,·SHA:·3bd23d1902852b31c864d750d0874c59b226d0f68b78e33d5867be8f23df972e·...·]-22">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="p"·data-group-id="6541870135-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="6541870135-24">}</span><span·class="gp·unselectable">150 </span><span·class="p"·data-group-id="8448974121-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="8448974121-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="6541870135-25">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="6541870135-25">)</span><span·class="p">.</span><span·class="w"> 
152 </span><span·class="p"·data-group-id="6541870135-26">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6541870135-27">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="654187013[·...·truncated·by·diffoscope;·len:·204,·SHA:·21ef4e7b694b18d4d40fb9f4aa98719d43aa976895fb2a052c5c166e5421ae15·...·]">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="8448974121-25">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="8448974121-25">)</span><span·class="p">[·...·truncated·by·diffoscope;·len:·22,·SHA:·e5280ec72a33d941ddb767e9152358107b2476663ca4f611d5a154c3121850a0·...·]">
 152 </span><span·class="p"·data-group-id="8448974121-26">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8448974121-27">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8448974121-28">[</span><span·class="p"·data-group-id="8448974121-28">]</span><span·class="p"·data-group-id="8448974121-27">}</span><span·class="p"·data-group-id="8448974121-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="6541870135-29">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="6541870135-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="8448974121-29">(</span><span·class="n">Server2</span><span·class="p"·data-group-id="8448974121-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="1246558712-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="1246558712-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="1246558712-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·47aee62e5d056b1a9ee718a2810ca07a0c53baad169cb1d065e49dfb3e503b4e·...·]-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="8266808127-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">9.0</span><span·class="p"·data-group-id="8266808127-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="8266808127-2">[</span><span·class="ss">source</[·...·truncated·by·diffoscope;·len:·1131,·SHA:·70d9b711b2d66bb19072a7d8d150006819b65e2a698574101f16587a662b0fd7·...·]-6">]</span><span·class="w">
161 </span><span·class="p"·data-group-id="1246558712-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="1246558712-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="1246558712-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·c86778ba0d2014db561bc306137db39694e0700c67bfb419ee267149d8b5deca·...·]-8">]</span><span·class="w">161 </span><span·class="p"·data-group-id="8266808127-7">[</span><span·class="ss">hipe</span><span·class="p"·data-group-id="8266808127-7">]</span><span·class="w">·</span><span·class="p"·data-group-id="8266808127-8">[</span><span·class="ss">kernel</span><span·class="o">-</span><span·class="nc">poll<[·...·truncated·by·diffoscope;·len:·100,·SHA:·1d5960033e6518949bd9d6e694728c0f5943899a11e10e23c818c5d54485ae14·...·]-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="1246558712-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="1246558712-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="8266808127-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="8266808127-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="1246558712-10">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1246558712-11">[</span><span·class="p"·data-group-id="1246558712-12">{</span><span·class="ss">escript</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·502,·SHA:·65f860ebfe25dd39ffb7862cfa647f2dfac6d9ab1e9aa240ae3c94f3d1165b29·...·]-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="8266808127-10">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8266808127-11">[</span><span·class="p"·data-group-id="8266808127-12">{</span><span·class="ss">escript</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·502,·SHA:·9d754d1c8b6f05e6c4f06848597ba22193849e299020a053297849b7f50781fd·...·]-12">}</span><span·class="p">,</span><span·class="w">
165 »       »       ···</span><span·class="p"·data-group-id="1246558712-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="1246558712-16">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·288,·SHA:·07b92a29925230e1cc6b4b513d7b2169ab79e6ba79830f45575f4d3e781419fd·...·]-15">}</span><span·class="p">,</span><span·class="w">165 »       »       ···</span><span·class="p"·data-group-id="8266808127-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="8266808127-16">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·288,·SHA:·749268bda9689336037e4f3fa65eb2717222c6c435a3d17a2b0a805524f65875·...·]-15">}</span><span·class="p">,</span><span·class="w">
166 »       »       ···</span><span·class="p"·data-group-id="1246558712-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="1246558712-19">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·289,·SHA:·1065b6a143ddfe3ab391dafe68f2edefaf078000fd69fa303ce2697267e80f3c·...·]-18">}</span><span·class="p">,</span><span·class="w">166 »       »       ···</span><span·class="p"·data-group-id="8266808127-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="8266808127-19">[</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·289,·SHA:·e4e533eeabdf97efac8c02c308e13c2a462ac5c183ee1636cea8a0b5e504853d·...·]-18">}</span><span·class="p">,</span><span·class="w">
167 »       »       ···</span><span·class="p"·data-group-id="1246558712-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="1246558712-22">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·286,·SHA:·727441ad6106c4b9e04b0da0372bd584547e8c41bd3c10999ee946852028f47f·...·]-21">}</span><span·class="p">,</span><span·class="w">167 »       »       ···</span><span·class="p"·data-group-id="8266808127-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="8266808127-22">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·286,·SHA:·53a7707898c5842b05afefc213f983fa65ce9c5500c9d680f8b1fd7684afb013·...·]-21">}</span><span·class="p">,</span><span·class="w">
168 »       »       ···</span><span·class="p"·data-group-id="1246558712-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="1246558712-25">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·296,·SHA:·11495d62fc74aba6f68a220c9f7225417d6bbc63ab9fbc8415c143914d7ca3f7·...·]-24">}</span><span·class="p">,</span><span·class="w">168 »       »       ···</span><span·class="p"·data-group-id="8266808127-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="8266808127-25">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·296,·SHA:·e00d9629d362a31e17ba3fe716e9eb9f27b66362b0afe010db4d166bbd635b14·...·]-24">}</span><span·class="p">,</span><span·class="w">
169 »       »       ···</span><span·class="p"·data-group-id="1246558712-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="1246558712-28">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·403,·SHA:·569a0781f8b96656d22af7eb1fc84b44418df1d48a4cafcf1029b0da499dfab3·...·]-10">}</span><span·class="p">.</span><span·class="w">169 »       »       ···</span><span·class="p"·data-group-id="8266808127-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="8266808127-28">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·403,·SHA:·6dc5401e0d1b4e15876c5849dd27bf732849dfb80d943027af71d2652c5918e8·...·]-10">}</span><span·class="p">.</span><span·class="w">
170 </span><span·class="p"·data-group-id="1246558712-30">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-31">[</span><span·class="p"·data-group-id="1246558712-32">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·406,·SHA:·01b3d4582c3f5b3fd770909abb04fc7b4b3258952be8c5968d0d1f7d148a1646·...·]-32">}</span><span·class="p">,</span><span·class="w">170 </span><span·class="p"·data-group-id="8266808127-30">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-31">[</span><span·class="p"·data-group-id="8266808127-32">{</span><span·class="ss">escript</span><span·class="p">,</span><span·class="s">&qu[·...·truncated·by·diffoscope;·len:·406,·SHA:·65473b9a133c6b4d8c40237da32074f39575fae0318e940551366a7f8143337c·...·]-32">}</span><span·class="p">,</span><span·class="w">
171 ······</span><span·class="p"·data-group-id="1246558712-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="1246558712-36">[</span><span·class="p"·data-group-id="1246558712-37">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·996239a1c17dc75057b9666a288db6470a415243e55b5ddcb268b5866a809bb6·...·]-35">}</span><span·class="p">,</span><span·class="w">171 ······</span><span·class="p"·data-group-id="8266808127-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="8266808127-36">[</span><span·class="p"·data-group-id="8266808127-37">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·2127bfdaba5fd5b6d4a78359eca5485f187ca989b921f3e7400954cc62a1e619·...·]-35">}</span><span·class="p">,</span><span·class="w">
172 ······</span><span·class="p"·data-group-id="1246558712-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="1246558712-39">[</span><span·class="p"·data-group-id="1246558712-40">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·cd37ca48e412d482321220815e90529ad341845daef555c3fed3f61d34964a1d·...·]-38">}</span><span·class="p">,</span><span·class="w">172 ······</span><span·class="p"·data-group-id="8266808127-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="8266808127-39">[</span><span·class="p"·data-group-id="8266808127-40">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·c184cc02151365cc8aa2162838d068802a28d1f20c69b7c3ecab3b535b7e987d·...·]-38">}</span><span·class="p">,</span><span·class="w">
173 ······</span><span·class="p"·data-group-id="1246558712-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="1246558712-42">[</span><span·class="p"·data-group-id="1246558712-43">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·3e0ab1068a1615f2593d169964f6a4b391537830a015ee89d8e21cb4fe9108ca·...·]-41">}</span><span·class="p">,</span><span·class="w">173 ······</span><span·class="p"·data-group-id="8266808127-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="8266808127-42">[</span><span·class="p"·data-group-id="8266808127-43">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·1bf259b7ba0e1f6788b081d9be375c419398daa7fee80e1b5d19e6718a9a06e3·...·]-41">}</span><span·class="p">,</span><span·class="w">
174 ······</span><span·class="p"·data-group-id="1246558712-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="1246558712-45">[</span><span·class="p"·data-group-id="1246558712-46">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">exclude</span><span·class="p"·data-group-id="1246558712-46">}</span><span·class="p"·data-group-id="1246558712-45">]</span><span·class="p"·data-group-id="1246558712-44">}</span><span·class="p">,</span><span·class="w"> 
175 ······</span><span·class="p"·data-group-id="1246558712-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="1246558712-48">[</span><span·class="p"·data-group-id="1246558712-49">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·337,·SHA:·115d44c466f5220c59e8513dbb83a9f0c2b42c882450c917e865918823de2d10·...·]</span><span·class="w">174 ······</span><span·class="p"·data-group-id="8266808127-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="8266808127-45">[</span><span·class="p"·data-group-id="8266808127-46">{</span><span·class="[·...·truncated·by·diffoscope;·len:·254,·SHA:·bdf5eb4cd9886467ed84ae9be18c30037d9cd28a2d3eaa2731b36a57c1a08186·...·]</span><span·class="w">
 175 ······</span><span·class="p"·data-group-id="8266808127-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="8266808127-48">[</span><span·class="p"·data-group-id="8266808127-49">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">exclude</span><span·class="p"·data-group-id="8266808127-49">}</span><span·class="p"·data-group-id="8266808127-48">]</span><span·class="p"·data-group-id="8266808127-47">}</span><span·class="p"·data-group-id="8266808127-31">]</span><span·class="p"·data-group-id="8266808127-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="1246558712-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="1246558712-50">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·319,·SHA:·c9adfd83b24086525d12c4aba7618d7da6e11b51aa81aca08279710d39547ea7·...·]-51">)</span><span·class="p">.</span><span·class="w">177 2&gt;·</span><span·class="p"·data-group-id="8266808127-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="8266808127-50">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·319,·SHA:·b39c1722e5b35fc9ad86d94a2d0806d8cf1fc4462543fa5202b72044ddc81577·...·]-51">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="1246558712-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="1246558712-53">}</span><span·class="w">178 </span><span·class="p"·data-group-id="8266808127-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="8266808127-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="1246558712-54">(</span><span·class="n">Server</span><span·class="p"·data-group-id="1246558712-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="8266808127-54">(</span><span·class="n">Server</span><span·class="p"·data-group-id="8266808127-54">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="p"·data-group-id="1246558712-55">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-56">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-57">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·dc764bf53998cbc4cb039bab941627a788b700dd8ec9604715fb163abc0e97e2·...·]-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="8266808127-55">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-56">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-57">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·78132e3c855acd76a22498057ef0b18b00102e0eda6048fd1ebe3bc6bdda7568·...·]-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="1246558712-59">[</span><span·class="p"·data-group-id="1246558712-60">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="1246558712-60">}</span><span·class="p"·data-group-id="124655[·...·truncated·by·diffoscope;·len:·58,·SHA:·f33759d7d8e69cd95f82655658666a4fe19b5f97dfa14e712b98455eedb1a470·...·]-58">}</span><span·class="p">,</span><span·class="w">182 ···················</span><span·class="p"·data-group-id="8266808127-59">[</span><span·class="p"·data-group-id="8266808127-60">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="8266808127-60">}</span><span·class="p"·data-group-id="826680[·...·truncated·by·diffoscope;·len:·58,·SHA:·44c6fe9dcdc9f8672f21467bd9d86837e759499248f9f5b4d07b7e2199379b2a·...·]-58">}</span><span·class="p">,</span><span·class="w">
183 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-62">[</span><span·class="p"·data-group-id="1246558712-63">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·fba1e42651bd0d95324950bfce6c076f42017fa3b381170a97123d82a551f4bd·...·]-61">}</span><span·class="p">,</span><span·class="w">183 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-62">[</span><span·class="p"·data-group-id="8266808127-63">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·704218cc47923a521ac7293723c59414cd777ea19961a3464f9a80d57d364706·...·]-61">}</span><span·class="p">,</span><span·class="w">
184 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-65">[</span><span·class="p"·data-group-id="1246558712-66">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·bf0bddff47895871ad84019c5ec353dc7bb8687147a4706f278acf36302a300a·...·]-64">}</span><span·class="p">,</span><span·class="w">184 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-65">[</span><span·class="p"·data-group-id="8266808127-66">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·110833d3e2e40aca4743434522538a4ed3d8bb346c80d8b80ec2f91b75fac7c3·...·]-64">}</span><span·class="p">,</span><span·class="w">
185 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-68">[</span><span·class="p"·data-group-id="1246558712-69">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·520a80de2793b2d8dc34ebc322e2f393c7eed967bfd0a321dc5a7df3022cf892·...·]-67">}</span><span·class="p">,</span><span·class="w">185 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-68">[</span><span·class="p"·data-group-id="8266808127-69">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·8861bc2f4da238ad4a549e715cacad6db066e89fe3ff657d30ec5056e43b0574·...·]-67">}</span><span·class="p">,</span><span·class="w">
186 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-71">[</span><span·class="p"·data-group-id="1246558712-72">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·6f594ec059ebabe5aa8ffa72ce00b5158e8f9de17d9a4db46ca9e267f5aa6524·...·]-70">}</span><span·class="p">,</span><span·class="w">186 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-71">[</span><span·class="p"·data-group-id="8266808127-72">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·984e97819001c7a0315775906a5738af62490d8f34ec480d04b8582a1b5a4506·...·]-70">}</span><span·class="p">,</span><span·class="w">
187 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-74">[</span><span·class="p"·data-group-id="1246558712-75">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·443c41af76b12b94a3f88cbccb05b8978b9102f304f9b6f5380749e5087d55b8·...·]-55">}</span><span·class="w">187 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-74">[</span><span·class="p"·data-group-id="8266808127-75">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·6191604fa82dbc324cf4ba34c8da7f2efdcb0d15a4b9244fb471219d97dada30·...·]-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="1246558712-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="1246558712-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="8266808127-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="8266808127-76">)</span><span·class="p">.</span><span·class="w">
190 </span><span·class="p"·data-group-id="1246558712-77">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-78">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-79">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·dc764bf53998cbc4cb039bab941627a788b700dd8ec9604715fb163abc0e97e2·...·]-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="8266808127-77">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-78">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-79">[</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·17,·SHA:·78132e3c855acd76a22498057ef0b18b00102e0eda6048fd1ebe3bc6bdda7568·...·]-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="1246558712-81">[</span><span·class="p"·data-group-id="1246558712-82">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="1246558712-82">}</span><span·class="p"·data-group-id="124655[·...·truncated·by·diffoscope;·len:·58,·SHA:·ff49bd0c9e26e4cfbf8a0b614fa39b167c0e486cf73d3d4f4aeb00ad52aa70a7·...·]-80">}</span><span·class="p">,</span><span·class="w">191 ···················</span><span·class="p"·data-group-id="8266808127-81">[</span><span·class="p"·data-group-id="8266808127-82">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="8266808127-82">}</span><span·class="p"·data-group-id="826680[·...·truncated·by·diffoscope;·len:·58,·SHA:·357563b05778b3ea3d5f700d69dbc85ede7e63b8ae7cd59fc908ab46bd20ca51·...·]-80">}</span><span·class="p">,</span><span·class="w">
192 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-84">[</span><span·class="p"·data-group-id="1246558712-85">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·328816168cd9480e81927a04cdc005f6ea527617a72f9bf5135243944b830b4f·...·]-83">}</span><span·class="p">,</span><span·class="w">192 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-84">[</span><span·class="p"·data-group-id="8266808127-85">{</span><span·class="ss">incl[·...·truncated·by·diffoscope;·len:·216,·SHA:·6766cfa05c9af8a288d381e4905d4e81ae3a85d0c68e1ead4de439d07b2b0708·...·]-83">}</span><span·class="p">,</span><span·class="w">
193 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-87">[</span><span·class="p"·data-group-id="1246558712-88">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·6ed80af58e5238984819b9c294db17ea4284f500046f4aa423e64891cc44654b·...·]-86">}</span><span·class="p">,</span><span·class="w">193 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-87">[</span><span·class="p"·data-group-id="8266808127-88">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·217,·SHA:·ba7b42c158988d4a84f59303608f35a9f3ce738fc32e0e171c719ef0734569b7·...·]-86">}</span><span·class="p">,</span><span·class="w">
194 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-90">[</span><span·class="p"·data-group-id="1246558712-91">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·8e55d529176733e4d8b8200d8751ef9fc577ed54fc44fe12bea546fd538bf734·...·]-89">}</span><span·class="p">,</span><span·class="w">194 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-90">[</span><span·class="p"·data-group-id="8266808127-91">{</span><span·class="[·...·truncated·by·diffoscope;·len:·224,·SHA:·a49ce9547cd091726be44ec8fdf3c17c9f1d9541227be525a46320e5d9e0e9af·...·]-89">}</span><span·class="p">,</span><span·class="w">
195 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-93">[</span><span·class="p"·data-group-id="1246558712-94">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·39ae3e3e95a92ceee2df938f007b83e2449c34cd12da5d03a07c1677d2f36c88·...·]-92">}</span><span·class="p">,</span><span·class="w">195 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-93">[</span><span·class="p"·data-group-id="8266808127-94">{</span><span·class="ss">incl_c[·...·truncated·by·diffoscope;·len:·214,·SHA:·367825041998d3d4c6ac05d3ed36888a640036cc4916323a8b36e7f6dcf13c3c·...·]-92">}</span><span·class="p">,</span><span·class="w">
196 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-96">[</span><span·class="p"·data-group-id="1246558712-97">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·a2a9bd2d4085f8fbc0123466ecdb27068481f5978b1ed4dce1b7c25264c29d61·...·]-77">}</span><span·class="w">196 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-96">[</span><span·class="p"·data-group-id="8266808127-97">{</span><span·class="s[·...·truncated·by·diffoscope;·len:·385,·SHA:·03aef74389bec43f0243bb124d75c21489c1bcb44d2b1a5133cb338a084dc2d6·...·]-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="1246558712-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="1246558712-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="8266808127-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="8266808127-98">)</span><span·class="p">.</span><span·class="w">
199 </span><span·class="p"·data-group-id="1246558712-99">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-100">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-101">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·186,·SHA:·958bcc86b1208b30561ffab6d356f03969d2480953137ad95efc7c7b0c70ad6c·...·]-102">}</span><span·class="p">,</span><span·class="w">199 </span><span·class="p"·data-group-id="8266808127-99">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-100">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-101">[</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·186,·SHA:·81b8763fc94b5fcd1f6210ee94aa315dbaa924d625bb282dd9b6d35a455f5a3b·...·]-102">}</span><span·class="p">,</span><span·class="w">
200 ··········</span><span·class="p"·data-group-id="1246558712-103">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-104">[</span><span·class="p"·data-group-id="1246558712-104">]</span><span·class="p"·data-group-id="1246558712-103">}</span><span·class="p">,</span><span·class="w">200 ··········</span><span·class="p"·data-group-id="8266808127-103">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-104">[</span><span·class="p"·data-group-id="8266808127-104">]</span><span·class="p"·data-group-id="8266808127-103">}</span><span·class="p">,</span><span·class="w">
201 ··········</span><span·class="p"·data-group-id="1246558712-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="8266808127-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="1246558712-106">[</span><span·class="p"·data-group-id="1246558712-107">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="1246558712-107">}</span><span·class="p"·data-group-id="124[·...·truncated·by·diffoscope;·len:·62,·SHA:·695632311ba612206b92be6bd51b1f5a093da90710e9f3dfe99984483ceedb6f·...·]-105">}</span><span·class="p">,</span><span·class="w">202 ···················</span><span·class="p"·data-group-id="8266808127-106">[</span><span·class="p"·data-group-id="8266808127-107">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="8266808127-107">}</span><span·class="p"·data-group-id="826[·...·truncated·by·diffoscope;·len:·62,·SHA:·7e601d161b143dab24027f0dc1d03964907f52f9a88e1e4c3eee8080d8f0c857·...·]-105">}</span><span·class="p">,</span><span·class="w">
203 ··········</span><span·class="p"·data-group-id="1246558712-108">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="1246558712-108">}</span><span·class="p">,</span><span·class="w">203 ··········</span><span·class="p"·data-group-id="8266808127-108">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="8266808127-108">}</span><span·class="p">,</span><span·class="w">
204 ··········</span><span·class="p"·data-group-id="1246558712-109">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="1246558712-109">}</span><span·class="p">,</span><span·class="w">204 ··········</span><span·class="p"·data-group-id="8266808127-109">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="8266808127-109">}</span><span·class="p">,</span><span·class="w">
205 ··········</span><span·class="p"·data-group-id="1246558712-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="8266808127-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="1246558712-111">[</span><span·class="p"·data-group-id="1246558712-112">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="1246558712-112">}</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·502,·SHA:·5d65698aa421e6795771423e342df642b8afe4453730a0e4952a8e9d9594c2eb·...·]-110">}</span><span·class="p">,</span><span·class="w">206 ···············</span><span·class="p"·data-group-id="8266808127-111">[</span><span·class="p"·data-group-id="8266808127-112">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="8266808127-112">}</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·502,·SHA:·a81f01627e5add22026b617ddc494f658eaa8341f9005f702addd1126ba1c213·...·]-110">}</span><span·class="p">,</span><span·class="w">
207 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-116">[</span><span·class="p"·data-group-id="1246558712-117">{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·222,·SHA:·ef621749a29119de5f57022ed8131890d830cffae85cdada1c71d3e44f8b6883·...·]-115">}</span><span·class="p">,</span><span·class="w">207 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-116">[</span><span·class="p"·data-group-id="8266808127-117">{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·222,·SHA:·3177f804b925d2ba1760ea3fd45ce9a6833375c11d979231ef4f683c55686903·...·]-115">}</span><span·class="p">,</span><span·class="w">
208 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-119">[</span><span·class="p"·data-group-id="1246558712-120">{</span><span·clas[·...·truncated·by·diffoscope;·len:·229,·SHA:·62e5fc123f3f92d1f5edc18f4326c9ee5bbba846cbc627ab5ef2a1f469c91bab·...·]-118">}</span><span·class="p">,</span><span·class="w">208 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-119">[</span><span·class="p"·data-group-id="8266808127-120">{</span><span·clas[·...·truncated·by·diffoscope;·len:·229,·SHA:·d6061c98aaeea0de7b8d3d036ee310cd4b13b512d33141f354f379aef91710dc·...·]-118">}</span><span·class="p">,</span><span·class="w">
209 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-122">[</span><span·class="p"·data-group-id="1246558712-123">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·219,·SHA:·67bdde963e2d9b3ae6c045e8bdaf29d960804471309bdd08ff9b4ea464f68655·...·]-121">}</span><span·class="p">,</span><span·class="w">209 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-122">[</span><span·class="p"·data-group-id="8266808127-123">{</span><span·class="ss">inc[·...·truncated·by·diffoscope;·len:·219,·SHA:·3117d288e6925ac2ff24782bbcd7c7216842bd830dedfab204b89c232b81f1f7·...·]-121">}</span><span·class="p">,</span><span·class="w">
210 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-125">[</span><span·class="p"·data-group-id="1246558712-126">{</span><span·class[·...·truncated·by·diffoscope;·len:·228,·SHA:·e579e12d808e993c6dcc7dc9cc8d943ed298418bf17b2f206461bfcea2178f8e·...·]-124">}</span><span·class="p">,</span><span·class="w">210 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-125">[</span><span·class="p"·data-group-id="8266808127-126">{</span><span·class[·...·truncated·by·diffoscope;·len:·228,·SHA:·b5d34754d12956b65df480b67bec8e3e8e2a265477ee79027882cebdb3b28a51·...·]-124">}</span><span·class="p">,</span><span·class="w">
211 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-127">}</span><span·class="p">,</span><span·class="w">211 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-127">}</span><span·class="p">,</span><span·class="w">
212 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-129">[<[·...·truncated·by·diffoscope;·len:·102,·SHA:·cdbaedec28cceb4590d816ce9d225ab355353403859272fa8a58014f906124b5·...·]-128">}</span><span·class="p">,</span><span·class="w">212 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-129">[<[·...·truncated·by·diffoscope;·len:·102,·SHA:·7e74ab78a99bded39d138eac3ce6533f761c34644e4ce6e11fc04c0f68659d12·...·]-128">}</span><span·class="p">,</span><span·class="w">
213 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-131">[</[·...·truncated·by·diffoscope;·len:·129,·SHA:·947ac5910790382fa09efc98c50a780ccdc1403fd2f06bd98b2ad00a57fe6323·...·]-130">}</span><span·class="p">,</span><span·class="w">213 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-131">[</[·...·truncated·by·diffoscope;·len:·129,·SHA:·367a353f261224765434f7af01940be46deb52af86f372e4aed4dd7d1c7bd565·...·]-130">}</span><span·class="p">,</span><span·class="w">
214 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-132">}</span><span·class="p">,</span><span·class="w">214 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-132">}</span><span·class="p">,</span><span·class="w">
215 ··········</span><span·class="p"·data-group-id="1246558712-133">{</span><span·class="ss">relocatable</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="1246558712-133">}</span><span·class="p">,</span><span·class="w">215 ··········</span><span·class="p"·data-group-id="8266808127-133">{</span><span·class="ss">relocatable</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="8266808127-133">}</span><span·class="p">,</span><span·class="w">
216 ··········</span><span·class="p"·data-group-id="1246558712-134">{</span><span·class="ss">profile</span><span·class="p">,</span><span·class="ss">development</span><span·class="p"·data-group-id="1246558712-134">}</span><span·class="p">,</span><span·class="w">216 ··········</span><span·class="p"·data-group-id="8266808127-134">{</span><span·class="ss">profile</span><span·class="p">,</span><span·class="ss">development</span><span·class="p"·data-group-id="8266808127-134">}</span><span·class="p">,</span><span·class="w">
217 ··········</span><span·class="p"·data-group-id="1246558712-135">{</span><span·class="ss">incl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-136">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="1246558712-136">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·319f6b71215e9968ab92c61d52037bb5a13b426ab49d173c22d9e2b75f818207·...·]-135">}</span><span·class="p">,</span><span·class="w">217 ··········</span><span·class="p"·data-group-id="8266808127-135">{</span><span·class="ss">incl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-136">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="8266808127-136">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·5dbd7eb38c62714bcb4001261c6258ec1564920c5cd8924cb5eea7bc073acac6·...·]-135">}</span><span·class="p">,</span><span·class="w">
218 ··········</span><span·class="p"·data-group-id="1246558712-137">{</span><span·class="ss">excl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-138">[</span><span·class="p"·data-group-id="1246558712-138">]</span><span·class="p"·data-group-id="1246558712-137">}</span><span·class="p">,</span><span·class="w">218 ··········</span><span·class="p"·data-group-id="8266808127-137">{</span><span·class="ss">excl_sys_filters</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-138">[</span><span·class="p"·data-group-id="8266808127-138">]</span><span·class="p"·data-group-id="8266808127-137">}</span><span·class="p">,</span><span·class="w">
219 ··········</span><span·class="p"·data-group-id="1246558712-139">{</span><span·class="ss">incl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-140">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="1246558712-140">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·319f6b71215e9968ab92c61d52037bb5a13b426ab49d173c22d9e2b75f818207·...·]-139">}</span><span·class="p">,</span><span·class="w">219 ··········</span><span·class="p"·data-group-id="8266808127-139">{</span><span·class="ss">incl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-140">[</span><span·class="s">&quot;.*&quot;</span><span·class="p"·data-group-id="8266808127-140">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·5dbd7eb38c62714bcb4001261c6258ec1564920c5cd8924cb5eea7bc073acac6·...·]-139">}</span><span·class="p">,</span><span·class="w">
220 ··········</span><span·class="p"·data-group-id="1246558712-141">{</span><span·class="ss">excl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-142">[</span><span·class="p"·data-group-id="1246558712-142">]</span><span·class="p"·data-group-id="1246558712-141">}</span><span·class="p">,</span><span·class="w">220 ··········</span><span·class="p"·data-group-id="8266808127-141">{</span><span·class="ss">excl_app_filters</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-142">[</span><span·class="p"·data-group-id="8266808127-142">]</span><span·class="p"·data-group-id="8266808127-141">}</span><span·class="p">,</span><span·class="w">
221 ··········</span><span·class="p"·data-group-id="1246558712-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="1246558712-143">}</span><span·class="p">,</span><span·class="w">221 ··········</span><span·class="p"·data-group-id="8266808127-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="8266808127-143">}</span><span·class="p">,</span><span·class="w">
222 ··········</span><span·class="p"·data-group-id="1246558712-144">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1246558712-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:·9ef8c6dcb7840b22c58fd8cae8dd2d52186317ab26796986e10e3cfad20ad41f·...·]-99">}</span><span·class="w">222 ··········</span><span·class="p"·data-group-id="8266808127-144">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8266808127-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:·0b291bbefbdbdf11ec38c3b320424fdaa4775eed579db106df177c2134dbbd14·...·]-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="1246558712-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="1246558712-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="8266808127-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="8266808127-145">)</span><span·class="p">.</span><span·class="w">
225 </span><span·class="p"·data-group-id="1246558712-146">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-147">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-148">[</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·187,·SHA:·9bcbb60d4a23b7cf7fb719c53fdb2c763143e1361a51ae59afc70fbcb6a374a8·...·]-149">}</span><span·class="p">,</span><span·class="w">225 </span><span·class="p"·data-group-id="8266808127-146">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-147">{</span><span·class="ss">sys</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-148">[</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·187,·SHA:·9e26b2baf1f0778eb119d7913e23a9b57ff538c7c863aef0c6fb72537eaa6586·...·]-149">}</span><span·class="p">,</span><span·class="w">
226 ··········</span><span·class="p"·data-group-id="1246558712-150">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-151">[</span><span·class="p"·data-group-id="1246558712-151">]</span><span·class="p"·data-group-id="1246558712-150">}</span><span·class="p">,</span><span·class="w">226 ··········</span><span·class="p"·data-group-id="8266808127-150">{</span><span·class="ss">lib_dirs</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-151">[</span><span·class="p"·data-group-id="8266808127-151">]</span><span·class="p"·data-group-id="8266808127-150">}</span><span·class="p">,</span><span·class="w">
227 ··········</span><span·class="p"·data-group-id="1246558712-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="8266808127-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="1246558712-153">[</span><span·class="p"·data-group-id="1246558712-154">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="1246558712-154">}</span><span·class="p"·data-group-id="124[·...·truncated·by·diffoscope;·len:·62,·SHA:·94b607d067153690fac3fd52e355c489327649f28ea788365bc67ad851890ea8·...·]-152">}</span><span·class="p">,</span><span·class="w">228 ···················</span><span·class="p"·data-group-id="8266808127-153">[</span><span·class="p"·data-group-id="8266808127-154">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">include</span><span·class="p"·data-group-id="8266808127-154">}</span><span·class="p"·data-group-id="826[·...·truncated·by·diffoscope;·len:·62,·SHA:·db8420b60d459ed2963e41b9b04253c76a9373b54faccb3fe69f57f353090ff2·...·]-152">}</span><span·class="p">,</span><span·class="w">
229 ··········</span><span·class="p"·data-group-id="1246558712-155">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="1246558712-155">}</span><span·class="p">,</span><span·class="w">229 ··········</span><span·class="p"·data-group-id="8266808127-155">{</span><span·class="ss">mod_cond</span><span·class="p">,</span><span·class="ss">all</span><span·class="p"·data-group-id="8266808127-155">}</span><span·class="p">,</span><span·class="w">
230 ··········</span><span·class="p"·data-group-id="1246558712-156">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="1246558712-156">}</span><span·class="p">,</span><span·class="w">230 ··········</span><span·class="p"·data-group-id="8266808127-156">{</span><span·class="ss">incl_cond</span><span·class="p">,</span><span·class="ss">derived</span><span·class="p"·data-group-id="8266808127-156">}</span><span·class="p">,</span><span·class="w">
231 ··········</span><span·class="p"·data-group-id="1246558712-157">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="p"·data-group-id="1246558712-158">[</span><span·class="p"·data-group-id="1246558712-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="8266808127-157">{</span><span·class="ss">erts</span><span·class="p">,</span><span·class="p"·data-group-id="8266808127-158">[</span><span·class="p"·data-group-id="8266808127-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="1246558712-160">[</span><span·class="p"·data-group-id="1246558712-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="1246558712-161">}</span><span·class="p">,</span><span·class="w">232 ······················</span><span·class="p"·data-group-id="8266808127-160">[</span><span·class="p"·data-group-id="8266808127-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="8266808127-161">}</span><span·class="p">,</span><span·class="w">
233 ·······················</span><span·class="p"·data-group-id="1246558712-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="1246558712-162">}</span><span·class="p">,</span><span·class="w">233 ·······················</span><span·class="p"·data-group-id="8266808127-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="8266808127-162">}</span><span·class="p">,</span><span·class="w">
234 ·······················</span><span·class="p"·data-group-id="1246558712-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="1246558712-164">[</span><span·class="p"·data-group-id="1246558712-164">]</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·db25b1c87c574bbf07d23b81f92020f3522cdc202b13513012748c7addef1c1a·...·]-163">}</span><span·class="p">,</span><span·class="w">234 ·······················</span><span·class="p"·data-group-id="8266808127-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="8266808127-164">[</span><span·class="p"·data-group-id="8266808127-164">]</span><span·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·913302e0c4b587be31c280d361f22eaa908ff4f1a8c8020e5d18284f998c470b·...·]-163">}</span><span·class="p">,</span><span·class="w">
235 ·······················</span><span·class="p"·data-group-id="1246558712-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="1246558712-166">[</span><span·class="p"·data-group-id="1246558712-166">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·fc1ad81461533fdc5f4bd0b46c665c148521a2b2a8ddfac6419cf9f3fdd60231·...·]-165">}</span><span·class="p">,</span><span·class="w">235 ·······················</span><span·class="p"·data-group-id="8266808127-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="8266808127-166">[</span><span·class="p"·data-group-id="8266808127-166">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·2934b9bb8157dc5eef9967ee29f000b0fc099648711b644042d70c3f50a647f7·...·]-165">}</span><span·class="p">,</span><span·class="w">
236 ·······················</span><span·class="p"·data-group-id="1246558712-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="1246558712-168">[</span><span·class="p"·data-group-id="1246558712-168">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·6a6fbc60f3e121e1445140f5cc5eb4a339e0b1cf0f79373569c1a44509fafd27·...·]-167">}</span><span·class="p">,</span><span·class="w">236 ·······················</span><span·class="p"·data-group-id="8266808127-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="8266808127-168">[</span><span·class="p"·data-group-id="8266808127-168">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·6206df0e1767ac541b16d178e8e0d785375913bc188236e616757adb7cb50b37·...·]-167">}</span><span·class="p">,</span><span·class="w">
237 ·······················</span><span·class="p"·data-group-id="1246558712-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="1246558712-170">[</span><span·class="p"·data-group-id="1246558712-170">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·f6db9b941755e2a501946de1cff6c4c4283c51ae50e97cb7485437185342c57d·...·]-169">}</span><span·class="p">,</span><span·class="w">237 ·······················</span><span·class="p"·data-group-id="8266808127-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="8266808127-170">[</span><span·class="p"·data-group-id="8266808127-170">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·71c30d6dfc7fdf27ef36c132d1f574ae32512ba5382872c583947b3ea7e55c09·...·]-169">}</span><span·class="p">,</span><span·class="w">
238 ·······················</span><span·class="p"·data-group-id="1246558712-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="1246558712-172">[</span><span·class="p"·data-group-id="1246558712-172[·...·truncated·by·diffoscope;·len:·51,·SHA:·1e565e2d003e91c1ad2f8c6bd2bf0a927ed78b1dd23b33388fdea239f9855495·...·]-171">}</span><span·class="p">,</span><span·class="w">238 ·······················</span><span·class="p"·data-group-id="8266808127-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="8266808127-172">[</span><span·class="p"·data-group-id="8266808127-172[·...·truncated·by·diffoscope;·len:·51,·SHA:·9c4497cb6eca48eac97d8738038372413ec72eb0db0bcd9b38799e098d120be0·...·]-171">}</span><span·class="p">,</span><span·class="w">
239 ·······················</span><span·class="p"·data-group-id="1246558712-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="1246558712-174">[</span><span·class="p"·data-group-id="1246558712-174">]</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·e9308ced45a91caf683449f3b949a7676139a39170c36651be672b718c7d88f7·...·]-173">}</span><span·class="p">,</span><span·class="w">239 ·······················</span><span·class="p"·data-group-id="8266808127-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="8266808127-174">[</span><span·class="p"·data-group-id="8266808127-174">]</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·1b293a3bd53a21ed8ec26097cbb9211a77d728fc8fb2436c975b71abcaef520c·...·]-173">}</span><span·class="p">,</span><span·class="w">
240 ·······················</span><span·class="p"·data-group-id="1246558712-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="1246558712-176">[</span><span·class="p"·data-group-id="1246558712-176">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·739289e910959e96b0bcb66331b1a1f83c9b7c940d710bf7dca9d48a03150a7d·...·]-175">}</span><span·class="p">,</span><span·class="w">240 ·······················</span><span·class="p"·data-group-id="8266808127-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="8266808127-176">[</span><span·class="p"·data-group-id="8266808127-176">]</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·20eda2f496b0f8c1d933a905cb17cb41c5ae5b460373862713a9abd77bdc05ff·...·]-175">}</span><span·class="p">,</span><span·class="w">
241 ·······················</span><span·class="p"·data-group-id="1246558712-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="1246558712-178">[</span><span·class="p"·data-group-id="1246558712-178">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·6c3a27aac3eb3c82d1ad0f5458431c657074ec3f38d219e447b2cd6ffe4b048d·...·]-177">}</span><span·class="p">,</span><span·class="w">241 ·······················</span><span·class="p"·data-group-id="8266808127-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="8266808127-178">[</span><span·class="p"·data-group-id="8266808127-178">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·c95739a5bf5dc0615aa95d5d5f5964cc354406dc333595ffb8ea7f94409dba19·...·]-177">}</span><span·class="p">,</span><span·class="w">
242 ·······················</span><span·class="p"·data-group-id="1246558712-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="1246558712-179">}</span><span·class="p">,</span><span·class="w">242 ·······················</span><span·class="p"·data-group-id="8266808127-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="8266808127-179">}</span><span·class="p">,</span><span·class="w">
243 ·······················</span><span·class="p"·data-group-id="1246558712-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="1246558712-180">}</span><span·class="p">,</span><span·class="w">243 ·······················</span><span·class="p"·data-group-id="8266808127-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="8266808127-180">}</span><span·class="p">,</span><span·class="w">
244 ·······················</span><span·class="p"·data-group-id="1246558712-181">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1246558712-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:·3350a301e684de00bfb16a580e4af2121874413ed44fd6f5bf9bc4ba6310823a·...·]-157">}</span><span·class="p">,</span><span·class="w">244 ·······················</span><span·class="p"·data-group-id="8266808127-181">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8266808127-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:·a88614c56c9037a3bc88c00de9a0363dd069b456aed6b49826ca171e1484c99b·...·]-157">}</span><span·class="p">,</span><span·class="w">
245 ··········</span><span·class="p"·data-group-id="1246558712-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="8266808127-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="1246558712-183">[</span><span·class="p"·data-group-id="1246558712-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="1246558712-184">}</span><span·class="p">,</span><span·class="w">246 ···············</span><span·class="p"·data-group-id="8266808127-183">[</span><span·class="p"·data-group-id="8266808127-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="8266808127-184">}</span><span·class="p">,</span><span·class="w">
247 ················</span><span·class="p"·data-group-id="1246558712-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="1246558712-185">}</span><span·class="p">,</span><span·class="w">247 ················</span><span·class="p"·data-group-id="8266808127-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="8266808127-185">}</span><span·class="p">,</span><span·class="w">
248 ················</span><span·class="p"·data-group-id="1246558712-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="1246558712-187">[</span><span·class="p"·data-group-id="1246558712-187">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·6a6fbc60f3e121e1445140f5cc5eb4a339e0b1cf0f79373569c1a44509fafd27·...·]-186">}</span><span·class="p">,</span><span·class="w">248 ················</span><span·class="p"·data-group-id="8266808127-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="8266808127-187">[</span><span·class="p"·data-group-id="8266808127-187">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·6206df0e1767ac541b16d178e8e0d785375913bc188236e616757adb7cb50b37·...·]-186">}</span><span·class="p">,</span><span·class="w">
249 ················</span><span·class="p"·data-group-id="1246558712-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="1246558712-189">[</span><span·class="p"·data-group-id="1246558712-189">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·f907d764ec49edbcf0e665c1ba4b674800a03574a96661719185f7607c944d0e·...·]-188">}</span><span·class="p">,</span><span·class="w">249 ················</span><span·class="p"·data-group-id="8266808127-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="8266808127-189">[</span><span·class="p"·data-group-id="8266808127-189">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·3161e435785f7ab6a5364fd1fda1b6827115b253d9d6965cea8f17de34db6eb6·...·]-188">}</span><span·class="p">,</span><span·class="w">
250 ················</span><span·class="p"·data-group-id="1246558712-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="1246558712-191">[</span><span·class="p"·data-group-id="1246558712-191">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·fc1ad81461533fdc5f4bd0b46c665c148521a2b2a8ddfac6419cf9f3fdd60231·...·]-190">}</span><span·class="p">,</span><span·class="w">250 ················</span><span·class="p"·data-group-id="8266808127-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="8266808127-191">[</span><span·class="p"·data-group-id="8266808127-191">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·2934b9bb8157dc5eef9967ee29f000b0fc099648711b644042d70c3f50a647f7·...·]-190">}</span><span·class="p">,</span><span·class="w">
251 ················</span><span·class="p"·data-group-id="1246558712-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="1246558712-193">[</span><span·class="p"·data-group-id="1246558712-193">]</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·fc96810301536a38274530163604af2860616b850996c426e0333e2a1f779b6e·...·]-192">}</span><span·class="p">,</span><span·class="w">251 ················</span><span·class="p"·data-group-id="8266808127-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="8266808127-193">[</span><span·class="p"·data-group-id="8266808127-193">]</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·c1548d54fda4c9827bbe8ba55afd9b2b4c4ee705edba9455b26fc231eb8bf2cd·...·]-192">}</span><span·class="p">,</span><span·class="w">
252 ················</span><span·class="p"·data-group-id="1246558712-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="1246558712-195">[</span><span·class="p"·data-group-id="1246558712-195">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·f907d764ec49edbcf0e665c1ba4b674800a03574a96661719185f7607c944d0e·...·]-194">}</span><span·class="p">,</span><span·class="w">252 ················</span><span·class="p"·data-group-id="8266808127-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="8266808127-195">[</span><span·class="p"·data-group-id="8266808127-195">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·3161e435785f7ab6a5364fd1fda1b6827115b253d9d6965cea8f17de34db6eb6·...·]-194">}</span><span·class="p">,</span><span·class="w">
253 ················</span><span·class="p"·data-group-id="1246558712-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="1246558712-197">[</span><span·class="p"·data-group-id="1246558712-197">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·fc1ad81461533fdc5f4bd0b46c665c148521a2b2a8ddfac6419cf9f3fdd60231·...·]-196">}</span><span·class="p">,</span><span·class="w">253 ················</span><span·class="p"·data-group-id="8266808127-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="8266808127-197">[</span><span·class="p"·data-group-id="8266808127-197">]</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·2934b9bb8157dc5eef9967ee29f000b0fc099648711b644042d70c3f50a647f7·...·]-196">}</span><span·class="p">,</span><span·class="w">
254 ················</span><span·class="p"·data-group-id="1246558712-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="1246558712-199">[</span><span·class="p"·data-group-id="1246558712-199">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·a4fd6f691437814d51110d778fc70290101f17974e5c98595a2e79ef2023f6a1·...·]-198">}</span><span·class="p">,</span><span·class="w">254 ················</span><span·class="p"·data-group-id="8266808127-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="8266808127-199">[</span><span·class="p"·data-group-id="8266808127-199">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·84bcc0792a5c0d750bb5f43a71949bebfbc0e40f445e4ddcbcea8a387c02a2d5·...·]-198">}</span><span·class="p">,</span><span·class="w">
255 ················</span><span·class="p"·data-group-id="1246558712-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="1246558712-201">[</span><span·class="p"·data-group-id="1246558712-201">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·a4fd6f691437814d51110d778fc70290101f17974e5c98595a2e79ef2023f6a1·...·]-200">}</span><span·class="p">,</span><span·class="w">255 ················</span><span·class="p"·data-group-id="8266808127-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="8266808127-201">[</span><span·class="p"·data-group-id="8266808127-201">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·84bcc0792a5c0d750bb5f43a71949bebfbc0e40f445e4ddcbcea8a387c02a2d5·...·]-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.3/doc/html/trace.html#process/4"><code·class="inline">trace:process/4</code></a>,·<a·href="../../../../lib/kernel-10.2.3/doc/html/trace.html#port/4"><code·class="inline">trace:port/4</code></a>,·and·<a·href="../../../../lib/kernel-10.2.3/doc/html/trace.html#function/4"><code·class="inline">trace:function/4</code></a>·BIFs,130 <a·href="../../../../lib/kernel-10.2.3/doc/html/trace.html#process/4"><code·class="inline">trace:process/4</code></a>,·<a·href="../../../../lib/kernel-10.2.3/doc/html/trace.html#port/4"><code·class="inline">trace:port/4</code></a>,·and·<a·href="../../../../lib/kernel-10.2.3/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="6315295268-1">(</span><span·class="p"·data-group-id="6315295268-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="8757520770-1">(</span><span·class="p"·data-group-id="8757520770-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="6315295268-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="6315295268-2">}</span><span·class="gp·unselectable">133 </span><span·class="p"·data-group-id="8757520770-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="8757520770-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="6315295268-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="6315295268-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="8757520770-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="8757520770-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="6315295268-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6315295268-5">[</span><span·class="p"·data-group-id="6315295268-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·211,·SHA:·440186f272743056929c8dd90b30b92fd4aa3b5872cb5e3fc7e188bed2fd1cff·...·]-4">}</span><span·class="gp·unselectable">135 </span><span·class="p"·data-group-id="8757520770-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8757520770-5">[</span><span·class="p"·data-group-id="8757520770-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·211,·SHA:·e6bbaad927bea337c2d777ae5b416fe6574189092321494a77b0d046f94c524b·...·]-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="6315295268-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="6315295268-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="8757520770-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="8757520770-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="6315295268-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6315295268-9">[</span><span·class="p"·data-group-id="6315295268-10">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonod[·...·truncated·by·diffoscope;·len:·423,·SHA:·c9c1af12d90c452b20d02eacea49e8ae9c9daa61bf6667c2dceb1bedffd2cb59·...·]-8">}</span><span·class="gp·unselectable">137 </span><span·class="p"·data-group-id="8757520770-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8757520770-9">[</span><span·class="p"·data-group-id="8757520770-10">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonod[·...·truncated·by·diffoscope;·len:·423,·SHA:·c395144263569041cb00670adf32149b68709740a1a7d1418d82e92a730e972c·...·]-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="6315295268-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="6315295268-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="8757520770-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="8757520770-12">)</span><span·class="p">.</span><span·class="w">
139 </span><span·class="p"·data-group-id="6315295268-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="6315295268-13">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·885,·SHA:·4ff9863d184f3c5b564fda77fc669f04bb19fa5871ef2be1c6292dc02ff68d29·...·]-15">)</span><span·class="w">139 </span><span·class="p"·data-group-id="8757520770-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="8757520770-13">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·885,·SHA:·14e4de92e6f85586679ff9167bd4c5156b52d68e4689d8468309b70aad79a6af·...·]-15">)</span><span·class="w">
140 </span><span·class="p"·data-group-id="6315295268-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:·275,·SHA:·a2751a9030afc80079d6e786df6f5b398d910debe5b99f2d5d2f64d144cac82a·...·]-18">]</span><span·class="w">140 </span><span·class="p"·data-group-id="8757520770-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:·275,·SHA:·39eb993cf5a021afe98565fd8aefd5b2be2c0a022294636ffd72f2b062aae28b·...·]-18">]</span><span·class="w">
141 </span><span·class="p"·data-group-id="6315295268-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="6315295268-19">)</span><span·class="w">·</span><span·class="ss">returne[·...·truncated·by·diffoscope;·len:·851,·SHA:·4570509fa5b3c29be7fb1d281cb58c887dba388de404f9260b8b9aad76dec8e4·...·]-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="8757520770-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="8757520770-19">)</span><span·class="w">·</span><span·class="ss">returne[·...·truncated·by·diffoscope;·len:·851,·SHA:·4736996cc4b75c15b2079ebf0821d6360deddbd1d3c30cac61f0ac89b7402611·...·]-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.3/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="6135086464-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="6135086464-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·de174464e3a56bd4f4bf6688afa4e25c4ee9289e67b0dbde2398ae64e44747b5·...·]-1">)</span><span·class="p">.</span><span·class="w">153 to·<a·href="../../../../lib/kernel-10.2.3/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="2301117302-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="2301117302-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·86,·SHA:·75ab694ca96a67931d986724c023aec20ecbedc2a01290edd517ead125316ae3·...·]-1">)</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p"·data-group-id="6135086464-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="6135086464-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·6a1dec02402876e6a19e542e207f7b8d96babee8a35cfa46cfc4b8a987e9738c·...·]-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="2301117302-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="2301117302-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·f3389991f3907a6cfdf962e2aaa8995fa3e5dd3d564327967ac5dc5fcc90a23e·...·]-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="6135086464-6">[</span><span·class="ss">alias</span><span·class="p">|</span><span·class="w">155 ····································</span><span·class="p"·data-group-id="2301117302-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="6135086464-6">]</span><span·class="p"·data-group-id="6135086464-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="2301117302-6">]</span><span·class="p"·data-group-id="2301117302-5">}</span><span·class="p">,</span><span·class="w">
157 ···································</span><span·class="ss">which_applications</span><span·class="p"·data-group-id="6135086464-4">}</span><span·class="w">·</span><span·class="p"·data-group-id="6135086464-7">(</span><span·class="n">Timestamp</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="6135086464-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="2301117302-4">}</span><span·class="w">·</span><span·class="p"·data-group-id="2301117302-7">(</span><span·class="n">Timestamp</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="2301117302-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="6135086464-8">}</span><span·class="p"·data-group-id="6135086464-7">)</span><span·class="w">159 ····································································</span><span·class="mi">479222</span><span·class="p"·data-group-id="2301117302-8">}</span><span·class="p"·data-group-id="2301117302-7">)</span><span·class="w">
160 </span><span·class="p"·data-group-id="6135086464-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="6135086464-9">)</span><span·class="w">·</span><span·class="ss">out</span[·...·truncated·by·diffoscope;·len:·707,·SHA:·dfe840b53f656c9cb1635387f240bc599bc7335e1fb4971e952063effb6d3234·...·]-11">)</span><span·class="w">160 </span><span·class="p"·data-group-id="2301117302-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="2301117302-9">)</span><span·class="w">·</span><span·class="ss">out</span[·...·truncated·by·diffoscope;·len:·707,·SHA:·53754e3f4844c5f73f56aa795a4b90cafa0485f7264c6830431896acdf7b8122·...·]-11">)</span><span·class="w">
161 </span><span·class="p"·data-group-id="6135086464-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="6135086464-13">)</span><span·class="w">·</span><span·class="ss">in</spa[·...·truncated·by·diffoscope;·len:·708,·SHA:·5c298350491550538eef123432789c89697b260467a1ea748cb7fe4d13e3206e·...·]-15">)</span><span·class="w">161 </span><span·class="p"·data-group-id="2301117302-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="2301117302-13">)</span><span·class="w">·</span><span·class="ss">in</spa[·...·truncated·by·diffoscope;·len:·708,·SHA:·df5394382d3d42cbbc6ab9db9d46a12d03d0afc7bc7bd0991493befa2c3d28ca·...·]-15">)</span><span·class="w">
162 </span><span·class="p"·data-group-id="6135086464-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="6135086464-17">)</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·522,·SHA:·ad149865ce37a180e70a3b32440fd9ced5cbe66b4dc1e913790a88104eff0a7e·...·]-20">]</span><span·class="p">,</span><span·class="w">162 </span><span·class="p"·data-group-id="2301117302-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="2301117302-17">)</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·522,·SHA:·da4c587c83f1b28e194a38aa776b331542d68e5c0c892e9545742840cc0ee208·...·]-20">]</span><span·class="p">,</span><span·class="w">
163 ···············</span><span·class="p"·data-group-id="6135086464-21">[</span><span·class="p"·data-group-id="6135086464-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:·db5c865d8e8757030e44da0426bb306516c4817ed5af5cdf5b63a3deb06f1351·...·]-22">}</span><span·class="p">,</span><span·class="w">163 ···············</span><span·class="p"·data-group-id="2301117302-21">[</span><span·class="p"·data-group-id="2301117302-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:·30937715b895d8d4ac5eb7bf25ba240c4ce48e7ceec11c0641667e3be336c0c9·...·]-22">}</span><span·class="p">,</span><span·class="w">
164 ················</span><span·class="p"·data-group-id="6135086464-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="6135086464-23">}</span><span·clas[·...·truncated·by·diffoscope;·len:·297,·SHA:·b8f6ee0f5085ec1c318d1ed59295043b17025863056fc15c33d573c60485d1e8·...·]-25">{</span><span·class="mi">1710</span><span·class="p">,</span><span·class="w">164 ················</span><span·class="p"·data-group-id="2301117302-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="2301117302-23">}</span><span·clas[·...·truncated·by·diffoscope;·len:·297,·SHA:·ee56dc1d63d8564ae9c1b1ee793882a3ec65db3702137169bda790b8cb47fcd5·...·]-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="6135086464-25">}</span><span·class="p"·data-group-id="6135086464-24">)</span><span·class="w">166 ···································································</span><span·class="mi">479274</span><span·class="p"·data-group-id="2301117302-25">}</span><span·class="p"·data-group-id="2301117302-24">)</span><span·class="w">
167 </span><span·class="p"·data-group-id="6135086464-26">[</span><span·class="p"·data-group-id="6135086464-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:·db5c865d8e8757030e44da0426bb306516c4817ed5af5cdf5b63a3deb06f1351·...·]-27">}</span><span·class="p">,</span><span·class="w">167 </span><span·class="p"·data-group-id="2301117302-26">[</span><span·class="p"·data-group-id="2301117302-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:·30937715b895d8d4ac5eb7bf25ba240c4ce48e7ceec11c0641667e3be336c0c9·...·]-27">}</span><span·class="p">,</span><span·class="w">
168 ·</span><span·class="p"·data-group-id="6135086464-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="6135086464-28">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·db5c865d8e8757030e44da0426bb306516c4817ed5af5cdf5b63a3deb06f1351·...·]-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="2301117302-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="2301117302-28">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·30937715b895d8d4ac5eb7bf25ba240c4ce48e7ceec11c0641667e3be336c0c9·...·]-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="3985257270-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="3985257270-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·159,·SHA:·cfbfba8843820d5ebfcc6bc9f212a0c6199240aa257e7d253bd5c7cc0094b794·...·]-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="0810241678-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="0810241678-2">[</span><span·cl[·...·truncated·by·diffoscope;·len:·159,·SHA:·f6a39323c2faddd8988a454387a4931b57a94787cb92532af6a4271360c37d7a·...·]-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="p"·data-group-id="3985257270-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="3985257270-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·e8e1eb84310d84364349074a77861a1b5cea7c97ce12483c338d7dd703d11e4d·...·]-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="0810241678-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="0810241678-3">)</span><span·class="w">·</span><span·class="o">&lt;</span[·...·truncated·by·diffoscope;·len:·338,·SHA:·eabef4534e8c9d37d78f3b56b5c0a52dadc0c53fe50e76716dc34dc78b8def3f·...·]-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="3985257270-6">[</span><span·class="ss">alias</span><span·class="p">|</span><span·class="w">175 ····································</span><span·class="p"·data-group-id="0810241678-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="3985257270-6">]</span><span·class="p"·data-group-id="3985257270-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="0810241678-6">]</span><span·class="p"·data-group-id="0810241678-5">}</span><span·class="p">,</span><span·class="w">
177 ···································</span><span·class="ss">which_applications</span><span·class="p"·data-group-id="3985257270-4">}</span><span·class="w">177 ···································</span><span·class="ss">which_applications</span><span·class="p"·data-group-id="0810241678-4">}</span><span·class="w">
178 </span><span·class="p"·data-group-id="3985257270-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="3985257270-7">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·518,·SHA:·875f9348520c3fa0403cbbb526fe6f5b5b72b7c719890e4e31e7f8c79e338fbf·...·]-10">]</span><span·class="p">,</span><span·class="w">178 </span><span·class="p"·data-group-id="0810241678-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="0810241678-7">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·518,·SHA:·d0ca99b4fe5e50f1ca0440d17a567e636e11f470555a8a99f380189a405ef315·...·]-10">]</span><span·class="p">,</span><span·class="w">
179 ···············</span><span·class="p"·data-group-id="3985257270-11">[</span><span·class="p"·data-group-id="3985257270-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:·12d2eabdff5337f010b6ad634f29ab790761e10a2211b12d295f1c4f6d058326·...·]-12">}</span><span·class="p">,</span><span·class="w">179 ···············</span><span·class="p"·data-group-id="0810241678-11">[</span><span·class="p"·data-group-id="0810241678-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:·1b3a226609fcd8249184b4d38aaf498407051476b4e20f8faff12b7baceab369·...·]-12">}</span><span·class="p">,</span><span·class="w">
180 ················</span><span·class="p"·data-group-id="3985257270-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="3985257270-13">}</span><span·clas[·...·truncated·by·diffoscope;·len:·85,·SHA:·744d00f8920581c1c773801fee226f5c1fd9ed8b07143fdeed45149e82b2c621·...·]-9">}</span><span·class="w">180 ················</span><span·class="p"·data-group-id="0810241678-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="0810241678-13">}</span><span·clas[·...·truncated·by·diffoscope;·len:·85,·SHA:·3437a7a7c425f5411351779a00e7b6b7bb095af555bb92ede4c7391e48670be9·...·]-9">}</span><span·class="w">
181 </span><span·class="p"·data-group-id="3985257270-14">[</span><span·class="p"·data-group-id="3985257270-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:·12d2eabdff5337f010b6ad634f29ab790761e10a2211b12d295f1c4f6d058326·...·]-15">}</span><span·class="p">,</span><span·class="w">181 </span><span·class="p"·data-group-id="0810241678-14">[</span><span·class="p"·data-group-id="0810241678-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:·1b3a226609fcd8249184b4d38aaf498407051476b4e20f8faff12b7baceab369·...·]-15">}</span><span·class="p">,</span><span·class="w">
182 ·</span><span·class="p"·data-group-id="3985257270-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="3985257270-16">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·12d2eabdff5337f010b6ad634f29ab790761e10a2211b12d295f1c4f6d058326·...·]-14">]</span></code></pre><h2·id="module-tracing-from-the-shell"·class="section-heading">182 ·</span><span·class="p"·data-group-id="0810241678-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="0810241678-16">}</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·1b3a226609fcd8249184b4d38aaf498407051476b4e20f8faff12b7baceab369·...·]-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="7741797514-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7741797514-2">(</span><span·class="p"·data-group-id="7741797514-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:·fb3a2e1e6c20c74e0315fc669c52dba33ef8c1c296c8ffb7e5116ab8a5c8a240·...·]-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="1915800197-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1915800197-2">(</span><span·class="p"·data-group-id="1915800197-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:·b5140d14c13827efb90bf2379ba6784512badcca6c3b3a584853a9bfd3411235·...·]-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="7741797514-4">(</span><span·class="p"·data-group-id="7741797514-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="1915800197-4">(</span><span·class="p"·data-group-id="1915800197-4">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="p"·data-group-id="7741797514-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="7741797514-5">}</span><span·class="gp·unselectable">193 </span><span·class="p"·data-group-id="1915800197-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="1915800197-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="7741797514-6">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7741797514-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:·748fdba7a5ea1f847f924230425ff027ed62089516f4a3d4f67e256b6c323eed·...·]-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="1915800197-6">(</span><span·class="n">Pid</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1915800197-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:·8430ecab12154da03f62a574cc75246432ac128490bb303460b792326434bef7·...·]-6">)</span><span·class="p">.</span><span·class="w">
195 </span><span·class="p"·data-group-id="7741797514-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7741797514-9">[</span><span·class="p"·data-group-id="7741797514-10">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonod[·...·truncated·by·diffoscope;·len:·212,·SHA:·598704b1327642587641bdf01a9330102b8ec4688c4c6683343f9237027b6cde·...·]-8">}</span><span·class="gp·unselectable">195 </span><span·class="p"·data-group-id="1915800197-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1915800197-9">[</span><span·class="p"·data-group-id="1915800197-10">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonod[·...·truncated·by·diffoscope;·len:·212,·SHA:·5afca6b463237638b963b37626456ca41046f08e6293d47221e0d3bc58ce8155·...·]-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="7741797514-11">{</span><span·class="nf">self</span><span·class="p"·data-group-id="7741797514-12">(</span><span·class="p"·data-group-id="7741797514-12">)</span><span·class="p">,</span><span·class="ss">hello</span><span·class="p"·data-group-id="7741797514-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="1915800197-11">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1915800197-12">(</span><span·class="p"·data-group-id="1915800197-12">)</span><span·class="p">,</span><span·class="ss">hello</span><span·class="p"·data-group-id="1915800197-11">}</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p"·data-group-id="7741797514-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="7741797514-13">)</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·340,·SHA:·45f0613e17dc5f703cbada995dbc5050185008a5d87c80235718895137eac952·...·]-15">}</span><span·class="w">197 </span><span·class="p"·data-group-id="1915800197-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="1915800197-13">)</span><span·class="w">·</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·340,·SHA:·3693b6f5190efd42864180f2ced212d9c40060d5e869656adfe0c17dbd628ccc·...·]-15">}</span><span·class="w">
198 </span><span·class="p"·data-group-id="7741797514-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="7741797514-16">}</span><span·class="w">198 </span><span·class="p"·data-group-id="1915800197-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="1915800197-16">}</span><span·class="w">
199 </span><span·class="p"·data-group-id="7741797514-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="7741797514-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="1915800197-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="1915800197-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="7741797514-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="7741797514-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="1915800197-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="1915800197-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="7741797514-19">(</span><span·class="p"·data-group-id="7741797514-19">)</span><span·class="p">.</span><span·class="w">201 5&gt;·</span><span·class="nf">flush</span><span·class="p"·data-group-id="1915800197-19">(</span><span·class="p"·data-group-id="1915800197-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="6971819453-1">(</span><span·class="p"·data-group-id="6971819453-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="9582058072-1">(</span><span·class="p"·data-group-id="9582058072-1">)</span><span·class="p">.</span><span·class="w">
206 </span><span·class="p"·data-group-id="6971819453-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="6971819453-2">}</span><span·class="gp·unselectable">206 </span><span·class="p"·data-group-id="9582058072-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="9582058072-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="6971819453-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="6971819453-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="9582058072-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="9582058072-3">)</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p"·data-group-id="6971819453-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6971819453-5">[</span><span·class="p"·data-group-id="6971819453-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·211,·SHA:·1bbe21c23756f8880650d2a429c0bbd9410973571575f26e15b989595270e3c0·...·]-4">}</span><span·class="gp·unselectable">208 </span><span·class="p"·data-group-id="9582058072-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9582058072-5">[</span><span·class="p"·data-group-id="9582058072-6">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nonode[·...·truncated·by·diffoscope;·len:·211,·SHA:·48d940be56fc9d93bcd1ef4bc94f3ce4153a3dbf20b278a6c6569e97448788bb·...·]-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="6971819453-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:·139,·SHA:·b17ef1fd3636b95e2139e5d7988e88d21a1f03724f97d664b93d9233fcfdc7c2·...·]-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="9582058072-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:·139,·SHA:·0771b0d86c055f6ab00026c1dbbea4c6ff4fac714f85b72225590a23b0191da9·...·]-7">)</span><span·class="p">.</span><span·class="w">
210 </span><span·class="p"·data-group-id="6971819453-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6971819453-10">[</span><span·class="p"·data-group-id="6971819453-11">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nono[·...·truncated·by·diffoscope;·len:·214,·SHA:·675624ceea0b700411d4c853d1d26e85c60d297b5fefd19a6d41c795a5404c87·...·]-9">}</span><span·class="gp·unselectable">210 </span><span·class="p"·data-group-id="9582058072-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9582058072-10">[</span><span·class="p"·data-group-id="9582058072-11">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">nono[·...·truncated·by·diffoscope;·len:·214,·SHA:·9fdb0a886116d46ea68b126e3a2348dcf1c8386cc3c2a6a4f305409f0675d6d4·...·]-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="6971819453-12">(</span><span·class="p"·data-group-id="6971819453-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:·137,·SHA:·c29d453fb9f1f990d6ed1ebb92dd99c06eaf2cc19afd1f5b620d95e56e23df4c·...·]-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="9582058072-12">(</span><span·class="p"·data-group-id="9582058072-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:·137,·SHA:·92373990023419de18bcfaa1c50feee7bc896c72e2597bbd89e1014568ff385e·...·]-12">)</span><span·class="p">.</span><span·class="w">
212 </span><span·class="p"·data-group-id="6971819453-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="6971819453-14">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·60cf1163c87df1f446fae61d913ff0d05717ccd64cc3d949c046b1c00264e495·...·]-15">)</span><span·class="w">212 </span><span·class="p"·data-group-id="9582058072-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="9582058072-14">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·cc05fa0742c51b2eb58dd515a452eea252db35316421605d25159631d38f2ea9·...·]-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="6971819453-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="6971819453-18">[</span><span·class="p"·data-group-id="6971819453-19">{</span><span·class="ss">&#39;_&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6971819453-20">[</span><span·class="p"·data-group-id="6971819453-20">]</span><span·class="p">,</span><span·class="p"·data-group-id="6971819453-21">[</span><span·class="p"·data-group-id="6971819453-22">{</span><span·class="ss">return_trace</span><span·class="p"·data-group-id="6971819453-22">}</span><span·class="p"·data-group-id="6971819453-21">]</span><span·class="p"·data-group-id="6971819453-19">}</span><span·class="p"·data-group-id="6971819453-18">]</span><span·class="p"·data-group-id="6971819453-17">)</span><span·class="p">.</span><span·class="w"> 
215 </span><span·class="p"·data-group-id="6971819453-23">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6971819453-24">[</span><span·class="p"·data-group-id="6971819453-25">{</span><span·class="ss">matched</span><span·[·...·truncated·by·diffoscope;·len:·504,·SHA:·1bdc9f42dd1514f0aa350b91f67860631615b928a591ee5d5d21e166919b0b13·...·]">214 5&gt;·</span><span·class="nc">dbg</span><span·class="p">:</span><span·class="nf">tp</span><span·class="p"·data-group-id="9582058072-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:·683a4fea9b9169756f6022f4cb8f9c7e2ac4f6111d58a7b37a8b332ec9170830·...·]">
 215 </span><span·class="p"·data-group-id="9582058072-23">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9582058072-24">[</span><span·class="p"·data-group-id="9582058072-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="9582058072-25">}</span><span·class="p">,</span><span·class="p"·data-group-id="9582058072-26">{</span><span·class="ss">saved</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9582058072-26">}</span><span·class="p"·data-group-id="9582058072-24">]</span><span·class="p"·data-group-id="9582058072-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="6971819453-27">(</span><span·class="p"·data-group-id="6971819453-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:·137,·SHA:·9d5dd3e9eb465d299f1e81af84e30dcb46f524b9e3550d8a7b3e09d87952012d·...·]-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="9582058072-27">(</span><span·class="p"·data-group-id="9582058072-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:·137,·SHA:·97ea4314b2fdb1a911ec835dccf3e3eacd9b1ed4f3984dfc65496cec4df6afa7·...·]-27">)</span><span·class="p">.</span><span·class="w">
217 </span><span·class="p"·data-group-id="6971819453-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="6971819453-29">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·3b93aba73c5f85aede6302abe928b513844dd652e2c6f0e8edc7454fcb0d7fa4·...·]-30">)</span><span·class="w">217 </span><span·class="p"·data-group-id="9582058072-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="9582058072-29">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·533,·SHA:·d8d8c6e6e8e7617bbe08c68accf0e550b34913e7d8a4e0614ae9be834110509d·...·]-30">)</span><span·class="w">
218 </span><span·class="p"·data-group-id="6971819453-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="6971819453-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="9582058072-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="9582058072-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.3/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.3/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.3/doc/html/seq_trace.html"><code·class="inline">seq_trace</code></a>·module.</p><p><a·href="../../../../lib/kernel-10.2.3/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.3/doc/html/seq_trace.html"><code·class="inline">seq_trace</code></a>·module.</p><p><a·href="../../../../lib/kernel-10.2.3/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="5406628107-1">(</span><span·class="p"·data-group-id="5406628107-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="8413838566-1">(</span><span·class="p"·data-group-id="8413838566-1">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p"·data-group-id="5406628107-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="5406628107-2">}</span><span·class="gp·unselectable">233 </span><span·class="p"·data-group-id="8413838566-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="8413838566-2">}</span><span·class="gp·unselectable">
234 2&gt;·</span><span·class="p"·data-group-id="5406628107-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="5406628107-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·173,·SHA:·9fa7d20036f8dfbf441ee5ce255d42f8c4a373440db9c0970b42172ecf2a90c9·...·]-4">)</span><span·class="p">.</span><span·class="w">234 2&gt;·</span><span·class="p"·data-group-id="8413838566-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="8413838566-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·173,·SHA:·0188bb43a3f30f016280b535d7682a01d4f2704461fba7fcb17bcfb9ae3ebd10·...·]-4">)</span><span·class="p">.</span><span·class="w">
235 </span><span·class="p"·data-group-id="5406628107-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="5406628107-5">}</span><span·class="gp·unselectable">235 </span><span·class="p"·data-group-id="8413838566-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="8413838566-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="5406628107-6">(</span><span·class="n">Tracer</span><span·class="p"·data-group-id="5406628107-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="8413838566-6">(</span><span·class="n">Tracer</span><span·class="p"·data-group-id="8413838566-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="5406628107-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:·1b51cf32b02497aeaea4821193233c97032fb275ec3385a1fcb1a6d15f0bc127·...·]-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="8413838566-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:·8533140355f411fee7dfbdcb060faf0137fe63cc985f30dec3fdd7c610d3d451·...·]-7">)</span><span·class="p">.</span><span·class="w">
239 </span><span·class="p"·data-group-id="5406628107-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5406628107-15">[</span><span·class="p"·data-group-id="5406628107-16">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·425,·SHA:·8e64e6eb90799f4461a7dd0143d210d32c01b48155938e30ec554352709aeded·...·]-14">}</span><span·class="gp·unselectable">239 </span><span·class="p"·data-group-id="8413838566-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8413838566-15">[</span><span·class="p"·data-group-id="8413838566-16">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·425,·SHA:·e08b3f87a493e70f2a2e5e524106ab9047d654c5591c3663138dc44ec880797b·...·]-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="5406628107-18">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="5406628107-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="8413838566-18">(</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">call</span><span·class="p"·data-group-id="8413838566-18">)</span><span·class="p">.</span><span·class="w">
241 </span><span·class="p"·data-group-id="5406628107-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5406628107-20">[</span><span·class="p"·data-group-id="5406628107-21">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·216,·SHA:·5aafa51a51efadcc7e923d784f8df5081fbcc2e7d555e92cdf1149045a8956c4·...·]-19">}</span><span·class="gp·unselectable">241 </span><span·class="p"·data-group-id="8413838566-19">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8413838566-20">[</span><span·class="p"·data-group-id="8413838566-21">{</span><span·class="ss">matched</span><span·class="p">,</span><span·class="ss">non[·...·truncated·by·diffoscope;·len:·216,·SHA:·cf052d6ee0a1f72b5d5c8b1d2945b4729322ed05ec9e55206618faf4a3a85134·...·]-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="5406628107-22">(</span><span·class="p"·data-group-id="5406628107-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="5406628107[·...·truncated·by·diffoscope;·len:·162,·SHA:·df5034a197137e3ea31f4945477a76f19cc9c368b457b9147c940fc299aa8e14·...·]-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="8413838566-22">(</span><span·class="p"·data-group-id="8413838566-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="8413838566[·...·truncated·by·diffoscope;·len:·162,·SHA:·09a252cf6420a5d074a6755252b46647c34b81a81824bbe7c15e6eeb90b21981·...·]-23">)</span><span·class="p">.</span><span·class="w">
243 </span><span·class="p"·data-group-id="5406628107-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="5406628107-25">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·208,·SHA:·f752adf27cc365d4ce4cb38dcea784d1c83d14e88ddcc1a39c0ccf47dbb859ba·...·]-26">)</span><span·class="w">243 </span><span·class="p"·data-group-id="8413838566-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="8413838566-25">)</span><span·class="w">·</span><span·class="ss">call</s[·...·truncated·by·diffoscope;·len:·208,·SHA:·d4cf38345db6985710b4fabed9e0642bf9390c86d78e854705291e00d6f7c65d·...·]-26">)</span><span·class="w">
244 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="5406628107-27">[</span><span·class="mi">0</span><span·class="p"·data-group-id="5406628107-27">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="5406628107-28">(</span><span·class="o">&lt;</span><span·class="mf">0.25</sp[·...·truncated·by·diffoscope;·len:·1035,·SHA:·34f054d05a1c5138e831fd40a34338b66ea0d3ff88c5b8cf97b1e555fab72efe·...·]-30">]</span><span·class="w">244 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="8413838566-27">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8413838566-27">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8413838566-28">(</span><span·class="o">&lt;</span><span·class="mf">0.25</sp[·...·truncated·by·diffoscope;·len:·1035,·SHA:·97f7ab07bb5097145ad4ab0e1547e51a2389ef76f86249ddd0b6313711aaee56·...·]-30">]</span><span·class="w">
245 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="5406628107-32">[</span><span·class="mi">0</span><span·class="p"·data-group-id="5406628107-32">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="5406628107-33">(</span><span·class="o">&lt;</span><span·class="mf">0.30</sp[·...·truncated·by·diffoscope;·len:·1186,·SHA:·14ac034e5f2c90d0f17d26cff622a1f7d2adeff15b3dd004343ab68b062e38d7·...·]-36">]</span><span·class="w">245 </span><span·class="n">SeqTrace</span><span·class="w">·</span><span·class="p"·data-group-id="8413838566-32">[</span><span·class="mi">0</span><span·class="p"·data-group-id="8413838566-32">]</span><span·class="p">:</span><span·class="w">·</span><span·class="p"·data-group-id="8413838566-33">(</span><span·class="o">&lt;</span><span·class="mf">0.30</sp[·...·truncated·by·diffoscope;·len:·1186,·SHA:·a3f2962afcc7f5824382922cc29df8bbc10edf483c92937a843be1da82e152d9·...·]-36">]</span><span·class="w">
246 </span><span·class="p"·data-group-id="5406628107-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:·2bab9e023baf0245bb29eb8de01ba207a532c6463258e26db8d447a8734f94f4·...·]-38">}</span></code></pre><p>This·session·sets·the·system_tracer·to·the·same·process·as·the246 </span><span·class="p"·data-group-id="8413838566-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:·9299853ebe03e092dbd1eb59d0a9b95fd23cfc59591a08a2be72354cc911f6b8·...·]-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; 130052/219835 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.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·<a·href="../../../../erts-15.2.3/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="1633839203-1">(</span><span·class="p"·data-group-id="1633839203-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="8632004616-1">(</span><span·class="p"·data-group-id="8632004616-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="1633839203-2">(</span><span·class="ss">false</span><span·class="p"·data-group-id="1633839203-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="8632004616-2">(</span><span·class="ss">false</span><span·class="p"·data-group-id="8632004616-2">)</span><span·class="p">,</span><span·class="w">
832 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1633839203-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1633839203-4">(</span><span·class="p"·data-group-id="1633839203-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="8632004616-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8632004616-4">(</span><span·class="p"·data-group-id="8632004616-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="1633839203-5">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="1633839203-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="8632004616-5">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="8632004616-5">)</span><span·class="p">,</span><span·class="w">
834 ·············</span><span·class="nf">do_something</span><span·class="p"·data-group-id="1633839203-6">(</span><span·class="p"·data-group-id="1633839203-6">)</span><span·class="w">834 ·············</span><span·class="nf">do_something</span><span·class="p"·data-group-id="8632004616-6">(</span><span·class="p"·data-group-id="8632004616-6">)</span><span·class="w">
835 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="1633839203-3">)</span><span·class="p">,</span><span·class="w">835 ··········</span><span·class="k">end</span><span·class="p"·data-group-id="8632004616-3">)</span><span·class="p">,</span><span·class="w">
836 ····</span><span·class="nf">do_something_else</span><span·class="p"·data-group-id="1633839203-7">(</span><span·class="p"·data-group-id="1633839203-7">)</span><span·class="p">,</span><span·class="w">836 ····</span><span·class="nf">do_something_else</span><span·class="p"·data-group-id="8632004616-7">(</span><span·class="p"·data-group-id="8632004616-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="1633839203-8">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="1633839203-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="8632004616-8">(</span><span·class="n">TagData</span><span·class="p"·data-group-id="8632004616-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.3/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.3/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.1/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.1/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="8617208491-1">(</span><span·class="p"·data-group-id="8617208491-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="5802645890-1">(</span><span·class="p"·data-group-id="5802645890-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
885 ···</span><span·class="p"·data-group-id="8617208491-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="8617208491-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·389,·SHA:·fdd1f56d3892867b996e76e78f6ca250438ec874c2e418d7a05d168816749c1d·...·]-3">)</span><span·class="p">,</span><span·class="w">885 ···</span><span·class="p"·data-group-id="5802645890-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="5802645890-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·389,·SHA:·08593a286ad0ba20ede3390bf3d97532ee8d57a59ca4d1a0a5652675fb265f0d·...·]-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="8617208491-5">(</span><span·class="ss">true</span><span·class="p"·data-group-id="8617208491-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="5802645890-5">(</span><span·class="ss">true</span><span·class="p"·data-group-id="5802645890-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="8617208491-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="8617208491-7">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·40001de2e9e513d337adb54a17836ad456aaa24aad6360f880c4c998c590fd41·...·]-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="5802645890-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="5802645890-7">[</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·c67c6b091f9f7751e4f3efaf5dcee5b17c7a7d78e1290a6233c0c0dc61380c21·...·]-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="8617208491-8">(</span><span·class="n">Saved</span><span·class="p"·data-group-id="8617208491-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="5802645890-8">(</span><span·class="n">Saved</span><span·class="p"·data-group-id="5802645890-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="8617208491-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="8617208491-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="5802645890-9">(</span><span·class="n">F</span><span·class="p"·data-group-id="5802645890-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.1/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.1/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="5004904778-1">(</span><span·class="p"·data-group-id="5004904778-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:·292,·SHA:·1a148e995b4dca108df13d7fd42e5f79867d415c74ca82746d615f49909073ec·...·]-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="5316133149-1">(</span><span·class="p"·data-group-id="5316133149-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:·292,·SHA:·484e68f2262efe344f75caf69e38ff261d97bdc5079f1190dbd14aa7fe37dff9·...·]-1">)</span><span·class="p">.</span><span·class="w">
351 </span><span·class="p"·data-group-id="5004904778-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5004904778-4">{</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·cl[·...·truncated·by·diffoscope;·len:·1359,·SHA:·50a0d9bca50a92ca2b48cee8e5ce5987713cad59008320da5705162fcfde4eef·...·]-3">}</span></code></pre>351 </span><span·class="p"·data-group-id="5316133149-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5316133149-4">{</span><span·class="mi">128</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">0</span><span·cl[·...·truncated·by·diffoscope;·len:·1359,·SHA:·a4c3caf907e34b265691e4890a47e4eff01a243c89b783924a0ef5f62eab354a·...·]-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="0301207325-1">(</span><span·class="p"·data-group-id="0301207325-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:·cc1fbc8ee0cf15bc959ffe74d465544d92d44ffbb6f68263d9b2f7331a260d96·...·]-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="7166410113-1">(</span><span·class="p"·data-group-id="7166410113-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:·f557185b3746cbdcd1af3c4476e91b85234dd77807dcf71e06e00b8d6e44ecbc·...·]-1">)</span><span·class="p">.</span><span·class="w">
488 </span><span·class="p"·data-group-id="0301207325-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0301207325-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="7166410113-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7166410113-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="0301207325-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="7166410113-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="0301207325-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="0301207325-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·743,·SHA:·ca1834e205aa8e230f0f41cc7acd94deaca6e080fa5a2c3617c87914dfbb1194·...·]-6">}</span><span·class="p">,</span><span·class="w">490 ···········</span><span·class="p"·data-group-id="7166410113-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="7166410113-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·743,·SHA:·351cb6b0f8bff8b126392c924377e20056f1e84ce741c2be518cfbab46279e15·...·]-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="0301207325-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="0301207325-9">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><s[·...·truncated·by·diffoscope;·len:·677,·SHA:·25a0c3ce3e653f8cc0252abce61a8da9d26e8f448edd38c5562c31df87558b84·...·]-9">}</span><span·class="p">,</span><span·class="w">492 ···········</span><span·class="p"·data-group-id="7166410113-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="7166410113-9">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><s[·...·truncated·by·diffoscope;·len:·677,·SHA:·1c36ed543e3014749d78d98af7d0eb9a162d8bbce830ed1954cb4c16bbe7e717·...·]-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="0301207325-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:·e5dd985aa13f89983307d939a45a89513e183ad026c9906a2efad9048caf44e4·...·]-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="7166410113-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:·116943deb22f87f059189d129a6e5ea3e7e35d2d8ea2905aad028b6b0167991b·...·]-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="0301207325-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:·665ec6e87b84476bdd861cd7353af2d4dae75f3c55ce0fd61c90cadb2d81aa7b·...·]-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="7166410113-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:·ff03867ff688e319b5521b64a94384dcd7b04fb9d57a4074ddab95a90bf287cf·...·]-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="0301207325-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:·85dce363c95623ea75d8e037fd046b17ef14bb37b98e248a49612569db0a8833·...·]-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="7166410113-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:·0be2260bbe21ba4fe6739faeb01bb346c5ff0262a878eeb42ec267806178a205·...·]-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="0301207325-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:·f977eca003b840179fb2c359865e893fe3c5bb7b51a56be114d3eea8b70fee59·...·]-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="7166410113-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:·e7128ae019099097561befdafca2a5300bf387501f3a1d19dd84629a9ca90a23·...·]-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="0301207325-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="7166410113-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="0301207325-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="7166410113-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="0301207325-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:·80c304f7fb129c3df8f7d3de2e925666bf3f43a99bfed50680de1d834d62dddb·...·]-14">}</span><span·class="p">,</span><span·class="w">500 ·················</span><span·class="p"·data-group-id="7166410113-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:·07103fef7acca417a6c989529072425826e62b351b2ada1ccc9751d171b5a257·...·]-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="0301207325-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="0301207325-17">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0<[·...·truncated·by·diffoscope;·len:·738,·SHA:·fd41e2f304156e5801a754d52e24731f26125756f9b4443e9c25de7dda56a0ed·...·]-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="7166410113-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="7166410113-17">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0<[·...·truncated·by·diffoscope;·len:·738,·SHA:·ac331fb223edb5b2ea74df35ebc947e12f602d8ad1cb9b82480bdf9257dc9a22·...·]-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="0301207325-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="0301207325-19">{</span><span·class="mi">2</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·695,·SHA:·78ba00f9deb1c44427ddb7afa457f7c684b4d9ee68d26f08e600f82f13941fe9·...·]-19">}</span><span·class="p">,</span><span·class="w">503 ···········</span><span·class="p"·data-group-id="7166410113-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="7166410113-19">{</span><span·class="mi">2</span><span·class="p">,</span><span·cl[·...·truncated·by·diffoscope;·len:·695,·SHA:·0559f9debc81fcbdef5b63850131e878f95d6597ccfda2784876d09d1d9cc0b9·...·]-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="0301207325-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:·40b20da3f8725547b59634430939ab0028386abcdf67460d487427d4271a0fe4·...·]-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="7166410113-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:·f7622a567860b4e0e026930e9de3bf67e6f3a768576d6cb47ccaf16a6a3024b5·...·]-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="0301207325-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:·40b20da3f8725547b59634430939ab0028386abcdf67460d487427d4271a0fe4·...·]-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="7166410113-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:·f7622a567860b4e0e026930e9de3bf67e6f3a768576d6cb47ccaf16a6a3024b5·...·]-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="0301207325-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:·dd5ba027af6bc2862eb95d5ffec225be656e2983914fe5a6b98680314f07027c·...·]-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="7166410113-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:·dabefcb7898dc4a216c8464abefbe5cfff6161ff4de009d7db96dfe04e904df7·...·]-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="0301207325-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:·eb2b3bc652d9f38655767774d8356c776023fddc3256f58913dddfd3a31d8e9c·...·]-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="7166410113-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:·044fbc7e1515e1476fc614dfb70f68d68c93f6f38fea72ec6f960f9820b3c778·...·]-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="0301207325-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="0301207325-25">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·686,·SHA:·2f007a9edecd8ea2211aa78bc3cb378254a6a124db867da700ffad2f69acc7ed·...·]-25">}</span><span·class="p">,</span><span·class="w">509 ···········</span><span·class="p"·data-group-id="7166410113-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="7166410113-25">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·686,·SHA:·e24669e557df953f2b870545b332025c24ecc2a29137160ede3f15222baeeb13·...·]-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="0301207325-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:·ca63f6213ea5b48e778a757a113d5f4fed3595c173bd11cd7e40a85c57378890·...·]-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="7166410113-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:·9556a79d32c2c2b70f9ade02831173119e23e6ee6676f06a0d32e9f20634f920·...·]-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="8394921837-1">(</span><span·class="p"·data-group-id="8394921837-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:·291,·SHA:·321206b4e02201449dd377daf2a988794f9d8e98341b732a93b9d3c928b96164·...·]7-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="3503697277-1">(</span><span·class="p"·data-group-id="3503697277-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:·291,·SHA:·7d9500cc777b2a433834d60bebef8d650a20737c453abadf83e1d1b2323583ec·...·]7-1">)</span><span·class="p">.</span><span·class="w">
584 </span><span·class="p"·data-group-id="8394921837-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8394921837-4">{</span><span·class="mi">512</span><span·class="p">,</span><span·class="w">584 </span><span·class="p"·data-group-id="3503697277-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3503697277-4">{</span><span·class="mi">512</span><span·class="p">,</span><span·class="w">
585 ·····</span><span·class="p"·data-group-id="8394921837-5">[</span><span·class="p"·data-group-id="8394921837-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="3503697277-5">[</span><span·class="p"·data-group-id="3503697277-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="8394921837-7">[</span><span·class="p"·data-group-id="8394921837-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="8394921837-8[·...·truncated·by·diffoscope;·len:·50,·SHA:·13ad079e0edadc002d98aa720404df4d52b243770afc19a6fe8449e34072281a·...·]7-7">]</span><span·class="p">,</span><span·class="w">586 ····················</span><span·class="p"·data-group-id="3503697277-7">[</span><span·class="p"·data-group-id="3503697277-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="3503697277-8[·...·truncated·by·diffoscope;·len:·50,·SHA:·330c70ccaa2c98c23ab6be9c8221e72d73037a8eb22744e66a93ae0e8026688c·...·]7-7">]</span><span·class="p">,</span><span·class="w">
587 ····················</span><span·class="p"·data-group-id="8394921837-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:·227,·SHA:·cdf1408345f15b4d5bd089d5ffe9f5bb3ffa1e8ff549fdb3c8c09bb9be21e9dd·...·]7-6">}</span><span·class="p">,</span><span·class="w">587 ····················</span><span·class="p"·data-group-id="3503697277-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:·227,·SHA:·7e75ceccdb8f40b6bdc1eb51612b486e5b8062e4869b65ef8801646f62bf1ca9·...·]7-6">}</span><span·class="p">,</span><span·class="w">
588 ······</span><span·class="p"·data-group-id="8394921837-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="3503697277-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="8394921837-11">[</span><span·class="p"·data-group-id="8394921837-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="8394921837[·...·truncated·by·diffoscope;·len:·53,·SHA:·ddfb02b35bec6762fbdb55fc8019583a00942f703792a772aeba2e7366112510·...·]7-11">]</span><span·class="p">,</span><span·class="w">589 ····················</span><span·class="p"·data-group-id="3503697277-11">[</span><span·class="p"·data-group-id="3503697277-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="3503697277[·...·truncated·by·diffoscope;·len:·53,·SHA:·054400fd1915e0ea7e982fbfc98b3638060a73416849a38ce142cf9f368d93c3·...·]7-11">]</span><span·class="p">,</span><span·class="w">
590 ····················</span><span·class="p"·data-group-id="8394921837-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:·229,·SHA:·384575a50ff3530c18eb05feee108b9501040280a2e4b63b32e0b666a3292549·...·]7-10">}</span><span·class="p">,</span><span·class="w">590 ····················</span><span·class="p"·data-group-id="3503697277-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:·229,·SHA:·6413fb41ef0377b50be5a770b72ec586700f5e765dc97626e3e60890fcef5597·...·]7-10">}</span><span·class="p">,</span><span·class="w">
591 ······</span><span·class="p"·data-group-id="8394921837-14">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8394921837-14">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class[·...·truncated·by·diffoscope;·len:·135,·SHA:·5e5637118bfcf0ad6d1b735f9822bd9bc712dc566d3c615e0b2c67d90b2f7604·...·]7-3">}</span></code></pre>591 ······</span><span·class="p"·data-group-id="3503697277-14">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3503697277-14">}</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class[·...·truncated·by·diffoscope;·len:·135,·SHA:·0e7e4dd32d3ece9ca0bc959fc7f52392d305e249a613e991ac6dac974f9c76b0·...·]7-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.3/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.3/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="8431923998-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="8431923998-1">}</span><span·[·...·truncated·by·diffoscope;·len:·731,·SHA:·1ec3ca15be38d8fd6e4c668816fb7edde3d09cf066a8c2eaaaac4c881d493569·...·]-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.3/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="6774296299-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="6774296299-1">}</span><span·[·...·truncated·by·diffoscope;·len:·731,·SHA:·bfe35f9ffe940be35fdd50c434368d3074c3e5710aa2e2b8e6c3dc932ec8e91f·...·]-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.3/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.3/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.3/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="4289099826-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="4289099826-1">}</span><span·[·...·truncated·by·diffoscope;·len:·702,·SHA:·068da8e66487bc9ad17a88c4027c6cad3e9664bdf58e5d7144c053cb8128dfb3·...·]6-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="5003511906-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="5003511906-1">}</span><span·[·...·truncated·by·diffoscope;·len:·702,·SHA:·a7b048048475ae98357271f911b9481c4db83db0645e291182a30ab55eaa8b8f·...·]6-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.3/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.3/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="7149966413-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="7149966413-1">}</span><span·[·...·truncated·by·diffoscope;·len:·715,·SHA:·496d02214f7225bcfddc1e412ee36a31f9c79d25f21871cb501a4922af4211d9·...·]3-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.3/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="2596057263-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="2596057263-1">}</span><span·[·...·truncated·by·diffoscope;·len:·715,·SHA:·315c40f274900ba57398cd91a43efd82383fa0b929eaaff4c3a72d913022c89b·...·]3-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.3/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.3/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.3/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.3/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.3/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="3048391192-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="3048391192-1">}</span><span·[·...·truncated·by·diffoscope;·len:·723,·SHA:·947f3923db2cc07b3caff59844c9baaa9daba8d541cb8ad06e924fd621fbb3b5·...·]-2">}</span></code></pre><p><em>port_scheduled</em></p><p>Available·through·<a·href="../../../../erts-15.2.3/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="8322310058-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="8322310058-1">}</span><span·[·...·truncated·by·diffoscope;·len:·723,·SHA:·d702c5831e606fbf075b30d38b097c816b156b622f50c3183f7d5c5dc316e8ac·...·]-2">}</span></code></pre><p><em>port_scheduled</em></p><p>Available·through·<a·href="../../../../erts-15.2.3/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="6690971784-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="6690971784-1">}</span><span·c[·...·truncated·by·diffoscope;·len:·711,·SHA:·7f7a9a3bfa45d5d796606b8511432da92d3d49d50f176c1187b03311056fd575·...·]-2">}</span></code></pre><p>Available·through·<a·href="../../../../erts-15.2.3/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="6558757586-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="6558757586-1">}</span><span·c[·...·truncated·by·diffoscope;·len:·711,·SHA:·e051ed1725b01ba700b16caefa296e33067ce2b77053648e3f0a4f5c95a45822·...·]-2">}</span></code></pre><p>Available·through·<a·href="../../../../erts-15.2.3/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.3/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.3/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="2958054283-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="2958054283-1">}</span><span·[·...·truncated·by·diffoscope;·len:·740,·SHA:·ee712e86cf5b0929921ba5b2fdebf2730dea4631794f9d30efc6304337ce7f14·...·]-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.3/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="6730183582-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="6730183582-1">}</span><span·[·...·truncated·by·diffoscope;·len:·740,·SHA:·3b53cf4db96ed6eb7203ce170b578c179be70e38e41dddbd9dcdc5dabdce7c19·...·]-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.3/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="7284414178-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="7284414178-1">}</span><span·[·...·truncated·by·diffoscope;·len:·720,·SHA:·b24532c97f6e9ffb632757241790727c8491c42899f15cb941842c526e6ce335·...·]-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.3/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="4484006169-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="4484006169-1">}</span><span·[·...·truncated·by·diffoscope;·len:·720,·SHA:·7655fb903c905b16fba8412853b80cbd27dab3c1dd4f2dcd8d997e5ad31d32fa·...·]-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.3/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="0201748371-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="0201748371-1">}</span><span·[·...·truncated·by·diffoscope;·len:·718,·SHA:·34e784dd60bfe0485a7adeb0ccd1f10d284258b4130151cc6a8d877b72c964df·...·]-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.3/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="4598868384-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="4598868384-1">}</span><span·[·...·truncated·by·diffoscope;·len:·718,·SHA:·6b01fdb7d9af049ebe77412b3b5a41d3214a4ad32e1bc8ea366b4b44f9261ad4·...·]-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.3/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.3/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.3/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.3/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.3/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="5845404914-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="5845404914-1">}</span><span·[·...·truncated·by·diffoscope;·len:·858,·SHA:·5d043802d03a6b00ab2355f3fdb172110d3455e51065f58b8a97358460f0eaae·...·]-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.3/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="4874777296-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="4874777296-1">}</span><span·[·...·truncated·by·diffoscope;·len:·858,·SHA:·1fa0c5cc8b7179c63489fb7723556e58141bcef05c8e04faa5dccbb49e7dbae3·...·]-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.3/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.3/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.3/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="8871759001-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="8871759001-1">}</span><span·[·...·truncated·by·diffoscope;·len:·862,·SHA:·0ce42f97a7518a33e940f0cf67b370e95521cbfeb8a6d1e9f2487be108536790·...·]-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.3/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="7645597000-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="7645597000-1">}</span><span·[·...·truncated·by·diffoscope;·len:·862,·SHA:·66ef3e10b77e77122b7de02b7e6f5826ec640910edff24edc61a4019563d5c39·...·]-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.3/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="4603349012-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="4603349012-1">}</span><span·[·...·truncated·by·diffoscope;·len:·19389,·SHA:·5af43dc74dc2ae4fad7bdf1f8582ad5c4eeef623a5dd474d21e5c93b62f94ec8·...·]-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="3632429310-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="3632429310-1">}</span><span·[·...·truncated·by·diffoscope;·len:·19389,·SHA:·4b24f32d48a63b2f6536bad56084a0f4929de6a11ce545096c84284bc1e803a9·...·]-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="3664975359-1">(</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="3664975359-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="1925546411-1">(</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="1925546411-1">)</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="3664975359-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="3664975359-2">}</span></code></pre><p>All·tracepoints·via·dyntrace·are·now·visible·and·can·be·listed·through201 </span><span·class="p"·data-group-id="1925546411-2">{</span><span·class="ss">module</span><span·class="p">,</span><span·class="ss">dyntrace</span><span·class="p"·data-group-id="1925546411-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="2618235970-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="2618235970-2">[</span><span·class="ss">procs</span><span·class="p">,</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·391,·SHA:·c951cf04ada0e997acc34715c87def8a70f839c7a32361c0a1d7e203c45335e8·...·]-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="1813159598-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="1813159598-2">[</span><span·class="ss">procs</span><span·class="p">,</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·391,·SHA:·df92c2a0877ef444342843df50a8d1506ec357336f094d349e4f79c9ffb4141e·...·]-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.3/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="1163004632-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="1163004632-1">)</span><span·class="p">.</span><span·class="w">132 <a·href="../../../../erts-15.2.3/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="2937083693-1">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="2937083693-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="1163004632-2">(</span><span·class="p"·data-group-id="1163004632-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="2937083693-2">(</span><span·class="p"·data-group-id="2937083693-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="1163004632-3">(</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="1163004632-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="2937083693-3">(</span><span·class="w">·</span><span·class="mi">0</span><span·class="p"·data-group-id="2937083693-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="1163004632-4">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="1163004632-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="2937083693-4">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="2937083693-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="1163004632-5">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="1163004632-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="2937083693-5">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="2937083693-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="1163004632-6">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="1163004632-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="2937083693-6">(</span><span·class="w">·</span><span·class="mi">1</span><span·class="p"·data-group-id="2937083693-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="1163004632-7">(</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="1163004632-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="2937083693-7">(</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="2937083693-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="9186103102-1">(</span><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">stats</span><span·class="p"·data-group-id="9186103102-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:·581b03c7630f0505cb94c36ab42b817cc61183a66f0f2a63b46af40ca13a8655·...·]-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="2407325236-1">(</span><span·class="nc">msacc</span><span·class="p">:</span><span·class="nf">stats</span><span·class="p"·data-group-id="2407325236-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:·40753a67b43c40ffcc0d92fbb29c82881b55b090a73ad331816c0f635b67b8d0·...·]-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:·118751·bytes,·number·of·entries:·201 Zip·file·size:·118754·bytes,·number·of·entries:·20
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:53·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:46·mimetype
3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Mar-18·07:53·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······730·bx·defN·25-Mar-18·08:46·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx·····4130·bx·defN·25-Mar-18·07:53·OEBPS/systemtap.xhtml4 ?rw-r--r--··6.1·unx·····4130·bx·defN·25-Mar-18·08:46·OEBPS/systemtap.xhtml
5 ?rw-r--r--··6.1·unx·····7084·bx·defN·25-Mar-18·07:53·OEBPS/system_information.xhtml5 ?rw-r--r--··6.1·unx·····7084·bx·defN·25-Mar-18·08:46·OEBPS/system_information.xhtml
6 ?rw-r--r--··6.1·unx····23126·bx·defN·25-Mar-18·07:53·OEBPS/scheduler.xhtml6 ?rw-r--r--··6.1·unx····23126·bx·defN·25-Mar-18·08:46·OEBPS/scheduler.xhtml
7 ?rw-r--r--··6.1·unx·····1494·bx·defN·25-Mar-18·07:53·OEBPS/runtime_tools_app.xhtml7 ?rw-r--r--··6.1·unx·····1494·bx·defN·25-Mar-18·08:46·OEBPS/runtime_tools_app.xhtml
8 ?rw-r--r--··6.1·unx····72570·bx·defN·25-Mar-18·07:53·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx····72570·bx·defN·25-Mar-18·08:46·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····1590·bx·defN·25-Mar-18·07:53·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····1590·bx·defN·25-Mar-18·08:46·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····44036·bx·defN·25-Mar-18·07:53·OEBPS/msacc.xhtml10 ?rw-r--r--··6.1·unx····44036·bx·defN·25-Mar-18·08:46·OEBPS/msacc.xhtml
11 ?rw-r--r--··6.1·unx····58689·bx·defN·25-Mar-18·07:53·OEBPS/lttng.xhtml11 ?rw-r--r--··6.1·unx····58689·bx·defN·25-Mar-18·08:46·OEBPS/lttng.xhtml
12 ?rw-r--r--··6.1·unx····44876·bx·defN·25-Mar-18·07:53·OEBPS/instrument.xhtml12 ?rw-r--r--··6.1·unx····44876·bx·defN·25-Mar-18·08:46·OEBPS/instrument.xhtml
13 ?rw-r--r--··6.1·unx····41781·bx·defN·25-Mar-18·07:53·OEBPS/dyntrace.xhtml13 ?rw-r--r--··6.1·unx····41781·bx·defN·25-Mar-18·08:46·OEBPS/dyntrace.xhtml
14 ?rw-r--r--··6.1·unx·····3689·bx·defN·25-Mar-18·07:53·OEBPS/dtrace.xhtml14 ?rw-r--r--··6.1·unx·····3689·bx·defN·25-Mar-18·08:46·OEBPS/dtrace.xhtml
15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-erlang-ESPT6BQV.css15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:46·OEBPS/dist/epub-erlang-ESPT6BQV.css
16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-LSJCIYTM.js16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:46·OEBPS/dist/epub-LSJCIYTM.js
17 ?rw-r--r--··6.1·unx···244898·bx·defN·25-Mar-18·07:53·OEBPS/dbg.xhtml17 ?rw-r--r--··6.1·unx···244898·bx·defN·25-Mar-18·08:46·OEBPS/dbg.xhtml
18 ?rw-r--r--··6.1·unx·····2672·bx·defN·25-Mar-18·07:53·OEBPS/content.opf18 ?rw-r--r--··6.1·unx·····2672·bx·defN·25-Mar-18·08:46·OEBPS/content.opf
19 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:53·OEBPS/assets/logo.png19 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:46·OEBPS/assets/logo.png
20 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:53·META-INF/container.xml20 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:46·META-INF/container.xml
21 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:53·META-INF/com.apple.ibooks.display-options.xml21 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:46·META-INF/com.apple.ibooks.display-options.xml
22 20·files,·572697·bytes·uncompressed,·115301·bytes·compressed:··79.9%22 20·files,·572697·bytes·uncompressed,·115304·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,·Mar·18·2025·07:53: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,·Mar·18·2025·08:46:36,·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="4072060614-1">(</samp><samp·class="nc">scheduler</samp><samp·class="p">:</samp><samp·class="nf">sample</samp><samp·class="p"·data-group-id="4072060614-2">(</samp><samp·class="p"·data-group-id="4072060614-2">)</samp><samp·class="p"·data-group-id="4072060614-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="2842825154-1">(</samp><samp·class="nc">scheduler</samp><samp·class="p">:</samp><samp·class="nf">sample</samp><samp·class="p"·data-group-id="2842825154-2">(</samp><samp·class="p"·data-group-id="2842825154-2">)</samp><samp·class="p"·data-group-id="2842825154-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.3/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.3/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="0158634249-1">(</span><span·class="nc">scheduler</span><span·class="p">:</span><span·class="nf">sample</span><span·class="p"·data-group-id="0158634249-2">(</span><span·class="p"·data-group-id="0158634249-2">)</span><span·class="p"·data-group-id="0158634249-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="5113053895-1">(</span><span·class="nc">scheduler</span><span·class="p">:</span><span·class="nf">sample</span><span·class="p"·data-group-id="5113053895-2">(</span><span·class="p"·data-group-id="5113053895-2">)</span><span·class="p"·data-group-id="5113053895-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="6911558962-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="6911558962-1">}</span><span·class="w">224 specification·of·a·supervisor.</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="1824392334-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="1824392334-1">}</span><span·class="w">
225 </span><span·class="p"·data-group-id="6911558962-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="6911558962-2">}</span><span·class="w">225 </span><span·class="p"·data-group-id="1824392334-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="1824392334-2">}</span><span·class="w">
226 </span><span·class="p"·data-group-id="6911558962-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:·8ddac892f2b0679b2048d5bb8180e9fdd8bedc01b971e6160a1ec71ede6057bb·...·]-3">}</span><span·class="w">226 </span><span·class="p"·data-group-id="1824392334-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:·d91872d7e3be1fd4fcaf56e1348e0485ca81f575d674a473ba8f04f8202a973c·...·]-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="6911558962-4">(</span><span·class="p"·data-group-id="6911558962-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="1824392334-4">(</span><span·class="p"·data-group-id="1824392334-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="6911558962-5">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="6911558962-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="1824392334-5">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="1824392334-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="3186070135-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="3186070135-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="0902232419-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="0902232419-1">}</span><span·class="w">
232 </span><span·class="p"·data-group-id="3186070135-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="3186070135-2">}</span><span·class="w">232 </span><span·class="p"·data-group-id="0902232419-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="0902232419-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="3186070135-3">(</span><span·class="p"·data-group-id="3186070135-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="0902232419-3">(</span><span·class="p"·data-group-id="0902232419-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="3186070135-4">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="3186070135-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="0902232419-4">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="0902232419-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="1456393321-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="1456393321-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="6054619213-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="6054619213-1">}</span><span·class="w">
237 </span><span·class="p"·data-group-id="1456393321-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="1456393321-2">}</span><span·class="w">237 </span><span·class="p"·data-group-id="6054619213-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="6054619213-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="1456393321-3">(</span><span·class="p"·data-group-id="1456393321-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="6054619213-3">(</span><span·class="p"·data-group-id="6054619213-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="7858281338-1">{</span><span·class="ss">load_object_code</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7858281338-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:·14f36188edcd850f88f59b9428881891cb002ebd4dc2b329287b6976e8621a32·...·]-1">}</span><span·class="w">265 <pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4801974650-1">{</span><span·class="ss">load_object_code</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4801974650-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:·d1a99435b95e5fde8f4963b578f443ff8b7d93093591afc58c5228ea671a6321·...·]-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="7858281338-4">(</span><span·class="p"·data-group-id="7858281338-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="4801974650-4">(</span><span·class="p"·data-group-id="4801974650-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="7858281338-5">(</span><span·class="p"·data-group-id="7858281338-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="4801974650-5">(</span><span·class="p"·data-group-id="4801974650-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="1101764464-1">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1101764464-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:·6d256730ef123018f2271eea33b9d57687f483cbc0750b89ad3fbf8e4d175ca0·...·]-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="3686714139-1">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3686714139-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:·e72f1a1373301f61dabfb848e53426d974b78adb37fbe8991ecfda148d8bfb94·...·]-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="1101764464-4">(</span><span·class="p"·data-group-id="1101764464-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="3686714139-4">(</span><span·class="p"·data-group-id="3686714139-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="1101764464-5">(</span><span·class="p"·data-group-id="1101764464-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="3686714139-5">(</span><span·class="p"·data-group-id="3686714139-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.1/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.1/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="3474399348-1">{</span><span·class="ss">code_change</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3474399348-2">[</span><span·class="p"·data-group-id="3474399348-3">{</span><span·class="n">Mod</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·7028d043c7c8e2cff412cce3da9d65c3337d23f45212bc4f9fcb5c372db6c2ce·...·]-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="8721714447-1">{</span><span·class="ss">code_change</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8721714447-2">[</span><span·class="p"·data-group-id="8721714447-3">{</span><span·class="n">Mod</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·204,·SHA:·9ab2d2fb82fd6c0719b0a8ce2cb3ac537b88daf3a09c9bcd9af000f72cc6aba6·...·]-1">}</span><span·class="w">
289 </span><span·class="p"·data-group-id="3474399348-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="3474399348-5">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·279,·SHA:·3fb3c0422b797ba5f4728dc93dbb775fceef358569881c1b15a009a5c2d5f5bc·...·]-4">}</span><span·class="w">289 </span><span·class="p"·data-group-id="8721714447-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="8721714447-5">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·279,·SHA:·bce37122b22fc5a1b0bfa29ab722bb7e61421cc0e6217e6348738b09fdcc56bb·...·]-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="3474399348-7">(</span><span·class="p"·data-group-id="3474399348-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="8721714447-7">(</span><span·class="p"·data-group-id="8721714447-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="3474399348-8">(</span><span·class="p"·data-group-id="3474399348-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="8721714447-8">(</span><span·class="p"·data-group-id="8721714447-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.1/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.1/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.1/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.1/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="4971252306-1">{</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4971252306-2">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="4971252306-2">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·7919ca8fe3085f25c8281cc0935f0fd6bc0c3f11ed7a526b9ff904032563ae24·...·]-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="7348757492-1">{</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7348757492-2">[</span><span·class="n">Mod</span><span·class="p"·data-group-id="7348757492-2">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·83396dd258cdafe932c8048598851b670df7d6b1e74e8e5d3d3bf7f16a0a9fd1·...·]-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="4971252306-3">(</span><span·class="p"·data-group-id="4971252306-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="7348757492-3">(</span><span·class="p"·data-group-id="7348757492-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.1/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="0646773759-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="0646773759-2">[</span><span·class="n">Node</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·37858cdfa8f34a6100126baa7b0edfbcf4dbae5d8c7b293141bc880f90b19871·...·]-1">}</span><span·class="w">300 <a·href="../../../../lib/stdlib-6.2.1/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="5234043073-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="5234043073-2">[</span><span·class="n">Node</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·f32a380a9532130ab4595f5e0dca82022a8aaa04d349da435a8bcdbafc17196f·...·]-1">}</span><span·class="w">
301 </span><span·class="p"·data-group-id="0646773759-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="0646773759-4">{</span><span·class="n">M</span><s[·...·truncated·by·diffoscope;·len:·236,·SHA:·a6290b733b39969e1fd1fe73b4e2ca0c6971ac59b13ae6ff6e617872875fab4d·...·]-3">}</span><span·class="w">301 </span><span·class="p"·data-group-id="5234043073-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="5234043073-4">{</span><span·class="n">M</span><s[·...·truncated·by·diffoscope;·len:·236,·SHA:·8f2ce07a7a8075b387fcd06afa7683b89a9d315dc430d36e64d8aea7bb04925d·...·]-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="0646773759-5">(</span><span·class="p"·data-group-id="0646773759-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="5234043073-5">(</span><span·class="p"·data-group-id="5234043073-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="0646773759-6">(</span><span·class="p"·data-group-id="0646773759-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="5234043073-6">(</span><span·class="p"·data-group-id="5234043073-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="0646773759-7">(</span><span·class="p"·data-group-id="0646773759-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="5234043073-7">(</span><span·class="p"·data-group-id="5234043073-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="0646773759-8">[</span><span·class="nf">term</span><span·class="p"·data-group-id="0646773759-9">(</span><span·class="p"·data-group-id="0646773759-9">)</span><span·class="p"·data-group-id="0646773759-8">]</span></code></pre><p><a·href="../../../../erts-15.2.3/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="5234043073-8">[</span><span·class="nf">term</span><span·class="p"·data-group-id="5234043073-9">(</span><span·class="p"·data-group-id="5234043073-9">)</span><span·class="p"·data-group-id="5234043073-8">]</span></code></pre><p><a·href="../../../../erts-15.2.3/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="7839690534-1">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7839690534-2">{</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·cla[·...·truncated·by·diffoscope;·len:·157,·SHA:·dafdde61b2c4f39d75fd25f9eb2643c72c269280644ee22f366545829db7ce62·...·]-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="7109274368-1">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7109274368-2">{</span><span·class="n">M</span><span·class="p">,</span><span·class="w">·</span><span·class="n">F</span><span·cla[·...·truncated·by·diffoscope;·len:·157,·SHA:·792df495d03a734ab2ed549c56e89d1c59cbe0297db32119248eb594eb19e7b7·...·]-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="7839690534-3">(</span><span·class="p"·data-group-id="7839690534-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="7109274368-3">(</span><span·class="p"·data-group-id="7109274368-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="7839690534-4">[</span><span·class="nf">term</span><span·class="p"·data-group-id="7839690534-5">(</span><span·class="p"·data-group-id="7839690534-5">)</span><span·class="p"·data-group-id="7839690534-4">]</span></code></pre><p>Evaluates·<a·href="../../../../erts-15.2.3/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="7109274368-4">[</span><span·class="nf">term</span><span·class="p"·data-group-id="7109274368-5">(</span><span·class="p"·data-group-id="7109274368-5">)</span><span·class="p"·data-group-id="7109274368-4">]</span></code></pre><p>Evaluates·<a·href="../../../../erts-15.2.3/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="3895099956-1">(</span><span·class="mi">4</span><span·class="p"·data-group-id="3895099956-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="2489904251-1">(</span><span·class="mi">4</span><span·class="p"·data-group-id="2489904251-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="3895099956-2">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">sasl_sup</span><span·class="p"·data-group-id="3895099956-2">}</span><span·class="w">314 </span><span·class="ss">supervisor</span><span·class="w">·····················································</span><span·class="p"·data-group-id="2489904251-2">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">sasl_sup</span><span·class="p"·data-group-id="2489904251-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="3895099956-3">[</span><span·class="p"·data-group-id="3895099956-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:·2ddbcc2f6a18dcc0cd22b8d1aa7c9592e883e37d8613b9d69b6354b083e14212·...·]-4">}</span><span·class="p">,</span><span·class="w">316 </span><span·class="p"·data-group-id="2489904251-3">[</span><span·class="p"·data-group-id="2489904251-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:·9eabea292c06e875027f2a48384943bafea9e9d18f0a272de378059c46f127f1·...·]-4">}</span><span·class="p">,</span><span·class="w">
317 </span><span·class="p"·data-group-id="3895099956-5">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="ss">release_handler</span><span·class="p"·data-group-id="3895099956-5">}</span><span·class="p">,</span><span·class="w">317 </span><span·class="p"·data-group-id="2489904251-5">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="ss">release_handler</span><span·class="p"·data-group-id="2489904251-5">}</span><span·class="p">,</span><span·class="w">
318 </span><span·class="p"·data-group-id="3895099956-6">{</span><span·class="ss">mfa</span><span·class="p">,</span><span·class="p"·data-group-id="3895099956-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:·332ded0419151e06bb0fca64aeec71501604d1cb5cef24aff4f17361a806ee11·...·]-6">}</span><span·class="p">,</span><span·class="w">318 </span><span·class="p"·data-group-id="2489904251-6">{</span><span·class="ss">mfa</span><span·class="p">,</span><span·class="p"·data-group-id="2489904251-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:·87c7cd816680ea014ac5c974b086e023ddaefc26706443d128fafd8c58164e33·...·]-6">}</span><span·class="p">,</span><span·class="w">
319 </span><span·class="p"·data-group-id="3895099956-9">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="3895099956-9">}</span><span·class="p">,</span><span·class="w">319 </span><span·class="p"·data-group-id="2489904251-9">{</span><span·class="ss">restart_type</span><span·class="p">,</span><span·class="ss">permanent</span><span·class="p"·data-group-id="2489904251-9">}</span><span·class="p">,</span><span·class="w">
320 </span><span·class="p"·data-group-id="3895099956-10">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="3895099956-10">}</span><span·class="p">,</span><span·class="w">320 </span><span·class="p"·data-group-id="2489904251-10">{</span><span·class="ss">shutdown</span><span·class="p">,</span><span·class="mi">2000</span><span·class="p"·data-group-id="2489904251-10">}</span><span·class="p">,</span><span·class="w">
321 </span><span·class="p"·data-group-id="3895099956-11">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="3895099956-11">}</span><span·class="p"·data-group-id="3895099956-3">]</span><span·class="w">321 </span><span·class="p"·data-group-id="2489904251-11">{</span><span·class="ss">child_type</span><span·class="p">,</span><span·class="ss">worker</span><span·class="p"·data-group-id="2489904251-11">}</span><span·class="p"·data-group-id="2489904251-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="3895099956-12">(</span><span·class="mi">9</span><span·class="p"·data-group-id="3895099956-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="2489904251-12">(</span><span·class="mi">9</span><span·class="p"·data-group-id="2489904251-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="3895099956-13">{</span><span·class="ss">undef</span><span·class="p">,</span><span·class="p"·data-group-id="3895099956-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:·705220a07e6dcc783afff3717179d243f4efbdc1498e95917eca6075f5433f7c·...·]-13">}</span><span·class="w">329 </span><span·class="ss">error_info</span><span·class="w">·····························</span><span·class="p"·data-group-id="2489904251-13">{</span><span·class="ss">undef</span><span·class="p">,</span><span·class="p"·data-group-id="2489904251-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:·d0d711795194737623d311db58c4bfef877dabcf9b5edb725c5f40cd84e32e58·...·]-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="3895099956-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="2489904251-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="3895099956-17">[</span><span·class="ss">gen_server</span><span·class="p">,</span><span·class="w">332 </span><span·class="p"·data-group-id="2489904251-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="3895099956-18">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">register</span><span·class="p"·data-group-id="3895099956-18">}</span><span·class="p">,</span><span·class="w">335 </span><span·class="p"·data-group-id="2489904251-18">{</span><span·class="ss">erlang</span><span·class="p">,</span><span·class="nb">register</span><span·class="p"·data-group-id="2489904251-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="3895099956-19">[</span><span·class="p"·data-group-id="3895099956-19">]</span><span·class="p">,</span><span·class="w">338 </span><span·class="p"·data-group-id="2489904251-19">[</span><span·class="p"·data-group-id="2489904251-19">]</span><span·class="p">,</span><span·class="w">
339 </span><span·class="p"·data-group-id="3895099956-20">[</span><span·class="p"·data-group-id="3895099956-20">]</span><span·class="p"·data-group-id="3895099956-17">]</span><span·class="p"·data-group-id="3895099956-16">}</span><span·class="w">339 </span><span·class="p"·data-group-id="2489904251-20">[</span><span·class="p"·data-group-id="2489904251-20">]</span><span·class="p"·data-group-id="2489904251-17">]</span><span·class="p"·data-group-id="2489904251-16">}</span><span·class="w">
340 </span><span·class="ss">ancestors</span><span·class="w">················································</span><span·class="p"·data-group-id="3895099956-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="3895099956-21">]</span><span·class="w">340 </span><span·class="ss">ancestors</span><span·class="w">················································</span><span·class="p"·data-group-id="2489904251-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="2489904251-21">]</span><span·class="w">
341 </span><span·class="ss">messages</span><span·class="w">··································································</span><span·class="p"·data-group-id="3895099956-22">[</span><span·class="p"·data-group-id="3895099956-22">]</span><span·class="w">341 </span><span·class="ss">messages</span><span·class="w">··································································</span><span·class="p"·data-group-id="2489904251-22">[</span><span·class="p"·data-group-id="2489904251-22">]</span><span·class="w">
342 </span><span·class="ss">links</span><span·class="w">····················································</span><span·class="p"·data-group-id="3895099956-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:·b07eaea6cf69315ed5e5d301c663e2710b5887ae5ae7c9e8562b9dd84c7fd282·...·]-23">]</span><span·class="w">342 </span><span·class="ss">links</span><span·class="w">····················································</span><span·class="p"·data-group-id="2489904251-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:·f74d2ae24a2809f9627f19ab51e164d309858877c1adc925c297152351b487ac·...·]-23">]</span><span·class="w">
343 </span><span·class="ss">dictionary</span><span·class="w">································································</span><span·class="p"·data-group-id="3895099956-24">[</span><span·class="p"·data-group-id="3895099956-24">]</span><span·class="w">343 </span><span·class="ss">dictionary</span><span·class="w">································································</span><span·class="p"·data-group-id="2489904251-24">[</span><span·class="p"·data-group-id="2489904251-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="1171401981-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1171401981-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:·c87f385c7bdc65af4b40331c4448a974721a9af0c0eccd366372830c564e8d18·...·]-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="8012273119-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8012273119-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:·b6873acca2e4ddc4043b643162ad03380c1ea9932098a96ade058e44dcbbb55b·...·]-3">}</span><span·class="p">,</span><span·class="w">
144 ··</span><span·class="p"·data-group-id="1171401981-4">[</span><span·class="p"·data-group-id="1171401981-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="1171401981-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">144 ··</span><span·class="p"·data-group-id="8012273119-4">[</span><span·class="p"·data-group-id="8012273119-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="8012273119-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
145 ···</span><span·class="p"·data-group-id="1171401981-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="1171401981-6">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">145 ···</span><span·class="p"·data-group-id="8012273119-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="8012273119-6">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
146 ···</span><span·class="p"·data-group-id="1171401981-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="1171401981-7">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">146 ···</span><span·class="p"·data-group-id="8012273119-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="8012273119-7">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
147 ···</span><span·class="p"·data-group-id="1171401981-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:·937cf611647c7288b5f51a33a6e599f5c31766894de56f99cc9370042b748816·...·]-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="8012273119-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:·a136a9833c5b94e898e0d553768365d9f905456bc49adb0d1b3a24a502d8786f·...·]-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.3/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.3/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="6572268834-1">(</span><span·class="n">RelFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6572268834-2">[</span><span·class="p"·data-group-id="6572268834-3">{</span><span·class="ss">myapp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·353,·SHA:·fbc2074b295424cde9d608de03710419eeb1fce521ce4344847dde000e8ad2bf·...·]-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="7675044075-1">(</span><span·class="n">RelFile</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7675044075-2">[</span><span·class="p"·data-group-id="7675044075-3">{</span><span·class="ss">myapp</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·353,·SHA:·aaecbe335dda210c8311cbebfdb825d212b501b6ce7f7127d3e56e0a85fc3dee·...·]-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="6572268834-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">NewVsn</span><span·class="p"·data-group-id="6572268834-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="7675044075-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">NewVsn</span><span·class="p"·data-group-id="7675044075-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.3/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.3/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,
197 KB
./usr/share/doc/erlang-doc/html/lib/sasl-4.2.2/doc/html/sasl.epub
3.39 KB
zipinfo {}
    
Offset 1, 23 lines modifiedOffset 1, 23 lines modified
1 Zip·file·size:·92273·bytes,·number·of·entries:·211 Zip·file·size:·92281·bytes,·number·of·entries:·21
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:52·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:44·mimetype
3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Mar-18·07:52·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Mar-18·08:44·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx····34842·bx·defN·25-Mar-18·07:52·OEBPS/systools.xhtml4 ?rw-r--r--··6.1·unx····34842·bx·defN·25-Mar-18·08:44·OEBPS/systools.xhtml
5 ?rw-r--r--··6.1·unx····11459·bx·defN·25-Mar-18·07:52·OEBPS/script.xhtml5 ?rw-r--r--··6.1·unx····11459·bx·defN·25-Mar-18·08:44·OEBPS/script.xhtml
6 ?rw-r--r--··6.1·unx·····1680·bx·defN·25-Mar-18·07:52·OEBPS/sasl_intro.xhtml6 ?rw-r--r--··6.1·unx·····1680·bx·defN·25-Mar-18·08:44·OEBPS/sasl_intro.xhtml
7 ?rw-r--r--··6.1·unx····11100·bx·defN·25-Mar-18·07:52·OEBPS/sasl_app.xhtml7 ?rw-r--r--··6.1·unx····11100·bx·defN·25-Mar-18·08:44·OEBPS/sasl_app.xhtml
8 ?rw-r--r--··6.1·unx·····3582·bx·defN·25-Mar-18·07:52·OEBPS/relup.xhtml8 ?rw-r--r--··6.1·unx·····3582·bx·defN·25-Mar-18·08:44·OEBPS/relup.xhtml
9 ?rw-r--r--··6.1·unx····74396·bx·defN·25-Mar-18·07:52·OEBPS/release_handler.xhtml9 ?rw-r--r--··6.1·unx····74396·bx·defN·25-Mar-18·08:44·OEBPS/release_handler.xhtml
10 ?rw-r--r--··6.1·unx·····6210·bx·defN·25-Mar-18·07:52·OEBPS/rel.xhtml10 ?rw-r--r--··6.1·unx·····6210·bx·defN·25-Mar-18·08:44·OEBPS/rel.xhtml
11 ?rw-r--r--··6.1·unx····36502·bx·defN·25-Mar-18·07:52·OEBPS/rb.xhtml11 ?rw-r--r--··6.1·unx····36502·bx·defN·25-Mar-18·08:44·OEBPS/rb.xhtml
12 ?rw-r--r--··6.1·unx····64019·bx·defN·25-Mar-18·07:52·OEBPS/notes.xhtml12 ?rw-r--r--··6.1·unx····64019·bx·defN·25-Mar-18·08:44·OEBPS/notes.xhtml
13 ?rw-r--r--··6.1·unx·····1639·bx·defN·25-Mar-18·07:52·OEBPS/nav.xhtml13 ?rw-r--r--··6.1·unx·····1639·bx·defN·25-Mar-18·08:44·OEBPS/nav.xhtml
14 ?rw-r--r--··6.1·unx····28563·bx·defN·25-Mar-18·07:52·OEBPS/error_logging.xhtml14 ?rw-r--r--··6.1·unx····28563·bx·defN·25-Mar-18·08:44·OEBPS/error_logging.xhtml
15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:52·OEBPS/dist/epub-erlang-ESPT6BQV.css15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:44·OEBPS/dist/epub-erlang-ESPT6BQV.css
16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:52·OEBPS/dist/epub-LSJCIYTM.js16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:44·OEBPS/dist/epub-LSJCIYTM.js
17 ?rw-r--r--··6.1·unx·····2758·bx·defN·25-Mar-18·07:52·OEBPS/content.opf17 ?rw-r--r--··6.1·unx·····2758·bx·defN·25-Mar-18·08:44·OEBPS/content.opf
18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:52·OEBPS/assets/logo.png18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:44·OEBPS/assets/logo.png
19 ?rw-r--r--··6.1·unx····34558·bx·defN·25-Mar-18·07:52·OEBPS/appup.xhtml19 ?rw-r--r--··6.1·unx····34558·bx·defN·25-Mar-18·08:44·OEBPS/appup.xhtml
20 ?rw-r--r--··6.1·unx·····9998·bx·defN·25-Mar-18·07:52·OEBPS/alarm_handler.xhtml20 ?rw-r--r--··6.1·unx·····9998·bx·defN·25-Mar-18·08:44·OEBPS/alarm_handler.xhtml
21 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:52·META-INF/container.xml21 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:44·META-INF/container.xml
22 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:52·META-INF/com.apple.ibooks.display-options.xml22 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:44·META-INF/com.apple.ibooks.display-options.xml
23 21·files,·343350·bytes·uncompressed,·88675·bytes·compressed:··74.2%23 21·files,·343350·bytes·uncompressed,·88683·bytes·compressed:··74.2%
117 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,·Mar·18·2025·07: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,·Mar·18·2025·08:44:20,·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="5640307328-1">(</samp><samp·class="n">RelFile</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="5640307328-2">[</samp><samp·class="p"·data-group-id="5640307328-3">{</samp><samp·class="ss">myapp</samp><samp·class="p">,</sa[·...·truncated·by·diffoscope;·len:·353,·SHA:·8ddc60fd16538648310191233ea5f63c87ec317ebf157595caa8b59537bdbf7a·...·]-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="4981426522-1">(</samp><samp·class="n">RelFile</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="4981426522-2">[</samp><samp·class="p"·data-group-id="4981426522-3">{</samp><samp·class="ss">myapp</samp><samp·class="p">,</sa[·...·truncated·by·diffoscope;·len:·353,·SHA:·6d27123d129b440edea2ae7c3b7c244bf8236fc463552eb0f7d410ea18e838e1·...·]-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="5640307328-4">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="n">NewVsn</samp><samp·class="p"·data-group-id="5640307328-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="4981426522-4">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="n">NewVsn</samp><samp·class="p"·data-group-id="4981426522-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
    
Offset 31, 19 lines modifiedOffset 31, 19 lines modified
31 (<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">31 (<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">
32 ··<a·href="#file-syntax"·class="hover-link">32 ··<a·href="#file-syntax"·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">File·Syntax</span>35 ··<span·class="text">File·Syntax</span>
36 </h2>36 </h2>
37 <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>release37 <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
38 specification</em>.·The·file·has·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="5659742223-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5659742223-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:·89a381b8ed80863b1aa12b1723ba4578e84fdc92207939f54d5024bb59158ffd·...·]-3">}</span><span·class="p">,</span><span·class="w">38 specification</em>.·The·file·has·the·following·syntax:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4715996149-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4715996149-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:·e304fab031222660ffa4a29e913bd722420e0947c17dcfb69af05be63e90c2ae·...·]-3">}</span><span·class="p">,</span><span·class="w">
39 ··</span><span·class="p"·data-group-id="5659742223-4">[</span><span·class="p"·data-group-id="5659742223-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="5659742223-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">39 ··</span><span·class="p"·data-group-id="4715996149-4">[</span><span·class="p"·data-group-id="4715996149-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="4715996149-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
40 ···</span><span·class="p"·data-group-id="5659742223-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="5659742223-6">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">40 ···</span><span·class="p"·data-group-id="4715996149-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="4715996149-6">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
41 ···</span><span·class="p"·data-group-id="5659742223-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="5659742223-7">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">41 ···</span><span·class="p"·data-group-id="4715996149-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="4715996149-7">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
42 ···</span><span·class="p"·data-group-id="5659742223-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:·4163bcdb0dc02100b845912ae7f2e245631a46428c0e971b7936b3dee78bc0af·...·]-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·of42 ···</span><span·class="p"·data-group-id="4715996149-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:·f0d6f0afee9ebe7bcb87e08ae67ba6e935c86f561e4d39ec7903758f8773ef82·...·]-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
43 an·application·included·in·the·release.</p><p>If·<code·class="inline">Type·=·permanent·|·transient·|·temporary</code>,·the·application·is·loaded·and43 an·application·included·in·the·release.</p><p>If·<code·class="inline">Type·=·permanent·|·transient·|·temporary</code>,·the·application·is·loaded·and
44 started·in·the·corresponding·way,·see·<a·href="../../../../lib/kernel/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·the44 started·in·the·corresponding·way,·see·<a·href="../../../../lib/kernel/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
45 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·an45 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
46 application·included·in·the·release.·The·list·must·be·a·subset·of·the·included46 application·included·in·the·release.·The·list·must·be·a·subset·of·the·included
47 applications·specified·in·the·application·resource·file·(<code·class="inline">Application.app</code>)47 applications·specified·in·the·application·resource·file·(<code·class="inline">Application.app</code>)
48 and·overrides·this·value.·Defaults·to·the·same·value·as·in·the·application48 and·overrides·this·value.·Defaults·to·the·same·value·as·in·the·application
49 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">49 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">
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="2363038291-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2363038291-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:·13db13c52615790edde65bce89fc855b5fed66e28fb41e4d7fee55c978075165·...·]-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="6046951937-1">{</span><span·class="ss">script</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6046951937-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:·4152fda4348b71bc505407d800ebcfb4e34cedad31e6c3be68be93c118569e4b·...·]-2">}</span><span·class="p">,</span><span·class="w">
146 ·</span><span·class="p"·data-group-id="2363038291-3">[</span><span·class="w">146 ·</span><span·class="p"·data-group-id="6046951937-3">[</span><span·class="w">
147 ··</span><span·class="p"·data-group-id="2363038291-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="2363038291-4">}</span><span·class="p">,</span><span·class="w">147 ··</span><span·class="p"·data-group-id="6046951937-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="6046951937-4">}</span><span·class="p">,</span><span·class="w">
148 ··</span><span·class="p"·data-group-id="2363038291-5">{</span><span·class="ss">preLoaded</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2363038291-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:·1638af159d19d2b866d62d98716c37307d8161ae53b94f15ec8f80117ecf2700·...·]-5">}</span><span·class="p">,</span><span·class="w">148 ··</span><span·class="p"·data-group-id="6046951937-5">{</span><span·class="ss">preLoaded</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6046951937-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:·644fc981484bddf8ebd8ff8cdd4d4df018c3e911229533977f8d9f313d5d6e0b·...·]-5">}</span><span·class="p">,</span><span·class="w">
149 ··</span><span·class="p"·data-group-id="2363038291-7">{</span><span·class="ss">path</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2363038291-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:·1586541d19463ec741c1ac8735392e0901774d05cd8c4c5404f58be627397041·...·]-7">}</span><span·class="p">.</span><span·class="w">149 ··</span><span·class="p"·data-group-id="6046951937-7">{</span><span·class="ss">path</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6046951937-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:·15f7765a8478bb5ad1dbb2b2f2140bffddbe666fd11cb44c455078523e0f3385·...·]-7">}</span><span·class="p">.</span><span·class="w">
150 ··</span><span·class="p"·data-group-id="2363038291-9">{</span><span·class="ss">primLoad</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2363038291-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:·2e9e29d3f87e4871d216adbe8e746f4d132e39dd304378b9068e87eac3d1ec0f·...·]-9">}</span><span·class="p">,</span><span·class="w">150 ··</span><span·class="p"·data-group-id="6046951937-9">{</span><span·class="ss">primLoad</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6046951937-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:·31c91e3e51eab7ec33ccd2df6c2558a72ffdacca575458096782af58f2ba821d·...·]-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="2363038291-11">{</span><span·class="ss">kernel_load_completed</span><span·class="p"·data-group-id="2363038291-11">}</span><span·class="p">,</span><span·class="w">152 ··</span><span·class="p"·data-group-id="6046951937-11">{</span><span·class="ss">kernel_load_completed</span><span·class="p"·data-group-id="6046951937-11">}</span><span·class="p">,</span><span·class="w">
153 ··</span><span·class="p"·data-group-id="2363038291-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="2363038291-12">}</span><span·class="p">,</span><span·class="w">153 ··</span><span·class="p"·data-group-id="6046951937-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="6046951937-12">}</span><span·class="p">,</span><span·class="w">
154 ··</span><span·class="p"·data-group-id="2363038291-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="2363038291-14">{</span><span·class="n">Mod[·...·truncated·by·diffoscope;·len:·252,·SHA:·8d892e4b1b83b2fda3701158414a8457ec7fc9b37108010d6ee17107e007acd9·...·]-13">}</span><span·class="p">,</span><span·class="w">154 ··</span><span·class="p"·data-group-id="6046951937-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="6046951937-14">{</span><span·class="n">Mod[·...·truncated·by·diffoscope;·len:·252,·SHA:·ab428a96aee746f8339fd7f15563615f3bbaf74b0fe383756c123abdcde103ef·...·]-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="2363038291-15">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2363038291-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:·17095e039ab71e7c866c164d8f9af935e9fe45cf49ba378292c99e81459395e1·...·]-15">}</span><span·class="p">,</span><span·class="w">156 ··</span><span·class="p"·data-group-id="6046951937-15">{</span><span·class="nb">apply</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6046951937-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:·9e3c7385ba505b0883b674f5095e71e71179877e57aaca9b6f85f0f8ba340ec2·...·]-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="2363038291-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="2363038291-17">}</span><span·class="p"·data-group-id="2363038291-3">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·39735c49d584a11e7287aea9a1f03213b4b646a001b93b41f9ca8823d1072b3d·...·]-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="6046951937-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="6046951937-17">}</span><span·class="p"·data-group-id="6046951937-3">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·ee78f09e4086b162c754b815d02ac4dec5c8536222b521f724bc563505647a39·...·]-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.3/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.3/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
942 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18.1/doc/html/snmp.epub
12.3 KB
zipinfo {}
Max HTML report size reached
420 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,·Mar·18·2025·07:54: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,·Mar·18·2025·08:47:32,·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="2042624327-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="2042624327-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="9426115430-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="9426115430-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="2042624327-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="2042624327-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="9426115430-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="9426115430-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="6284985114-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="6284985114-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="6415097515-1">(</samp><samp·class="ss">my_app</samp><samp·class="p"·data-group-id="6415097515-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="6284985114-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="6284985114-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="6415097515-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="6415097515-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="1342906782-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="1342906782-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="2230068641-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="2230068641-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="4954354500-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="4954354500-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="9469748080-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="9469748080-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="4954354500-2">(</samp><samp·class="s">&quot;snmp/include/snmp_types.hrl&quot;</samp><samp·class="p"·data-group-id="4954354500-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="9469748080-2">(</samp><samp·class="s">&quot;snmp/include/snmp_types.hrl&quot;</samp><samp·class="p"·data-group-id="9469748080-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
    
Offset 32, 30 lines modifiedOffset 32, 30 lines modified
32 before·it·will·be·compiled.·This·text·file·must·have·the·same·name·as·the·MIB,32 before·it·will·be·compiled.·This·text·file·must·have·the·same·name·as·the·MIB,
33 but·with·the·suffix·<code·class="inline">.mib</code>.·This·is·necessary·for·handling·the·<code·class="inline">IMPORT</code>33 but·with·the·suffix·<code·class="inline">.mib</code>.·This·is·necessary·for·handling·the·<code·class="inline">IMPORT</code>
34 statement.</p><p>The·association·file,·which·contains·the·names·of·instrumentation·functions·for34 statement.</p><p>The·association·file,·which·contains·the·names·of·instrumentation·functions·for
35 the·MIB,·should·have·the·suffix·<code·class="inline">.funcs</code>.·If·the·compiler·does·not·find·the35 the·MIB,·should·have·the·suffix·<code·class="inline">.funcs</code>.·If·the·compiler·does·not·find·the
36 association·file,·it·gives·a·warning·message·and·uses·default·instrumentation36 association·file,·it·gives·a·warning·message·and·uses·default·instrumentation
37 functions.·(See·<a·href="snmp_instr_functions.xhtml#snmp_3">Default·Instrumentation</a>·for37 functions.·(See·<a·href="snmp_instr_functions.xhtml#snmp_3">Default·Instrumentation</a>·for
38 more·details).</p><p>The·MIB·compiler·is·started·with·a·call·to·<code·class="inline">snmpc:compile(&lt;mibname&gt;).</code>·For38 more·details).</p><p>The·MIB·compiler·is·started·with·a·call·to·<code·class="inline">snmpc:compile(&lt;mibname&gt;).</code>·For
39 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="1602760837-1">(</span><span·class="s">&quot;RFC1213-MIB&quot;</span><span·class="p"·data-group-id="1602760837-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·the39 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="2356465953-1">(</span><span·class="s">&quot;RFC1213-MIB&quot;</span><span·class="p"·data-group-id="2356465953-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
40 MODULE-IDENTITY·statement·to·determinate·if·the·MIB·is·written·in·SMI·version·140 MODULE-IDENTITY·statement·to·determinate·if·the·MIB·is·written·in·SMI·version·1
41 or·2.</p><h2·id="importing-mibs"·class="section-heading">41 or·2.</p><h2·id="importing-mibs"·class="section-heading">
42 ··<a·href="#importing-mibs"·class="hover-link">42 ··<a·href="#importing-mibs"·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">Importing·MIBs</span>45 ··<span·class="text">Importing·MIBs</span>
46 </h2>46 </h2>
47 <p>The·compiler·handles·the·<code·class="inline">IMPORT</code>·statement.·It·is·important·to·import·the47 <p>The·compiler·handles·the·<code·class="inline">IMPORT</code>·statement.·It·is·important·to·import·the
48 compiled·file·and·not·the·ASN.1·(source)·file.·A·MIB·must·be·recompiled·to·make48 compiled·file·and·not·the·ASN.1·(source)·file.·A·MIB·must·be·recompiled·to·make
49 changes·visible·to·other·MIBs·importing·it.</p><p>The·compiled·files·of·the·imported·MIBs·must·be·present·in·the·current49 changes·visible·to·other·MIBs·importing·it.</p><p>The·compiled·files·of·the·imported·MIBs·must·be·present·in·the·current
50 directory,·or·a·directory·in·the·current·path.·The·path·is·supplied·with·the50 directory,·or·a·directory·in·the·current·path.·The·path·is·supplied·with·the
51 <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="5573453332-1">(</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p">,</span><span·class="w">51 <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="6460632145-1">(</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p">,</span><span·class="w">
52 ·······</span><span·class="p"·data-group-id="5573453332-2">[</span><span·class="p"·data-group-id="5573453332-3">{</span><span·class="ss">i</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5573453332-4">[</span><span·class="s">&quot;friend_mibs/&quot;</span><span·cl[·...·truncated·by·diffoscope;·len:·292,·SHA:·58c67641e360d384af6d6ded80c4109c83f3210dd191f4698301cf6b0076d404·...·]-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>52 ·······</span><span·class="p"·data-group-id="6460632145-2">[</span><span·class="p"·data-group-id="6460632145-3">{</span><span·class="ss">i</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6460632145-4">[</span><span·class="s">&quot;friend_mibs/&quot;</span><span·cl[·...·truncated·by·diffoscope;·len:·292,·SHA:·be4541ff300d38e3d2d931107507941e08e8aa2b408cb146b35e7d3c417a7a32·...·]-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>
53 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="6310959526-1">(</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p">,</span><span·class="w">53 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="2452911199-1">(</span><span·class="s">&quot;MY-MIB&quot;</span><span·class="p">,</span><span·class="w">
54 ·······</span><span·class="p"·data-group-id="6310959526-2">[</span><span·class="p"·data-group-id="6310959526-3">{</span><span·class="ss">il</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6310959526-4">[</span><span·class="s">&quot;snmp/priv/mibs/&quot;</span><spa[·...·truncated·by·diffoscope;·len:·295,·SHA:·04f0eefa0df5ad43073f6703e58d48061976c7d276000e215e7caa06c52d0752·...·]-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·OTP54 ·······</span><span·class="p"·data-group-id="2452911199-2">[</span><span·class="p"·data-group-id="2452911199-3">{</span><span·class="ss">il</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2452911199-4">[</span><span·class="s">&quot;snmp/priv/mibs/&quot;</span><spa[·...·truncated·by·diffoscope;·len:·295,·SHA:·bb127c6e30220ed6c821809cbd502740427b497c321c583b7eec0de6c0587819·...·]-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
55 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,55 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,
56 RFC-1215,·RFC-1212,·SNMPv2-TC,·SNMPv2-CONF,·and·RFC1155-SMI.·They·cannot56 RFC-1215,·RFC-1212,·SNMPv2-TC,·SNMPv2-CONF,·and·RFC1155-SMI.·They·cannot
57 therefore·be·compiled·separately.</p><h2·id="mib-consistency-checking"·class="section-heading">57 therefore·be·compiled·separately.</p><h2·id="mib-consistency-checking"·class="section-heading">
58 ··<a·href="#mib-consistency-checking"·class="hover-link">58 ··<a·href="#mib-consistency-checking"·class="hover-link">
59 ····<i·class="ri-link-m"·aria-hidden="true"></i>59 ····<i·class="ri-link-m"·aria-hidden="true"></i>
60 ··</a>60 ··</a>
61 ··<span·class="text">MIB·Consistency·Checking</span>61 ··<span·class="text">MIB·Consistency·Checking</span>
35.9 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
    
Offset 26, 21 lines modifiedOffset 26, 21 lines modified
26 <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·index26 <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
27 structure·for·SNMP·tables.·It·is·implemented·as·an·ets·table·of·the·ordered_set27 structure·for·SNMP·tables.·It·is·implemented·as·an·ets·table·of·the·ordered_set
28 data-type,·which·means·that·all·operations·are·O(log·n).·In·the·table,·the·key28 data-type,·which·means·that·all·operations·are·O(log·n).·In·the·table,·the·key
29 is·an·ASN.1·OBJECT·IDENTIFIER.</p><p>This·index·is·used·to·separate·the·implementation·of·the·SNMP·ordering·from·the29 is·an·ASN.1·OBJECT·IDENTIFIER.</p><p>This·index·is·used·to·separate·the·implementation·of·the·SNMP·ordering·from·the
30 actual·implementation·of·the·table.·The·SNMP·ordering,·that·is·implementation·of30 actual·implementation·of·the·table.·The·SNMP·ordering,·that·is·implementation·of
31 GET·NEXT,·is·implemented·in·this·module.</p><p>For·example,·suppose·there·is·an·SNMP·table,·which·is·best·implemented·in·Erlang31 GET·NEXT,·is·implemented·in·this·module.</p><p>For·example,·suppose·there·is·an·SNMP·table,·which·is·best·implemented·in·Erlang
32 as·one·process·per·SNMP·table·row.·Suppose·further·that·the·INDEX·in·the·SNMP32 as·one·process·per·SNMP·table·row.·Suppose·further·that·the·INDEX·in·the·SNMP
33 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"><samp·class="nf">new_process</samp><samp·class="p"·data-group-id="5807203628-1">(</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">SnmpIndex</samp><samp·class="p"·data-group-id="5807203628-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">33 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"><samp·class="nf">new_process</samp><samp·class="p"·data-group-id="4733757421-1">(</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">SnmpIndex</samp><samp·class="p"·data-group-id="4733757421-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
34 ··</samp><samp·class="n">Pid</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nf">start_process</samp><samp·class="p"·data-group-id="5807203628-2">(</samp><samp·class="p"·data-group-id="5807203628-2">)</samp><samp·class="p">,</samp><samp·class="w">34 ··</samp><samp·class="n">Pid</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nf">start_process</samp><samp·class="p"·data-group-id="4733757421-2">(</samp><samp·class="p"·data-group-id="4733757421-2">)</samp><samp·class="p">,</samp><samp·class="w">
35 ··</samp><samp·class="n">NewSnmpIndex</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">35 ··</samp><samp·class="n">NewSnmpIndex</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">
36 ····</samp><samp·class="nc">snmp_index</samp><samp·class="p">:</samp><samp·class="nf">insert</samp><samp·class="p"·data-group-id="5807203628-3">(</samp><samp·class="n">SnmpIndex</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Pid</samp><samp·class="p"·data-group-id="5807203628-3">)</samp><samp·class="p">,</samp><samp·class="w">36 ····</samp><samp·class="nc">snmp_index</samp><samp·class="p">:</samp><samp·class="nf">insert</samp><samp·class="p"·data-group-id="4733757421-3">(</samp><samp·class="n">SnmpIndex</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Pid</samp><samp·class="p"·data-group-id="4733757421-3">)</samp><samp·class="p">,</samp><samp·class="w">
37 ··</samp><samp·class="o">&lt;</samp><samp·class="p">.</samp><samp·class="p">.</samp><samp·class="p">.</samp><samp·class="o">&gt;</samp></code></pre><p>With·this·structure,·we·can·now·map·an·OBJECT·IDENTIFIER·in·e.g.·a·GET·NEXT37 ··</samp><samp·class="o">&lt;</samp><samp·class="p">.</samp><samp·class="p">.</samp><samp·class="p">.</samp><samp·class="o">&gt;</samp></code></pre><p>With·this·structure,·we·can·now·map·an·OBJECT·IDENTIFIER·in·e.g.·a·GET·NEXT
38 request,·to·the·correct·process:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">get_next_pid</samp><samp·class="p"·data-group-id="9523324615-1">(</samp><samp·class="n">Oid</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">SnmpIndex</samp><samp·class="p"·data-group-id="9523324615-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">38 request,·to·the·correct·process:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">get_next_pid</samp><samp·class="p"·data-group-id="9082304284-1">(</samp><samp·class="n">Oid</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">SnmpIndex</samp><samp·class="p"·data-group-id="9082304284-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
39 ··</samp><samp·class="p"·data-group-id="9523324615-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="9523324615-3">{</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Pid</samp><samp·clas[·...·truncated·by·diffoscope;·len:·458,·SHA:·500e0b12d17730689bb1e543308a5ce36f60e309d489a3203f9becffb40fbc5d·...·]-4">)</samp><samp·class="p">,</samp><samp·class="w">39 ··</samp><samp·class="p"·data-group-id="9082304284-2">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="9082304284-3">{</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Pid</samp><samp·clas[·...·truncated·by·diffoscope;·len:·458,·SHA:·725e2e642fa845be99efee61ebad1bfafde2b15ebda9c76ce51f2eb88f575d6d·...·]-4">)</samp><samp·class="p">,</samp><samp·class="w">
40 ··</samp><samp·class="n">Pid</samp><samp·class="p">.</samp></code></pre><h2·id="module-warnings"·class="section-heading">40 ··</samp><samp·class="n">Pid</samp><samp·class="p">.</samp></code></pre><h2·id="module-warnings"·class="section-heading">
41 ··<a·href="#module-warnings"·class="hover-link">41 ··<a·href="#module-warnings"·class="hover-link">
42 ····<i·class="ri-link-m"·aria-hidden="true"></i>42 ····<i·class="ri-link-m"·aria-hidden="true"></i>
43 ··</a>43 ··</a>
44 ··<span·class="text">Warnings</span>44 ··<span·class="text">Warnings</span>
45 </h2>45 </h2>
46 <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.46 <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.
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
    
Offset 199, 15 lines modifiedOffset 199, 15 lines modified
199 This·MIB·can·be·used·with·any·SNMP·version.</li><li>SNMP-COMMUNITY-MIB,·which·defines·managed·objects·for·coexistence·of·SNMPv1199 This·MIB·can·be·used·with·any·SNMP·version.</li><li>SNMP-COMMUNITY-MIB,·which·defines·managed·objects·for·coexistence·of·SNMPv1
200 and·SNMPv2c·with·SNMPv3.·This·MIB·is·only·useful·if·SNMPv1·or·SNMPv2c·is·used,200 and·SNMPv2c·with·SNMPv3.·This·MIB·is·only·useful·if·SNMPv1·or·SNMPv2c·is·used,
201 possibly·in·combination·with·SNMPv3.</li><li>SNMP-USER-BASED-SM-MIB,·which·defines·managed·objects·for·authentication·and201 possibly·in·combination·with·SNMPv3.</li><li>SNMP-USER-BASED-SM-MIB,·which·defines·managed·objects·for·authentication·and
202 privacy.·This·MIB·is·only·useful·with·SNMPv3.</li></ul><p>All·of·these·MIBs·should·be·loaded·into·the·Master·Agent.·Once·loaded,·these202 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
203 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·them203 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
204 are·provided·in·the·distribution·and·are·placed·in·the·directories·<code·class="inline">mibs</code>,204 are·provided·in·the·distribution·and·are·placed·in·the·directories·<code·class="inline">mibs</code>,
205 <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.xhtml#mib_to_hrl/1"><code·class="inline">snmpc:mib_to_hrl/1</code></a>.·Include·these·files·in205 <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.xhtml#mib_to_hrl/1"><code·class="inline">snmpc:mib_to_hrl/1</code></a>.·Include·these·files·in
206 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="1514074614-1">(</span><span·class="s">&quot;snmp/include/SNMPv2-MIB.hrl&quot;</span><span·class="p"·data-group-id="1514074614-1">)</span><span·class="p">.</span></code></pre><p>The·initial·values·for·the·managed·objects·defined·in·these·tables,·are·read·at206 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="5983605848-1">(</span><span·class="s">&quot;snmp/include/SNMPv2-MIB.hrl&quot;</span><span·class="p"·data-group-id="5983605848-1">)</span><span·class="p">.</span></code></pre><p>The·initial·values·for·the·managed·objects·defined·in·these·tables,·are·read·at
207 start-up·from·a·set·of·configuration·files.·These·are·described·in207 start-up·from·a·set·of·configuration·files.·These·are·described·in
208 <a·href="snmp_config.xhtml">Configuration·Files</a>.</p><h3·id="standard-mib-and-snmpv2-mib"·class="section-heading">208 <a·href="snmp_config.xhtml">Configuration·Files</a>.</p><h3·id="standard-mib-and-snmpv2-mib"·class="section-heading">
209 ··<a·href="#standard-mib-and-snmpv2-mib"·class="hover-link">209 ··<a·href="#standard-mib-and-snmpv2-mib"·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">STANDARD-MIB·and·SNMPv2-MIB</span>212 ··<span·class="text">STANDARD-MIB·and·SNMPv2-MIB</span>
213 </h3>213 </h3>
Offset 360, 17 lines modifiedOffset 360, 17 lines modified
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">Notifications</span>362 ··<span·class="text">Notifications</span>
363 </h2>363 </h2>
364 <p>Notifications·are·defined·in·SMIv1·with·the·TRAP-TYPE·macro·in·the·definition·of364 <p>Notifications·are·defined·in·SMIv1·with·the·TRAP-TYPE·macro·in·the·definition·of
365 an·MIB·(see·RFC1215).·The·corresponding·macro·in·SMIv2·is·NOTIFICATION-TYPE.365 an·MIB·(see·RFC1215).·The·corresponding·macro·in·SMIv2·is·NOTIFICATION-TYPE.
366 When·an·application·decides·to·send·a·notification,·it·calls·one·of·the366 When·an·application·decides·to·send·a·notification,·it·calls·one·of·the
367 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="5792637042-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">367 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="0902624457-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">
368 ·······················</span><span·class="p"·data-group-id="5792637042-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:·4b7bbfaf926022929004f698d49256139614f9170cccca448ce6f4a272d22f0c·...·]-1">)</span><span·class="w">368 ·······················</span><span·class="p"·data-group-id="0902624457-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:·47e40ff5480e126f4cdedaf4500b667fdfafd614fc2835685990bffb9ad140fa·...·]-1">)</span><span·class="w">
369 </span><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">send_trap</span><span·class="p"·data-group-id="5792637042-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:·cab22bc244af106f9359f56d5b8a0c57458ecaa66ab843939b3825f7d377b6e4·...·]-3">)</span></code></pre><p>providing·the·registered·name·or·process·identifier·of·the·agent·where·the·MIB,369 </span><span·class="nc">snmpa</span><span·class="p">:</span><span·class="nf">send_trap</span><span·class="p"·data-group-id="0902624457-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:·d459b71ea2d413e61570c1f2e5dd53d2032f1623ab77524a9225a78fb4fe1703·...·]-3">)</span></code></pre><p>providing·the·registered·name·or·process·identifier·of·the·agent·where·the·MIB,
370 which·defines·the·notification·is·loaded·and·the·symbolic·name·of·the370 which·defines·the·notification·is·loaded·and·the·symbolic·name·of·the
371 notification.</p><p>If·the·<code·class="inline">send_notification/3,4</code>·function·is·used,·all·management·targets·are371 notification.</p><p>If·the·<code·class="inline">send_notification/3,4</code>·function·is·used,·all·management·targets·are
372 selected,·as·defined·in·RFC2273.·The·<code·class="inline">Receiver</code>·parameter·defines·where·the372 selected,·as·defined·in·RFC2273.·The·<code·class="inline">Receiver</code>·parameter·defines·where·the
373 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.373 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.
374 This·parameter·is·used·as·an·index·in·the·<code·class="inline">snmpNotifyTable</code>,·and·the·management374 This·parameter·is·used·as·an·index·in·the·<code·class="inline">snmpNotifyTable</code>,·and·the·management
375 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.375 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.
376 A·<code·class="inline">ContextName</code>·must·be·specified,·from·which·the·notification·will·be·sent.·If376 A·<code·class="inline">ContextName</code>·must·be·specified,·from·which·the·notification·will·be·sent.·If
80.4 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
    
Offset 3074, 16 lines modifiedOffset 3074, 16 lines modified
3074 ······<div·class="specs">3074 ······<div·class="specs">
  
3075 ··········<pre·translate="no"><span·class="attribute">-spec</span>·print_version_info(Prefix)·->·<a·href="#t:void/0">void</a>()·when·Prefix·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>3075 ··········<pre·translate="no"><span·class="attribute">-spec</span>·print_version_info(Prefix)·->·<a·href="#t:void/0">void</a>()·when·Prefix·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>
  
3076 ······</div>3076 ······</div>
  
3077 <p>Utility·function(s)·to·produce·a·formatted·printout·of·the·versions·info3077 <p>Utility·function(s)·to·produce·a·formatted·printout·of·the·versions·info
3078 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"><samp·class="w">···········</samp><samp·class="p"·data-group-id="4346019785-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="4346019785-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">versions1</samp><samp·class="p"·data-group-id="4346019785-2">(</samp><samp·class="p"·data-group-id="4346019785-2">)</samp><samp·class="p">,</samp><samp·class="w"> 
3079 ···········</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">print_versions</samp><samp·class="p"·data-group-id="4346019785-3">(</samp><samp·class="n">V</samp><samp·class="p"·data-group-id="4346019785-3">)</samp><samp·class="p">.<[·...·truncated·by·diffoscope;·len:·18,·SHA:·fb0e7e732bf2a746e32b0fbd8eb22a79ff5077748e091da1f3b1e088f52e1f23·...·]>3078 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"><samp·class="w">···········</samp><samp·class="p"·data-group-id="3965124418-1">{</samp><samp·class="ss[·...·truncated·by·diffoscope;·len:·438,·SHA:·47610f6ca37b394a2ed8d74e17c64037ac0fb7bc29c696f86854c7c107f2c688·...·]>
 3079 ···········</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">print_versions</samp><samp·class="p"·data-group-id="3965124418-3">(</samp><samp·class="n">V</samp><samp·class="p"·data-group-id="3965124418-3">)</samp><samp·class="p">.</samp></code></pre>
3080 ··</section>3080 ··</section>
3081 </section>3081 </section>
3082 <section·class="detail"·id="print_versions/1">3082 <section·class="detail"·id="print_versions/1">
  
3083 ··<div·class="detail-header">3083 ··<div·class="detail-header">
3084 ····<a·href="#print_versions/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3084 ····<a·href="#print_versions/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3085 ······<i·class="ri-link-m"·aria-hidden="true"></i>3085 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 3132, 16 lines modifiedOffset 3132, 16 lines modified
3132 ····························Prefix·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),3132 ····························Prefix·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),
3133 ····························Versions·::·[VersionInfo],3133 ····························Versions·::·[VersionInfo],
3134 ····························VersionInfo·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>().</pre>3134 ····························VersionInfo·::·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:term/0">term</a>().</pre>
  
3135 ······</div>3135 ······</div>
  
3136 <p>Utility·function·to·produce·a·formatted·printout·of·the·versions·info·generated3136 <p>Utility·function·to·produce·a·formatted·printout·of·the·versions·info·generated
3137 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"><samp·class="w">···········</samp><samp·class="p"·data-group-id="4840373659-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="4840373659-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">versions1</samp><samp·class="p"·data-group-id="4840373659-2">(</samp><samp·class="p"·data-group-id="4840373659-2">)</samp><samp·class="p">,</samp><samp·class="w"> 
3138 ···········</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">print_versions</samp><samp·class="p"·data-group-id="4840373659-3">(</samp><samp·class="n">V</samp><samp·class="p"·data-group-id="4840373659-3">)</samp><samp·class="p">.<[·...·truncated·by·diffoscope;·len:·18,·SHA:·fb0e7e732bf2a746e32b0fbd8eb22a79ff5077748e091da1f3b1e088f52e1f23·...·]>3137 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"><samp·class="w">···········</samp><samp·class="p"·data-group-id="2142893301-1">{</samp><samp·[·...·truncated·by·diffoscope;·len:·447,·SHA:·fcd9f4b50fb0616ed28e5584d944117f0997340f545b2a1321052ea8bd613a44·...·]>
 3138 ···········</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">print_versions</samp><samp·class="p"·data-group-id="2142893301-3">(</samp><samp·class="n">V</samp><samp·class="p"·data-group-id="2142893301-3">)</samp><samp·class="p">.</samp></code></pre>
3139 ··</section>3139 ··</section>
3140 </section>3140 </section>
3141 <section·class="detail"·id="read_mib/1">3141 <section·class="detail"·id="read_mib/1">
  
3142 ··<div·class="detail-header">3142 ··<div·class="detail-header">
3143 ····<a·href="#read_mib/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3143 ····<a·href="#read_mib/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3144 ······<i·class="ri-link-m"·aria-hidden="true"></i>3144 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 3261, 25 lines modifiedOffset 3261, 25 lines modified
3261 ·······················TraceOpt·::·{timestamp,·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:boolean/0">boolean</a>()}·|·TargetOpt.</pre>3261 ·······················TraceOpt·::·{timestamp,·<a·href="../../../../lib/../erts/doc/html/erlang.html#t:boolean/0">boolean</a>()}·|·TargetOpt.</pre>
  
3262 ······</div>3262 ······</div>
  
3263 <p>This·function·is·used·to·set·up·trace·on·function(s)·for·the·given·module·or3263 <p>This·function·is·used·to·set·up·trace·on·function(s)·for·the·given·module·or
3264 modules.</p><p>The·example·below·sets·up·trace·on·the·exported·functions·(default)·of·module3264 modules.</p><p>The·example·below·sets·up·trace·on·the·exported·functions·(default)·of·module
3265 <code·class="inline">snmp_generic</code>·and·all·functions·of·module·<code·class="inline">snmp_generic_mnesia</code>.·With·return3265 <code·class="inline">snmp_generic</code>·and·all·functions·of·module·<code·class="inline">snmp_generic_mnesia</code>.·With·return
3266 values·(which·is·default)·and·timestamps·in·both·cases·(which·is·also·default):</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">»    ··</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">enable_trace</samp><samp·class="p"·data-group-id="1659873585-1">(</samp><samp·class="p"·data-group-id="1659873585-1">)</samp><samp·class="p">,</samp><samp·class="w">3266 values·(which·is·default)·and·timestamps·in·both·cases·(which·is·also·default):</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="w">»    ··</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">enable_trace</samp><samp·class="p"·data-group-id="9986162572-1">(</samp><samp·class="p"·data-group-id="9986162572-1">)</samp><samp·class="p">,</samp><samp·class="w">
3267 »       ··</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">set_trace</samp><samp·class="p"·data-group-id="1659873585-2">(</samp><samp·class="p"·data-group-id="1659873585-3">[</samp><samp·class="ss">snmp_generic</samp><samp·class="p">,</samp><samp·class="w">3267 »       ··</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">set_trace</samp><samp·class="p"·data-group-id="9986162572-2">(</samp><samp·class="p"·data-group-id="9986162572-3">[</samp><samp·class="ss">snmp_generic</samp><samp·class="p">,</samp><samp·class="w">
3268 ··························</samp><samp·class="p"·data-group-id="1659873585-4">{</samp><samp·class="ss">snmp_generic_mnesia</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="1659873585-5">[</samp><samp·class="p"·data-group-id="1659873585-6">{</samp><samp·class="ss">scope</samp><samp·cl[·...·truncated·by·diffoscope;·len:·330,·SHA:·297ed9422542ba68a935723b7ba5c36e60fa8d5159f3b61995e06ec92948c8ee·...·]-2">)</samp><samp·class="p">,</samp><samp·class="w">3268 ··························</samp><samp·class="p"·data-group-id="9986162572-4">{</samp><samp·class="ss">snmp_generic_mnesia</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="9986162572-5">[</samp><samp·class="p"·data-group-id="9986162572-6">{</samp><samp·class="ss">scope</samp><samp·cl[·...·truncated·by·diffoscope;·len:·330,·SHA:·df3060d212a7c9fcc4e7ad8ffa597c53793593641a3cd21176ac3779f0e243eb·...·]-2">)</samp><samp·class="p">,</samp><samp·class="w">
3269 »       ··</samp><samp·class="p">.</samp><samp·class="w">3269 »       ··</samp><samp·class="p">.</samp><samp·class="w">
3270 »       ··</samp><samp·class="p">.</samp><samp·class="w">3270 »       ··</samp><samp·class="p">.</samp><samp·class="w">
3271 »       ··</samp><samp·class="p">.</samp><samp·class="w">3271 »       ··</samp><samp·class="p">.</samp><samp·class="w">
3272 ··········</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">set_trace</samp><samp·class="p"·data-group-id="1659873585-7">(</samp><samp·class="ss">snmp_generic</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">disable</samp><samp·class="p"·data-group-id="1659873585-7">)</samp><samp·class="p">,</samp><samp·class="w">3272 ··········</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">set_trace</samp><samp·class="p"·data-group-id="9986162572-7">(</samp><samp·class="ss">snmp_generic</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">disable</samp><samp·class="p"·data-group-id="9986162572-7">)</samp><samp·class="p">,</samp><samp·class="w">
3273 »       ··</samp><samp·class="p">.</samp><samp·class="w">3273 »       ··</samp><samp·class="p">.</samp><samp·class="w">
3274 »       ··</samp><samp·class="p">.</samp><samp·class="w">3274 »       ··</samp><samp·class="p">.</samp><samp·class="w">
3275 »       ··</samp><samp·class="p">.</samp><samp·class="w">3275 »       ··</samp><samp·class="p">.</samp><samp·class="w">
3276 »       ··</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">disable_trace</samp><samp·class="p"·data-group-id="1659873585-8">(</samp><samp·class="p"·data-group-id="1659873585-8">)</samp><samp·class="p">,</samp></code></pre>3276 »       ··</samp><samp·class="nc">snmp</samp><samp·class="p">:</samp><samp·class="nf">disable_trace</samp><samp·class="p"·data-group-id="9986162572-8">(</samp><samp·class="p"·data-group-id="9986162572-8">)</samp><samp·class="p">,</samp></code></pre>
3277 ··</section>3277 ··</section>
3278 </section>3278 </section>
3279 <section·class="detail"·id="start/0">3279 <section·class="detail"·id="start/0">
  
3280 ··<div·class="detail-header">3280 ··<div·class="detail-header">
3281 ····<a·href="#start/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">3281 ····<a·href="#start/0"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
3282 ······<i·class="ri-link-m"·aria-hidden="true"></i>3282 ······<i·class="ri-link-m"·aria-hidden="true"></i>
3.56 KB
OEBPS/content.opf
3.53 KB
OEBPS/content.opf
Max HTML report size reached
10.3 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18.1/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.3/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.3/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="2622050518-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="2622050518-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">versions1</span><span·class="p"·data-group-id="2622050518-2">(</span><span·class="p"·data-group-id="2622050518-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="2622050518-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="2622050518-3">)</span><span·class="p">.<[·...·truncated·by·diffoscope;·len:·18,·SHA:·aa6285803019735a1e142dd0f052e377f4e11767187e5c1060f3bd4bfb9428ac·...·]>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="8669618754-1">{</span><span·class="ss[·...·truncated·by·diffoscope;·len:·438,·SHA:·61a1adcb7e3928cf7f48050143deec83cb2230e499d8bb80a65dc3e96cd24429·...·]>
 3200 ···········</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">print_versions</span><span·class="p"·data-group-id="8669618754-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="8669618754-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.3/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),3253 ····························Prefix·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>()·|·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0">term</a>().</pre>3255 ····························VersionInfo·::·<a·href="../../../../erts-15.2.3/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="4252702670-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="4252702670-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">versions1</span><span·class="p"·data-group-id="4252702670-2">(</span><span·class="p"·data-group-id="4252702670-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="4252702670-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="4252702670-3">)</span><span·class="p">.<[·...·truncated·by·diffoscope;·len:·18,·SHA:·aa6285803019735a1e142dd0f052e377f4e11767187e5c1060f3bd4bfb9428ac·...·]>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="6002054485-1">{</span><span·[·...·truncated·by·diffoscope;·len:·447,·SHA:·d3a04a7ce2c2b63851f04de2d573226596fcc2e79140fbe639a83f137665b930·...·]>
 3259 ···········</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">print_versions</span><span·class="p"·data-group-id="6002054485-3">(</span><span·class="n">V</span><span·class="p"·data-group-id="6002054485-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.3/doc/html/erlang.html#t:boolean/0">boolean</a>()}·|·TargetOpt.</pre>3382 ·······················TraceOpt·::·{timestamp,·<a·href="../../../../erts-15.2.3/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="9979122792-1">(</span><span·class="p"·data-group-id="9979122792-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="5184941157-1">(</span><span·class="p"·data-group-id="5184941157-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="9979122792-2">(</span><span·class="p"·data-group-id="9979122792-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="5184941157-2">(</span><span·class="p"·data-group-id="5184941157-3">[</span><span·class="ss">snmp_generic</span><span·class="p">,</span><span·class="w">
3389 ··························</span><span·class="p"·data-group-id="9979122792-4">{</span><span·class="ss">snmp_generic_mnesia</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9979122792-5">[</span><span·class="p"·data-group-id="9979122792-6">{</span><span·class="ss">scope</span><span·cl[·...·truncated·by·diffoscope;·len:·330,·SHA:·25442e881ad866739641fab332dac115ffa419da862804c298d6d60add6e99ed·...·]-2">)</span><span·class="p">,</span><span·class="w">3389 ··························</span><span·class="p"·data-group-id="5184941157-4">{</span><span·class="ss">snmp_generic_mnesia</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5184941157-5">[</span><span·class="p"·data-group-id="5184941157-6">{</span><span·class="ss">scope</span><span·cl[·...·truncated·by·diffoscope;·len:·330,·SHA:·6421293357cc5eaf707b98fc90acdad1a1d2432ead6adc155f58933f6b483033·...·]-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="9979122792-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="9979122792-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="5184941157-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="5184941157-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="9979122792-8">(</span><span·class="p"·data-group-id="9979122792-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="5184941157-8">(</span><span·class="p"·data-group-id="5184941157-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.1/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="7834106503-1">(</span><span·class="p"·data-group-id="7834106503-2">[</span><span·class="p"·data-group-id="7834106503-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:·41f23b0f4f63f694aab83a5b7bfdaee11f2cbab81333b933db5a544a28703bd0·...·]-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="4833622337-1">(</span><span·class="p"·data-group-id="4833622337-2">[</span><span·class="p"·data-group-id="4833622337-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:·81ce3a1cd5ff52283c4d91c2ce88eb0d9d81cb9760ffc33e1e3776589d97cada·...·]-3">}</span><span·class="p">,</span><span·class="w">
333 ·····················</span><span·class="p"·data-group-id="7834106503-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7834106503-5">[</span><span·class="p"·data-group-id="7834106503-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·e306034be0963f1fb2f33bb9a015b7e5756e4d8954b3223dd1b19f3423acc64c·...·]-4">}</span><span·class="p">,</span><span·class="w">333 ·····················</span><span·class="p"·data-group-id="4833622337-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4833622337-5">[</span><span·class="p"·data-group-id="4833622337-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·d4789ea0ffcf754793897906f621849c9c2bc38a3c4a7aeefb4c6fc086a6a0f1·...·]-4">}</span><span·class="p">,</span><span·class="w">
334 ·····················</span><span·class="p"·data-group-id="7834106503-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7834106503-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:·54ef37043defea3000b825646085a72bbe1c3a71e02b720fc6dbb17e8abaa4d8·...·]-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="4833622337-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4833622337-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:·6843a2bd513236b2f22146a7090ff4ce699f13ca92f0a28cfc7043262fe2bbe6·...·]-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="4539406664-1">(</span><span·class="s">&quot;EmpMIB&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4539406664-2">[</span><span·class="p"·data-group-id="4539406664-3">{</span><span·class="ss">db</span><span·class="[·...·truncated·by·diffoscope;·len:·212,·SHA:·37bbb7c2c882a4ac56250a7c3adfb0acd8850cfc684f20e653014f9b23263b6a·...·]-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="9155023666-1">(</span><span·class="s">&quot;EmpMIB&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9155023666-2">[</span><span·class="p"·data-group-id="9155023666-3">{</span><span·class="ss">db</span><span·class="[·...·truncated·by·diffoscope;·len:·212,·SHA:·e6bd8a0be231b9dd1e079219123d2c8e0ff4faea1508ab887c590fac659f4de3·...·]-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="4484978205-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="4484978205-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="9571781069-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="9571781069-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="4484978205-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="4484978205-2">)</span><span·class="p">,</span><span·class="w">354 ····</span><span·class="nf">notify_internal_resources</span><span·class="p"·data-group-id="9571781069-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="9571781069-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="4484978205-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:·01fef65c30c70a3314335f28af5bb66fad4496fcb6684e4e304ce7802907820e·...·]-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="9571781069-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:·07ad6c7c88cd3c0ca7e30b4b273b784aec9991e04b5a866d4fe043f007620a60·...·]-3">)</span><span·class="p">;</span><span·class="w">
356 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="4484978205-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="4484978205-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="9571781069-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="9571781069-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="4484978205-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:·6abf9e2ad673a3a6c50f318b509e562391d709b967266797cf2280c655314a4d·...·]-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="9571781069-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:·76ac922a49c2ebc93b2fb7e8ab2f7e0b9fbb9ec9b6b7069ea11ca123a910efa6·...·]-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="3339595147-1">(</span><span·class="p"·data-group-id="3339595147-2">[</span><span·class="p"·data-group-id="3339595147-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:·b4d0a0a645af3b0a1a384583f1bdc4a35e069f9a4763a44a90b5994da1850d1f·...·]-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="0588209531-1">(</span><span·class="p"·data-group-id="0588209531-2">[</span><span·class="p"·data-group-id="0588209531-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:·af18b919b97cfe0b98db935abad4e590a30e8410ee1743cc5281b2cfb4cc4dc2·...·]-3">}</span><span·class="p">,</span><span·class="w">
371 ·····················</span><span·class="p"·data-group-id="3339595147-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3339595147-5">[</span><span·class="p"·data-group-id="3339595147-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·a60737143af3c681f95b7d1001d89a8430ff4618c5637cb0ee3227ef52ba9ce8·...·]-4">}</span><span·class="p">,</span><span·class="w">371 ·····················</span><span·class="p"·data-group-id="0588209531-4">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0588209531-5">[</span><span·class="p"·data-group-id="0588209531-6">{</span><span·class="ss">key</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·385,·SHA:·e1e90c130fda506c651b7f50ec4b3dc8968a5c09468a29f3af5ea505069629d1·...·]-4">}</span><span·class="p">,</span><span·class="w">
372 ·····················</span><span·class="p"·data-group-id="3339595147-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3339595147-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:·694492fb0ea3aa49bcc47b7cdfb74937abb5878b41b91dc6bc6a2a7e8509eb4f·...·]-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="0588209531-8">{</span><span·class="ss">attributes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0588209531-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:·ce0c549824aa20e17af834dc29b43d33ca9ac7c71fa0bf2e84f97ffd617f2dfd·...·]-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="9589544577-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="9589544577-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="3808148644-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="3808148644-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="9589544577-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="9589544577-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="3808148644-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="3808148644-2">)</span><span·class="p">.</span><span·class="w">
  
376 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="9589544577-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="9589544577-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="3808148644-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="3808148644-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="9589544577-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="9589544577-4">)</span><span·class="p">,</span><span·class="w">377 ··</span><span·class="nf">notify_internal_resources</span><span·class="p"·data-group-id="3808148644-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="3808148644-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="9589544577-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="9589544577-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="3808148644-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="3808148644-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="9589544577-6">[</span><span·class="p"·data-group-id="9589544577-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="9589544577-7">}</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·33c34f4d6aa63724647a73a444882e38b742c9da7e1c23215be2a7c2eb255ee1·...·]-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="3808148644-6">[</span><span·class="p"·data-group-id="3808148644-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="3808148644-7">}</span><span·class=[·...·truncated·by·diffoscope;·len:·29,·SHA:·729205d280c23605b7d7b346cfcda1dee0c3372c5a501033c49eb033b15b1977·...·]-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="9589544577-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:·f14de459331c348b36e546137bf198caca5df351aea701e63177155cf0aafc5b·...·]-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="3808148644-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:·bbcc6cbaad52043fa21e104ae5b0b36c97341591581adac3010f273e71fd343c·...·]-8">)</span><span·class="p">;</span><span·class="w">
384 </span><span·class="nf">emp_table</span><span·class="p"·data-group-id="9589544577-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="9589544577-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="3808148644-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="3808148644-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="9589544577-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:·5820027234b636cbb86dbdc1c30015214219d0fa53ddb6eedd30ad69e4809789·...·]-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="3808148644-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:·4911340decc27169390fef8e468d37d16ea992aca3dbc2db7622ae686a6a771f·...·]-11">)</span><span·class="p">.</span><span·class="w">
  
386 </span><span·class="nf">is_row_created</span><span·class="p"·data-group-id="9589544577-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="9589544577-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="3808148644-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="3808148644-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="9589544577-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="9589544577-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="3808148644-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="3808148644-14">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
388 ····</span><span·class="p"·data-group-id="9589544577-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="9589544577-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="3808148644-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="3808148644-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="9589544577-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="9589544577-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="3808148644-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="3808148644-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>
80.7 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18.1/doc/html/snmp_agent_config_files.html
    
Offset 146, 38 lines modifiedOffset 146, 38 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="9253044026-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="9253044026-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="6320393442-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="6320393442-1">}</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p"·data-group-id="9253044026-2">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">154 </span><span·class="p"·data-group-id="6320393442-2">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">
155 ·</span><span·class="p"·data-group-id="9253044026-3">[</span><span·class="p"·data-group-id="9253044026-4">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9253044026-5">{</span><span·class="mi">141</span><span·c[·...·truncated·by·diffoscope;·len:·238,·SHA:·b89de40c928057cde2f04ee91b50eace77755cea02d8c68493d3d87e100bc92b·...·]-4">}</span><span·class="p">,</span><span·class="w">155 ·</span><span·class="p"·data-group-id="6320393442-3">[</span><span·class="p"·data-group-id="6320393442-4">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6320393442-5">{</span><span·class="mi">141</span><span·c[·...·truncated·by·diffoscope;·len:·238,·SHA:·75cf8d1065380708c2b62d5ed34e37e36f6f4ea061fb61e41b9690ecabbc18c9·...·]-4">}</span><span·class="p">,</span><span·class="w">
156 ··</span><span·class="p"·data-group-id="9253044026-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9253044026-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·481,·SHA:·2bf4fb54deda15d3038833bf05cc1b976d13a73a753f9e768f0d4817601a6782·...·]-2">}</span><span·class="p">.</span><span·class="w">156 ··</span><span·class="p"·data-group-id="6320393442-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6320393442-7">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·481,·SHA:·bf178230f4cf2adba6f946d2ef4fa7aea85db0c0bbb4d5821aafe76c25c2e5d8·...·]-2">}</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="9253044026-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="9253044026-8">}</span><span·class="p">.</span><span·class="w">157 </span><span·class="p"·data-group-id="6320393442-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="6320393442-8">}</span><span·class="p">.</span><span·class="w">
158 </span><span·class="p"·data-group-id="9253044026-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="9253044026-9">}</span><span·class="p">.</span></code></pre><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">158 </span><span·class="p"·data-group-id="6320393442-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="6320393442-9">}</span><span·class="p">.</span></code></pre><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">
159 </span><span·class="n">AgentPort</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4000</span><span·class="p">,</span><span·class="w">159 </span><span·class="n">AgentPort</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">4000</span><span·class="p">,</span><span·class="w">
160 </span><span·class="n">Transports</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3574583136-1">[</span><span·class="p"·data-group-id="3574583136-2">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3574583136-3">{</span><span·class="mi">141</span><span·c[·...·truncated·by·diffoscope;·len:·238,·SHA:·dd2b445574b8cabbd5064392f72df6336dd10a5eab590584070ec148077d8967·...·]-2">}</span><span·class="p">,</span><span·class="w">160 </span><span·class="n">Transports</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="1175104473-1">[</span><span·class="p"·data-group-id="1175104473-2">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1175104473-3">{</span><span·class="mi">141</span><span·c[·...·truncated·by·diffoscope;·len:·238,·SHA:·051d8fcb61cd3a64993f519b52a32ca7f13d7446cba115031326ee6a354fe970·...·]-2">}</span><span·class="p">,</span><span·class="w">
161 ···············</span><span·class="p"·data-group-id="3574583136-4">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3574583136-5">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·428,·SHA:·8789c188401edf62a5decd2280112ee19b35a02522cc65a26362137a97e630e5·...·]-1">]</span><span·class="p">,</span><span·class="w">161 ···············</span><span·class="p"·data-group-id="1175104473-4">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1175104473-5">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">0</span><span·class="[·...·truncated·by·diffoscope;·len:·428,·SHA:·9e70c24c327d9b40a17676ca380933fbd9a69758429e4855eedb1a9c9cd44f2f·...·]-1">]</span><span·class="p">,</span><span·class="w">
162 </span><span·class="n">EngineID</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;mbj&#39;s·engine&quot;</span><span·class="p">,</span><span·class="w">162 </span><span·class="n">EngineID</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;mbj&#39;s·engine&quot;</span><span·class="p">,</span><span·class="w">
163 </span><span·class="n">MMS</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">484</span><span·class="p">,</span><span·class="w">163 </span><span·class="n">MMS</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">484</span><span·class="p">,</span><span·class="w">
164 </span><span·class="n">AgentConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">164 </span><span·class="n">AgentConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
165 ···</span><span·class="p"·data-group-id="3574583136-6">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">agent_entry</span><span·class="p"·data-group-id="3574583136-7">(</span><span·class="ss">intAgentUDPPort</span><span·class="p">,</span><span·class="w">·········[·...·truncated·by·diffoscope;·len:·81,·SHA:·10064dc3bdadac683090bab7f9fee20145191c34aea012f5637a2acb1076b27c·...·]-7">)</span><span·class="p">,</span><span·class="w">165 ···</span><span·class="p"·data-group-id="1175104473-6">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">agent_entry</span><span·class="p"·data-group-id="1175104473-7">(</span><span·class="ss">intAgentUDPPort</span><span·class="p">,</span><span·class="w">·········[·...·truncated·by·diffoscope;·len:·81,·SHA:·244651988b17abc44be01c53fd794d5ccbc02fc04fa11df4a2659a838d22a1fd·...·]-7">)</span><span·class="p">,</span><span·class="w">
166 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">agent_entry</span><span·class="p"·data-group-id="3574583136-8">(</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">·······</span><span·class="n">Transports</span><span·class="p"·data-group-id="3574583136-8">)</span><span·class="p">,</span><span·class="w">166 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">agent_entry</span><span·class="p"·data-group-id="1175104473-8">(</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">·······</span><span·class="n">Transports</span><span·class="p"·data-group-id="1175104473-8">)</span><span·class="p">,</span><span·class="w">
167 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">agent_entry</span><span·class="p"·data-group-id="3574583136-9">(</span><span·class="ss">snmpEngineID</span><span·class="p">,</span><span·class="w">·············</span><span·class="n">EngineID</span><span·class="p"·data-group-id="3574583136-9">)</span><span·class="p">,</span><span·class="w">167 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">agent_entry</span><span·class="p"·data-group-id="1175104473-9">(</span><span·class="ss">snmpEngineID</span><span·class="p">,</span><span·class="w">·············</span><span·class="n">EngineID</span><span·class="p"·data-group-id="1175104473-9">)</span><span·class="p">,</span><span·class="w">
168 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">agent_entry</span><span·class="p"·data-group-id="3574583136-10">(</span><span·class="ss">snmpEngineMaxMessageSize</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MMS</span><span·class="p"·data-group-id="3574583136-10">)</span><span·class="p"·data-group-id="3574583136-6">]</span><span·class="p">,</span><span·class="w">168 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">agent_entry</span><span·class="p"·data-group-id="1175104473-10">(</span><span·class="ss">snmpEngineMaxMessageSize</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MMS</span><span·class="p"·data-group-id="1175104473-10">)</span><span·class="p"·data-group-id="1175104473-6">]</span><span·class="p">,</span><span·class="w">
169 </span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">write_agent_config</span><span·class="p"·data-group-id="3574583136-11">(</span><span·class="n">AgentDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AgentConfig</span><span·class="p"·data-group-id="3574583136-11">)</span><span·class="p">,</span></code></pre><p>These·are·the·supported·en[·...·truncated·by·diffoscope;·len:·435,·SHA:·75ebb4f100080d8de83a135aa52793b40122a6c965238a803051e4e9ce91a9aa·...·]-1">}</span><span·class="p">.</span><span·class="w">·····················</span><span·class="c1">%·Mandatory</span><span·class="w">169 </span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">write_agent_config</span><span·class="p"·data-group-id="1175104473-11">(</span><span·class="n">AgentDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">AgentConfig</span><span·class="p"·data-group-id="1175104473-11">)</span><span·class="p">,</span></code></pre><p>These·are·the·supported·en[·...·truncated·by·diffoscope;·len:·435,·SHA:·b7e2b42029514a5920ff9174d5b628d5717b206dd1489c09f186d59e5430bddb·...·]-1">}</span><span·class="p">.</span><span·class="w">·····················</span><span·class="c1">%·Mandatory</span><span·class="w">
170 ······</span><span·class="p"·data-group-id="7065287796-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="7[·...·truncated·by·diffoscope;·len:·115,·SHA:·776011d0662a8edbb43263fbe3ba0bcfbecf1d4bd2b241d2bb62e3c9a0b7d486·...·]-3">}</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%·Mandatory</span><span·class="w">170 ······</span><span·class="p"·data-group-id="1094589765-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="1[·...·truncated·by·diffoscope;·len:·115,·SHA:·5adf7675cde9766369c2c379aca5b9f8978c7f3a2b16f12cb8acb7d495a9c7ac·...·]-3">}</span><span·class="p">.</span><span·class="w">··</span><span·class="c1">%·Mandatory</span><span·class="w">
171 ······</span><span·class="p"·data-group-id="7065287796-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="7065287796-6">(</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·3522edc665139209995feb697fbc6a579093dc30c2cf8180511242b21b84feb1·...·]-5">}</span><span·class="p">.</span><span·class="w">······················</span><span·class="c1">%·Optional</span><span·class="w">171 ······</span><span·class="p"·data-group-id="1094589765-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="1094589765-6">(</spa[·...·truncated·by·diffoscope;·len:·96,·SHA:·9f91b0a24ccf9d6fe12957c80b7a896d4c72df689d47f67d5aed832bc1e392e0·...·]-5">}</span><span·class="p">.</span><span·class="w">······················</span><span·class="c1">%·Optional</span><span·class="w">
172 ······</span><span·class="p"·data-group-id="7065287796-7">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="7065287796-8">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">intAgentTr[·...·truncated·by·diffoscope;·len:·214,·SHA:·c6673aea4dbe647d1e3b04846ffb52b1d1d1d06ee0cba29205d349c9947ab4b0·...·]-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>,·handling172 ······</span><span·class="p"·data-group-id="1094589765-7">{</span><span·class="ss">intAgentTransports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="1094589765-8">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">intAgentTr[·...·truncated·by·diffoscope;·len:·214,·SHA:·0fdd67336c884dfbf17471d790d3738359a6a1233f63ac0e555f5f5a9e50f306·...·]-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
173 both·requests·and·traps)·for·a·transport·domain,·its·<em>not</em>·possible·to·also173 both·requests·and·traps)·for·a·transport·domain,·its·<em>not</em>·possible·to·also
174 specify·a·transport·(for·that·domain)·with·a·specific·<code·class="inline">Kind</code>.·This·is·for174 specify·a·transport·(for·that·domain)·with·a·specific·<code·class="inline">Kind</code>.·This·is·for
175 example,·<em>not</em>·allowed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="p"·data-group-id="5056794074-1">[</span><span·class="p"·data-group-id="5056794074-2">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5056794074-3">{</span><span·class="p"·data-group-id="5056[·...·truncated·by·diffoscope;·len:·419,·SHA:·c4c28da7270240f5a9947bc30f25eaf2e8302a070d1845e9e5a98eee0676fef2·...·]-2">}</span><span·class="p">,</span><span·class="w">175 example,·<em>not</em>·allowed:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="w">·</span><span·class="p"·data-group-id="5347701165-1">[</span><span·class="p"·data-group-id="5347701165-2">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5347701165-3">{</span><span·class="p"·data-group-id="5347[·...·truncated·by·diffoscope;·len:·419,·SHA:·38c510e0f75de4e897e5854a2aefbed741e9ddd333c7b436a9c3bce3ac234f9f·...·]-2">}</span><span·class="p">,</span><span·class="w">
176 ··</span><span·class="p"·data-group-id="5056794074-5">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5056794074-6">{</span><span·class="p"·data-group-id="5056794074-7">{</span><span·class="mi">141</span><span·cl[·...·truncated·by·diffoscope;·len:·502,·SHA:·d439f0e899b89fb072b15b7a7366e007d5b045fda280c6db3ba21d20c8d151e9·...·]-1">]</span><span·class="p">.</span></code></pre><p>Note·that·only·one·transport·per·kind·for·each·transport·domain·can·be176 ··</span><span·class="p"·data-group-id="5347701165-5">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5347701165-6">{</span><span·class="p"·data-group-id="5347701165-7">{</span><span·class="mi">141</span><span·cl[·...·truncated·by·diffoscope;·len:·502,·SHA:·5a42ac14b30b64067c37f4182a97576c4a21446def7bcda33aa7309baa547433·...·]-1">]</span><span·class="p">.</span></code></pre><p>Note·that·only·one·transport·per·kind·for·each·transport·domain·can·be
177 configured.</p><p><code·class="inline">PortInfo</code>·<code·class="inline">system</code>·is·used·to·indicate·that·the·'system'·should·choose·(the·way177 configured.</p><p><code·class="inline">PortInfo</code>·<code·class="inline">system</code>·is·used·to·indicate·that·the·'system'·should·choose·(the·way
178 port·number·'0'·(zero)·is·normally·used).·Port·info·'0'·(zero)·cannot·be·used178 port·number·'0'·(zero)·is·normally·used).·Port·info·'0'·(zero)·cannot·be·used
179 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·a179 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
180 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>)180 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>)
181 <em>must</em>·specify·port-info·as·they·ignore·any·value·specified·by181 <em>must</em>·specify·port-info·as·they·ignore·any·value·specified·by
182 <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>·process182 <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
183 <em>and</em>·takes·precedence·(for·that·transport)·if·present.·The·point·is·that·each183 <em>and</em>·takes·precedence·(for·that·transport)·if·present.·The·point·is·that·each
Offset 190, 77 lines modifiedOffset 190, 77 lines modified
190 ··</a>190 ··</a>
191 ··<span·class="text">Contexts</span>191 ··<span·class="text">Contexts</span>
192 </h2>192 </h2>
193 <p>The·context·information·should·be·stored·in·a·file·called·<code·class="inline">context.conf</code>.·The193 <p>The·context·information·should·be·stored·in·a·file·called·<code·class="inline">context.conf</code>.·The
194 default·context·<code·class="inline">&quot;&quot;</code>·need·not·be·present.</p><p>Each·row·defines·a·context·in·the·agent.·This·information·is·used·in·the·table194 default·context·<code·class="inline">&quot;&quot;</code>·need·not·be·present.</p><p>Each·row·defines·a·context·in·the·agent.·This·information·is·used·in·the·table
195 <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>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">195 <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>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">
196 </span><span·class="n">ContextConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">196 </span><span·class="n">ContextConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
197 ···</span><span·class="p"·data-group-id="7946264238-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">context_entry</span><span·class="p"·data-group-id="7946264238-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="7946264238-2">)</span><span·class="p">,</span><span·class="w">197 ···</span><span·class="p"·data-group-id="0489468277-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">context_entry</span><span·class="p"·data-group-id="0489468277-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="0489468277-2">)</span><span·class="p">,</span><span·class="w">
198 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">context_entry</span><span·class="p"·data-group-id="7946264238-3">(</span><span·class="s">&quot;bar&quot;</span><span·class="p"·data-group-id="7946264238-3">)</span><span·class="p"·data-group-id="7946264238-1">]</span><span·class="p">,</span><span·class="w">198 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">context_entry</span><span·class="p"·data-group-id="0489468277-3">(</span><span·class="s">&quot;bar&quot;</span><span·class="p"·data-group-id="0489468277-3">)</span><span·class="p"·data-group-id="0489468277-1">]</span><span·class="p">,</span><span·class="w">
199 </span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">write_context_config</span><span·class="p"·data-group-id="7946264238-4">(</span><span·class="n">AgentDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ContextConfig</span><span·class="p"·data-group-id="7946264238-4">)</span><span·class="p">,</span></code></pre><p><a·href=""·id="system_information"></a></p><h2·id="system-information"·class="section-heading">199 </span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">write_context_config</span><span·class="p"·data-group-id="0489468277-4">(</span><span·class="n">AgentDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ContextConfig</span><span·class="p"·data-group-id="0489468277-4">)</span><span·class="p">,</span></code></pre><p><a·href=""·id="system_information"></a></p><h2·id="system-information"·class="section-heading">
200 ··<a·href="#system-information"·class="hover-link">200 ··<a·href="#system-information"·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">System·Information</span>203 ··<span·class="text">System·Information</span>
204 </h2>204 </h2>
205 <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,·or205 <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
206 <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="6599660724-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="6599660724-1">}</span><span·class="p">.</span><span·class="w">206 <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="4402428740-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="4402428740-1">}</span><span·class="p">.</span><span·class="w">
207 </span><span·class="p"·data-group-id="6599660724-2">{</span><span·class="ss">sysObjectID</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6599660724-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:·758a5948e028a0dd2467812d3b307c4532bcbd8d5dca32d34da00ee658c4924d·...·]-2">}</span><span·class="p">.</span><span·class="w">207 </span><span·class="p"·data-group-id="4402428740-2">{</span><span·class="ss">sysObjectID</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4402428740-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:·51ac29a6464478279d8082228f0781dae9f77750bf2cc55cc44445bc27daeb99·...·]-2">}</span><span·class="p">.</span><span·class="w">
208 </span><span·class="p"·data-group-id="6599660724-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="6599660724-4">}</span><span·class="p">.</span><span·class="w">208 </span><span·class="p"·data-group-id="4402428740-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="4402428740-4">}</span><span·class="p">.</span><span·class="w">
209 </span><span·class="p"·data-group-id="6599660724-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="6599660724-5">}</span><span·class="p">.</span><span·class="w">209 </span><span·class="p"·data-group-id="4402428740-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="4402428740-5">}</span><span·class="p">.</span><span·class="w">
210 </span><span·class="p"·data-group-id="6599660724-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="6599660724-6">}</span><span·class="p">.</span><span·class="w">210 </span><span·class="p"·data-group-id="4402428740-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="4402428740-6">}</span><span·class="p">.</span><span·class="w">
211 </span><span·class="p"·data-group-id="6599660724-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="6599660724-7">}</span><span·class="p">.</span></code></pre><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">211 </span><span·class="p"·data-group-id="4402428740-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="4402428740-7">}</span><span·class="p">.</span></code></pre><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">
212 </span><span·class="n">StdConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">212 </span><span·class="n">StdConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
213 ···</span><span·class="p"·data-group-id="5662752872-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="5662752872-2">(</span><span·class="ss">sysDescr</span><span·class="p">,</span><span·class="w">····</span><s[·...·truncated·by·diffoscope;·len:·91,·SHA:·8a869282c70f30d3f67dd60694695cf384344573c6ff9e080e08d622e04a215a·...·]-2">)</span><span·class="p">,</span><span·class="w">213 ···</span><span·class="p"·data-group-id="2537329175-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="2537329175-2">(</span><span·class="ss">sysDescr</span><span·class="p">,</span><span·class="w">····</span><s[·...·truncated·by·diffoscope;·len:·91,·SHA:·2f23f8f2724d0b64a58adbaf059fb53e90770d52d8209c1f64413019c44096de·...·]-2">)</span><span·class="p">,</span><span·class="w">
214 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="5662752872-3">(</span><span·class="ss">sysObjectID</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5662752872-4">[</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:·38647244f0ed9327df527b200840ad4bb242be0a6e3096df834ae0d812b41496·...·]-3">)</span><span·class="p">,</span><span·class="w">214 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="2537329175-3">(</span><span·class="ss">sysObjectID</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2537329175-4">[</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:·c7823ea836d66054eccc456fe52e22fd45b638e444aa8475e7faa4e0bcba92de·...·]-3">)</span><span·class="p">,</span><span·class="w">
215 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="5662752872-5">(</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="5662752872-5">)</span><span·class="p">,</span><span·class="w">215 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="2537329175-5">(</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="2537329175-5">)</span><span·class="p">,</span><span·class="w">
216 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="5662752872-6">(</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="5662752872-6">)</span><span·class="p">,</span><span·class="w">216 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="2537329175-6">(</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="2537329175-6">)</span><span·class="p">,</span><span·class="w">
217 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="5662752872-7">(</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="5662752872-7">)</span><span·class="p">,</span><span·class="w">217 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="2537329175-7">(</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="2537329175-7">)</span><span·class="p">,</span><span·class="w">
218 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="5662752872-8">(</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="5662752872-8">)</span><span·class="p"·data-group-id="5662752872-1">]</span><span·class="p">,</span><span·class="w">218 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">standard_entry</span><span·class="p"·data-group-id="2537329175-8">(</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="2537329175-8">)</span><span·class="p"·data-group-id="2537329175-1">]</span><span·class="p">,</span><span·class="w">
219 </span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">write_standard_config</span><span·class="p"·data-group-id="5662752872-9">(</span><span·class="n">AgentDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StdConfig</span><span·class="p"·data-group-id="5662752872-9">)</span><span·class="p">,</span></code></pre><p>A·value·must·be·provided·for·all·variables,·which·lack·default·values·in·the219 </span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">write_standard_config</span><span·class="p"·data-group-id="2537329175-9">(</span><span·class="n">AgentDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">StdConfig</span><span·class="p"·data-group-id="2537329175-9">)</span><span·class="p">,</span></code></pre><p>A·value·must·be·provided·for·all·variables,·which·lack·default·values·in·the
220 MIB.</p><p><a·href=""·id="community"></a></p><h2·id="communities"·class="section-heading">220 MIB.</p><p><a·href=""·id="community"></a></p><h2·id="communities"·class="section-heading">
221 ··<a·href="#communities"·class="hover-link">221 ··<a·href="#communities"·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">Communities</span>224 ··<span·class="text">Communities</span>
225 </h2>225 </h2>
226 <p>The·community·information·should·be·stored·in·a·file·called·<code·class="inline">community.conf</code>.·It226 <p>The·community·information·should·be·stored·in·a·file·called·<code·class="inline">community.conf</code>.·It
227 must·be·present·if·the·agent·is·configured·for·SNMPv1·or·SNMPv2c.</p><p>An·SNMP·<em>community</em>·is·a·relationship·between·an·SNMP·agent·and·a·set·of·SNMP227 must·be·present·if·the·agent·is·configured·for·SNMPv1·or·SNMPv2c.</p><p>An·SNMP·<em>community</em>·is·a·relationship·between·an·SNMP·agent·and·a·set·of·SNMP
228 managers·that·defines·authentication,·access·control·and·proxy·characteristics.</p><p>The·corresponding·table·is·<code·class="inline">snmpCommunityTable</code>·in·the·SNMP-COMMUNITY-MIB.</p><p>Each·entry·is·a·term:</p><p><code·class="inline">{CommunityIndex,·CommunityName,·SecurityName,·ContextName,·TransportTag}.</code></p><ul><li><code·class="inline">CommunityIndex</code>·is·a·non-empty·string.</li><li><code·class="inline">CommunityName</code>·is·a·string.</li><li><code·class="inline">SecurityName</code>·is·a·string.</li><li><code·class="inline">ContextName</code>·is·a·string.</li><li><code·class="inline">TransportTag</code>·is·a·string.</li></ul><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">228 managers·that·defines·authentication,·access·control·and·proxy·characteristics.</p><p>The·corresponding·table·is·<code·class="inline">snmpCommunityTable</code>·in·the·SNMP-COMMUNITY-MIB.</p><p>Each·entry·is·a·term:</p><p><code·class="inline">{CommunityIndex,·CommunityName,·SecurityName,·ContextName,·TransportTag}.</code></p><ul><li><code·class="inline">CommunityIndex</code>·is·a·non-empty·string.</li><li><code·class="inline">CommunityName</code>·is·a·string.</li><li><code·class="inline">SecurityName</code>·is·a·string.</li><li><code·class="inline">ContextName</code>·is·a·string.</li><li><code·class="inline">TransportTag</code>·is·a·string.</li></ul><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">········</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">
229 </span><span·class="n">CommunityConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">229 </span><span·class="n">CommunityConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
230 ···</span><span·class="p"·data-group-id="6952271536-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">community_entry</span><span·class="p"·data-group-id="6952271536-2">(</span><span·class="s">&quot;public&quot;</span><span·class="p"·data-group-id="6952271536-2">)</span><span·class="p">,</span><span·class="w">230 ···</span><span·class="p"·data-group-id="4780390897-1">[</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">community_entry</span><span·class="p"·data-group-id="4780390897-2">(</span><span·class="s">&quot;public&quot;</span><span·class="p"·data-group-id="4780390897-2">)</span><span·class="p">,</span><span·class="w">
231 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">community_entry</span><span·class="p"·data-group-id="6952271536-3">(</span><span·class="s">&quot;all-rights&quot;</span><span·class="p"·data-group-id="6952271536-3">)</span><span·class="p">,</span><span·class="w">231 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">community_entry</span><span·class="p"·data-group-id="4780390897-3">(</span><span·class="s">&quot;all-rights&quot;</span><span·class="p"·data-group-id="4780390897-3">)</span><span·class="p">,</span><span·class="w">
232 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">community_entry</span><span·class="p"·data-group-id="6952271536-4">(</span><span·class="s">&quot;standard·trap&quot;</span><span·class="p">,</span><span·class="w">232 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">community_entry</span><span·class="p"·data-group-id="4780390897-4">(</span><span·class="s">&quot;standard·trap&quot;</span><span·class="p">,</span><span·class="w">
233 ·······························</span><span·class="s">&quot;standard·trap&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;initial&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p"·data-group-id="6952271536-4">)</span><span·class="p"·data-group-id="6952271536-1">]</span><span·class="p">,</span><span·class="w">233 ·······························</span><span·class="s">&quot;standard·trap&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;initial&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p"·data-group-id="4780390897-4">)</span><span·class="p"·data-group-id="4780390897-1">]</span><span·class="p">,</span><span·class="w">
234 </span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">write_community_config</span><span·class="p"·data-group-id="6952271536-5">(</span><span·class="n">AgentDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CommunityConfig</span><span·class="p"·data-group-id="6952271536-5">)</span><span·class="p">,</span></code></pre><p><a·href=""·id="vacm"></a></p><h2·id="mib-views-for-vacm"·class="section-heading">234 </span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">write_community_config</span><span·class="p"·data-group-id="4780390897-5">(</span><span·class="n">AgentDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">CommunityConfig</span><span·class="p"·data-group-id="4780390897-5">)</span><span·class="p">,</span></code></pre><p><a·href=""·id="vacm"></a></p><h2·id="mib-views-for-vacm"·class="section-heading">
235 ··<a·href="#mib-views-for-vacm"·class="hover-link">235 ··<a·href="#mib-views-for-vacm"·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">MIB·Views·for·VACM</span>238 ··<span·class="text">MIB·Views·for·VACM</span>
239 </h2>239 </h2>
240 <p>The·information·about·MIB·Views·for·VACM·should·be·stored·in·a·file·called240 <p>The·information·about·MIB·Views·for·VACM·should·be·stored·in·a·file·called
241 <code·class="inline">vacm.conf</code>.</p><p>The·corresponding·tables·are·<code·class="inline">vacmSecurityToGroupTable</code>,·<code·class="inline">vacmAccessTable</code>·and241 <code·class="inline">vacm.conf</code>.</p><p>The·corresponding·tables·are·<code·class="inline">vacmSecurityToGroupTable</code>,·<code·class="inline">vacmAccessTable</code>·and
242 <code·class="inline">vacmViewTreeFamilyTable</code>·in·the·SNMP-VIEW-BASED-ACM-MIB.</p><p>Each·entry·is·one·of·the·terms,·one·entry·corresponds·to·one·row·in·one·of·the242 <code·class="inline">vacmViewTreeFamilyTable</code>·in·the·SNMP-VIEW-BASED-ACM-MIB.</p><p>Each·entry·is·one·of·the·terms,·one·entry·corresponds·to·one·row·in·one·of·the
243 tables.</p><p><code·class="inline">{vacmSecurityToGroup,·SecModel,·SecName,·GroupName}.</code></p><p><code·class="inline">{vacmAccess,·GroupName,·Prefix,·SecModel,·SecLevel,·Match,·ReadView,·WriteView,·NotifyView}.</code></p><p><code·class="inline">{vacmViewTreeFamily,·ViewIndex,·ViewSubtree,·ViewStatus,·ViewMask}.</code></p><ul><li><code·class="inline">SecModel</code>·is·<code·class="inline">any</code>,·<code·class="inline">v1</code>,·<code·class="inline">v2c</code>,·or·<code·class="inline">usm</code>.</li><li><code·class="inline">SecName</code>·is·a·string.</li><li><code·class="inline">GroupName</code>·is·a·string.</li><li><code·class="inline">Prefix</code>·is·a·string.</li><li><code·class="inline">SecLevel</code>·is·<code·class="inline">noAuthNoPriv</code>,·<code·class="inline">authNoPriv</code>,·or·<code·class="inline">authPriv</code></li><li><code·class="inline">Match</code>·is·<code·class="inline">prefix</code>·or·<code·class="inline">exact</code>.</li><li><code·class="inline">ReadView</code>·is·a·string.</li><li><code·class="inline">WriteView</code>·is·a·string.</li><li><code·class="inline">NotifyView</code>·is·a·string.</li><li><code·class="inline">ViewIndex</code>·is·an·integer.</li><li><code·class="inline">ViewSubtree</code>·is·a·list·of·integer.</li><li><code·class="inline">ViewStatus</code>·is·either·<code·class="inline">included</code>·or·<code·class="inline">excluded</code></li><li><code·class="inline">ViewMask</code>·is·either·<code·class="inline">null</code>·or·a·list·of·ones·and·zeros.·Ones·nominate·that·an243 tables.</p><p><code·class="inline">{vacmSecurityToGroup,·SecModel,·SecName,·GroupName}.</code></p><p><code·class="inline">{vacmAccess,·GroupName,·Prefix,·SecModel,·SecLevel,·Match,·ReadView,·WriteView,·NotifyView}.</code></p><p><code·class="inline">{vacmViewTreeFamily,·ViewIndex,·ViewSubtree,·ViewStatus,·ViewMask}.</code></p><ul><li><code·class="inline">SecModel</code>·is·<code·class="inline">any</code>,·<code·class="inline">v1</code>,·<code·class="inline">v2c</code>,·or·<code·class="inline">usm</code>.</li><li><code·class="inline">SecName</code>·is·a·string.</li><li><code·class="inline">GroupName</code>·is·a·string.</li><li><code·class="inline">Prefix</code>·is·a·string.</li><li><code·class="inline">SecLevel</code>·is·<code·class="inline">noAuthNoPriv</code>,·<code·class="inline">authNoPriv</code>,·or·<code·class="inline">authPriv</code></li><li><code·class="inline">Match</code>·is·<code·class="inline">prefix</code>·or·<code·class="inline">exact</code>.</li><li><code·class="inline">ReadView</code>·is·a·string.</li><li><code·class="inline">WriteView</code>·is·a·string.</li><li><code·class="inline">NotifyView</code>·is·a·string.</li><li><code·class="inline">ViewIndex</code>·is·an·integer.</li><li><code·class="inline">ViewSubtree</code>·is·a·list·of·integer.</li><li><code·class="inline">ViewStatus</code>·is·either·<code·class="inline">included</code>·or·<code·class="inline">excluded</code></li><li><code·class="inline">ViewMask</code>·is·either·<code·class="inline">null</code>·or·a·list·of·ones·and·zeros.·Ones·nominate·that·an
244 exact·match·is·used·for·this·sub-identifier.·Zeros·are·wild-cards·which·match244 exact·match·is·used·for·this·sub-identifier.·Zeros·are·wild-cards·which·match
245 any·sub-identifier.·If·the·mask·is·shorter·than·the·sub-tree,·the·tail·is245 any·sub-identifier.·If·the·mask·is·shorter·than·the·sub-tree,·the·tail·is
246 regarded·as·all·ones.·<code·class="inline">null</code>·is·shorthand·for·a·mask·with·all·ones.</li></ul><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">246 regarded·as·all·ones.·<code·class="inline">null</code>·is·shorthand·for·a·mask·with·all·ones.</li></ul><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">
247 </span><span·class="n">SecName</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;plain&quot;</span><span·class="p">,</span><span·class="w">247 </span><span·class="n">SecName</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;plain&quot;</span><span·class="p">,</span><span·class="w">
248 </span><span·class="n">VacmConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">248 </span><span·class="n">VacmConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
249 ···</span><span·class="p"·data-group-id="5992027864-1">[</span><span·class="c1">%%························SecModel,·SecName,·GroupName</span><span·class="w">249 ···</span><span·class="p"·data-group-id="3580114267-1">[</span><span·class="c1">%%························SecModel,·SecName,·GroupName</span><span·class="w">
250 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">vacm_s2g_entry</span><span·class="p"·data-group-id="5992027864-2">(</span><span·class="ss">usm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecName</span><span·class="p"·data-group-id="5992027864-2">)</span><span·class="p">,</span><span·class="w">250 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">vacm_s2g_entry</span><span·class="p"·data-group-id="3580114267-2">(</span><span·class="ss">usm</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecName</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SecName</span><span·class="p"·data-group-id="3580114267-2">)</span><span·class="p">,</span><span·class="w">
  
251 ····</span><span·class="c1">%%························GroupName,·Prefix,·SecModel,</span><span·class="w">251 ····</span><span·class="c1">%%························GroupName,·Prefix,·SecModel,</span><span·class="w">
252 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">vacm_acc_entry</span><span·class="p"·data-group-id="5992027864-3">(</span><span·class="n">SecName</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">any</span><span·class="p">,</span><span·class="w">252 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">vacm_acc_entry</span><span·class="p"·data-group-id="3580114267-3">(</span><span·class="n">SecName</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">any</span><span·class="p">,</span><span·class="w">
253 ····</span><span·class="c1">%%························SecLevel,·Match,·RV,·WV,·NV</span><span·class="w">253 ····</span><span·class="c1">%%························SecLevel,·Match,·RV,·WV,·NV</span><span·class="w">
254 ······························</span><span·class="ss">noAuthNoPriv</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">exact</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;all&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;all&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;all&quot;</span><span·class="p"·data-group-id="5992027864-3">)</span><span·class="p">,</span><span·class="w">254 ······························</span><span·class="ss">noAuthNoPriv</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">exact</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;all&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;all&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;all&quot;</span><span·class="p"·data-group-id="3580114267-3">)</span><span·class="p">,</span><span·class="w">
  
255 ····</span><span·class="c1">%%························ViewName,·ViewSubtree,·ViewType,·ViewMask</span><span·class="w">255 ····</span><span·class="c1">%%························ViewName,·ViewSubtree,·ViewType,·ViewMask</span><span·class="w">
256 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">vacm_vtf_entry</span><span·class="p"·data-group-id="5992027864-4">(</span><span·class="s">&quot;restricted&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5992027864-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p[·...·truncated·by·diffoscope;·len:·387,·SHA:·3967c09ddb79572c2f32c71a056a4338bda641430cf376bde02ad8da8111e0de·...·]-1">]</span><span·class="p">,</span><span·class="w">256 ····</span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">vacm_vtf_entry</span><span·class="p"·data-group-id="3580114267-4">(</span><span·class="s">&quot;restricted&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3580114267-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">3</span><span·class="p[·...·truncated·by·diffoscope;·len:·387,·SHA:·4f278f27e0ab4845b25983113184043ab8419c4c6c189882c5839261279a5ea4·...·]-1">]</span><span·class="p">,</span><span·class="w">
257 </span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">write_vacm_config</span><span·class="p"·data-group-id="5992027864-6">(</span><span·class="n">AgentDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">VacmConfig</span><span·class="p"·data-group-id="5992027864-6">)</span><span·class="p">,</span></code></pre><p><a·href=""·id="usm"></a></p><h2·id="security-data-for-usm"·class="section-heading">257 </span><span·class="nc">snmpa_conf</span><span·class="p">:</span><span·class="nf">write_vacm_config</span><span·class="p"·data-group-id="3580114267-6">(</span><span·class="n">AgentDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">VacmConfig</span><span·class="p"·data-group-id="3580114267-6">)</span><span·class="p">,</span></code></pre><p><a·href=""·id="usm"></a></p><h2·id="security-data-for-usm"·class="section-heading">
258 ··<a·href="#security-data-for-usm"·class="hover-link">258 ··<a·href="#security-data-for-usm"·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">Security·data·for·USM</span>261 ··<span·class="text">Security·data·for·USM</span>
262 </h2>262 </h2>
263 <p>The·information·about·Security·data·for·USM·should·be·stored·in·a·file·called263 <p>The·information·about·Security·data·for·USM·should·be·stored·in·a·file·called
264 <code·class="inline">usm.conf</code>,·which·must·be·present·if·the·agent·is·configured·for·SNMPv3.</p><p>The·corresponding·table·is·<code·class="inline">usmUserTable</code>·in·the·SNMP-USER-BASED-SM-MIB264 <code·class="inline">usm.conf</code>,·which·must·be·present·if·the·agent·is·configured·for·SNMPv3.</p><p>The·corresponding·table·is·<code·class="inline">usmUserTable</code>·in·the·SNMP-USER-BASED-SM-MIB
Offset 271, 43 lines modifiedOffset 271, 43 lines modified
271 <code·class="inline">usmAesCfb128Protocol</code>.</p></li><li><p><code·class="inline">PrivKeyC</code>·is·a·string.</p></li><li><p><code·class="inline">OwnPrivKeyC</code>·is·a·string.</p></li><li><p><code·class="inline">Public</code>·is·a·string.</p></li><li><p><code·class="inline">AuthKey</code>·is·a·list·(of·integer).·This·is·the·User's·secret·localized271 <code·class="inline">usmAesCfb128Protocol</code>.</p></li><li><p><code·class="inline">PrivKeyC</code>·is·a·string.</p></li><li><p><code·class="inline">OwnPrivKeyC</code>·is·a·string.</p></li><li><p><code·class="inline">Public</code>·is·a·string.</p></li><li><p><code·class="inline">AuthKey</code>·is·a·list·(of·integer).·This·is·the·User's·secret·localized
272 authentication·key.·It·is·not·visible·in·the·MIB.·The·length·(number·of272 authentication·key.·It·is·not·visible·in·the·MIB.·The·length·(number·of
273 octets)·of·this·key·needs·to·be:</p><ul><li>16·if·<code·class="inline">usmHMACMD5AuthProtocol</code>.</li><li>20·if·<code·class="inline">usmHMACSHAAuthProtocol</code>.</li><li>28·if·<code·class="inline">usmHMAC128SHA224AuthProtocol</code>.</li><li>32·if·<code·class="inline">usmHMAC192SHA256AuthProtocol</code>.</li><li>48·if·<code·class="inline">usmHMAC256SHA384AuthProtocol</code>.</li><li>64·if·<code·class="inline">usmHMAC384SHA512AuthProtocol</code>.</li></ul></li><li><p><code·class="inline">PrivKey</code>·is·a·list·(of·integer).·This·is·the·User's·secret·localized273 octets)·of·this·key·needs·to·be:</p><ul><li>16·if·<code·class="inline">usmHMACMD5AuthProtocol</code>.</li><li>20·if·<code·class="inline">usmHMACSHAAuthProtocol</code>.</li><li>28·if·<code·class="inline">usmHMAC128SHA224AuthProtocol</code>.</li><li>32·if·<code·class="inline">usmHMAC192SHA256AuthProtocol</code>.</li><li>48·if·<code·class="inline">usmHMAC256SHA384AuthProtocol</code>.</li><li>64·if·<code·class="inline">usmHMAC384SHA512AuthProtocol</code>.</li></ul></li><li><p><code·class="inline">PrivKey</code>·is·a·list·(of·integer).·This·is·the·User's·secret·localized
274 encryption·key.·It·is·not·visible·in·the·MIB.·The·length·of·this·key·needs·to274 encryption·key.·It·is·not·visible·in·the·MIB.·The·length·of·this·key·needs·to
275 be·16·if·<code·class="inline">usmDESPrivProtocol</code>·or·<code·class="inline">usmAesCfb128Protocol</code>·is·used.</p></li></ul><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">275 be·16·if·<code·class="inline">usmDESPrivProtocol</code>·or·<code·class="inline">usmAesCfb128Protocol</code>·is·used.</p></li></ul><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">AgentDir</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">
276 </span><span·class="n">EngineID</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;plain·engine&quot;</span><span·class="w">276 </span><span·class="n">EngineID</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;plain·engine&quot;</span><span·class="w">
277 </span><span·class="n">Passwd</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;FooBar·Hoopla&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%%·This·should·*obviously*·be·choosen·better</span><span·class="w">277 </span><span·class="n">Passwd</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;FooBar·Hoopla&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="c1">%%·This·should·*obviously*·be·choosen·better</span><span·class="w">
278 </span><span·class="n">Secret16</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">passwd2localized_key</span><span·class="p"·data-group-id="0591998536-1">(</span><span·class="nb">md5</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Passwd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EngineID</span><span·class="p"·data-group-id="0591998536-1">)</span><span·class="p">,</span><span·class="w">278 </span><span·class="n">Secret16</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">passwd2localized_key</span><span·class="p"·data-group-id="2346136175-1">(</span><span·class="nb">md5</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Passwd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EngineID</span><span·class="p"·data-group-id="2346136175-1">)</span><span·class="p">,</span><span·class="w">
279 </span><span·class="n">Secret20</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">passwd2localized_key</span><span·class="p"·data-group-id="0591998536-2">(</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Passwd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EngineID</span><span·class="p"·data-group-id="0591998536-2">)</span><span·class="p">,</span><span·class="w">279 </span><span·class="n">Secret20</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">snmp</span><span·class="p">:</span><span·class="nf">passwd2localized_key</span><span·class="p"·data-group-id="2346136175-2">(</span><span·class="ss">sha</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Passwd</span><span·class="p">,</span><span·class="w">·</span><span·class="n">EngineID</span><span·class="p"·data-group-id="2346136175-2">)</span><span·class="p">,</span><span·class="w">
280 </span><span·class="n">UsmConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">280 </span><span·class="n">UsmConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">
Max diff block lines reached; 23620/82456 bytes (28.65%) of diff not shown.
6.86 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18.1/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="7925467475-1">(</span><span·class="s">&quot;snmp/include/SNMPv2-MIB.hrl&quot;</span><span·class="p"·data-group-id="7925467475-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="7916459481-1">(</span><span·class="s">&quot;snmp/include/SNMPv2-MIB.hrl&quot;</span><span·class="p"·data-group-id="7916459481-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="0149576226-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="4548112258-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="0149576226-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:·0bf533bb08add64f44e0ce7f7c1d7ea107ed9d958a6afc0c81dc5fc1dd6b47c7·...·]-1">)</span><span·class="w">473 ·······················</span><span·class="p"·data-group-id="4548112258-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:·64b24e0d4b6df5d3ec065a3cd23a731a7bd52a0c7df2864bc7270fee013114eb·...·]-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="0149576226-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:·910b813aa26f77b294b9d02ea79262d8b78d6eb49967b3f6b92432d4d32873f8·...·]-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="4548112258-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:·3d93163fdf58087444433877d5e6cd3a0876f7a0564dc36e05916ef7f9df60e9·...·]-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.1/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="9619587423-1">[</span><span·class="p"·data-group-id="9619587423-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="5458237786-1">[</span><span·class="p"·data-group-id="5458237786-2">{</span><span·class="ss">snmp</span><span·class="p">,</span><span·class="w">
144 ········</span><span·class="p"·data-group-id="9619587423-3">[</span><span·class="p"·data-group-id="9619587423-4">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9619587423-5">[</span><span·class="p"·data-group-id="9619587423-6">{</spa[·...·truncated·by·diffoscope;·len:·174,·SHA:·6b1eef9ad3c317c18fa08712fa64969dd486a5559e67c66380e786ca3c3db71a·...·]-6">}</span><span·class="p">,</span><span·class="w">144 ········</span><span·class="p"·data-group-id="5458237786-3">[</span><span·class="p"·data-group-id="5458237786-4">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5458237786-5">[</span><span·class="p"·data-group-id="5458237786-6">{</spa[·...·truncated·by·diffoscope;·len:·174,·SHA:·37f3d015a25d1dbfe3b8517ab4fb76582f1e4b84b4c0976234019a445f19c486·...·]-6">}</span><span·class="p">,</span><span·class="w">
145 ··················</span><span·class="p"·data-group-id="9619587423-7">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9619587423-8">[</span><span·class="p"·data-group-id="9619587423-9">{</span><span·class="ss">dir</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·333,·SHA:·48ff34737ad581431540032ea274d7a6ae02bc359649a3cd1dd7d8f2b18ea7f2·...·]-4">}</span><span·class="p">,</span><span·class="w">145 ··················</span><span·class="p"·data-group-id="5458237786-7">{</span><span·class="ss">config</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5458237786-8">[</span><span·class="p"·data-group-id="5458237786-9">{</span><span·class="ss">dir</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·333,·SHA:·0ce9a2ff92aafecf286575c85bedced2d431e38834e3334cc651f8b6ca5abf92·...·]-4">}</span><span·class="p">,</span><span·class="w">
146 ·········</span><span·class="p"·data-group-id="9619587423-10">{</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9619587423-11">[</span><span·class="p"·data-group-id="9619587423-12">{</span><span·class="ss">config</span><span·class="p">[·...·truncated·by·diffoscope;·len:·313,·SHA:·b7e48929b9a4e7afd9e3728e09cc88f99f29b6dee6b2f2d28465f004f3dd7520·...·]-14">}</span><span·class="p">,</span><span·class="w">146 ·········</span><span·class="p"·data-group-id="5458237786-10">{</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5458237786-11">[</span><span·class="p"·data-group-id="5458237786-12">{</span><span·class="ss">config</span><span·class="p">[·...·truncated·by·diffoscope;·len:·313,·SHA:·3dc3e5d73e1672333b1a78cf3a7aa432071d356060b1847732dc3d151c3f1d4c·...·]-14">}</span><span·class="p">,</span><span·class="w">
147 ······························</span><span·class="p"·data-group-id="9619587423-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="9619587423-15">}</span><span·class="p"·data-group-id="9619587423-13">[·...·truncated·by·diffoscope;·len:·264,·SHA:·a683eb39dfc6e4d1a031d3eb2baa50c2c01f166e2229ea56efb76a31680a175b·...·]-2">}</span><span·class="w">147 ······························</span><span·class="p"·data-group-id="5458237786-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="5458237786-15">}</span><span·class="p"·data-group-id="5458237786-13">[·...·truncated·by·diffoscope;·len:·264,·SHA:·e6488f89ccc19bc710fcfaa92959a49f05abae41ac0e6493dc3f7bbb7dce1cb0·...·]-2">}</span><span·class="w">
148 ········</span><span·class="p"·data-group-id="9619587423-1">]</span><span·class="w">148 ········</span><span·class="p"·data-group-id="5458237786-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="0306720617-1">(</span><span·class="p"·data-group-id="0306720617-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="0306720617-2">[</span><span·class="nf">snmp_component_config</span><span·class="p"·data-group-id="0306720617-3">(</span><span·class="p"·data-group-id="0306720617-3">)</span><span·class="p"·data-group-id="0306720617-2">]</span><span·class="w"> 
152 ······</span><span·class="nf">snmp_component_config</span><span·class="p"·data-group-id="0306720617-4">(</span><span·class="p"·data-group-id="0306720617-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·705,·SHA:·7edfdb26f270c7305f83930ba0f3fdc8aa390419aa3c8d5ab095ce44c9f3c743·...·]</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="5969950801-1">(</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·351,·SHA:·bb9f41a9143ee5c96b0d2ec4d06b98b29be4d51717e54c64b8183478c71a1a6e·...·]</span><span·class="w">
 152 ······</span><span·class="nf">snmp_component_config</span><span·class="p"·data-group-id="5969950801-4">(</span><span·class="p"·data-group-id="5969950801-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="5969950801-5">{</span><span·class="ss">agent</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">agent_options</span><span·class="p"·data-group-id="5969950801-6">(</span><span·class="p"·data-group-id="5969950801-6">)</span><span·class="p"·data-group-id="5969950801-5">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="p"·data-group-id="5969950801-7">{</span><span·class="ss">manager</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="5969950801-8">(</span><span·class="p"·data-group-id="5969950801-8">)</span><span·class="p"·data-group-id="5969950801-7">}</span><span·class="w">
153 ······</span><span·class="nf">agent_options</span><span·class="p"·data-group-id="0306720617-9">(</span><span·class="p"·data-group-id="0306720617-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0306720617-10">[</span><span·class="nf">agent_option</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·5043f6653b3b94104a6d67d04e84e1a10624d3d766701d17cb2126a026b9c19d·...·]-10">]</span><span·class="w">153 ······</span><span·class="nf">agent_options</span><span·class="p"·data-group-id="5969950801-9">(</span><span·class="p"·data-group-id="5969950801-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5969950801-10">[</span><span·class="nf">agent_option</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·130,·SHA:·9d807c8593e4edee115bf95a9cc3ee556679f318ab9911f524c6c7e0ebf92b79·...·]-10">]</span><span·class="w">
154 ······</span><span·class="nf">agent_option</span><span·class="p"·data-group-id="0306720617-12">(</span><span·class="p"·data-group-id="0306720617-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0306720617-13">{</span><span·class="ss">restart_type</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·220,·SHA:·53441d59787152e46c690fc47819102fd894d2dfd6f38eb3162b5240c09c5c50·...·]-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="5969950801-12">(</span><span·class="p"·data-group-id="5969950801-12">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5969950801-13">{</span><span·class="ss">restart_type</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·220,·SHA:·b24acac9c8c5e38e979dba981cf1eb601f001489ebd55a5bd9a67b7c978e0020·...·]-13">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
155 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-16">(</span><span·class="p"·data-group-id="0306720617-16">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·976abb071077bbb3239caf3157a65c5befeb6fcff17598a6572b639dfc8dcdd1·...·]-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">155 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-16">(</span><span·class="p"·data-group-id="5969950801-16">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·263466134c83202c35a2d49d5aabe031ab12b436fd51a25b7ec094dc65d378a5·...·]-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
156 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-18">(</span><span·class="p"·data-group-id="0306720617-18">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·a8a16e8ac3848b2373db34f7a055af9794305b462eac9a5fbe5dc3260743d621·...·]-17">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">156 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-18">(</span><span·class="p"·data-group-id="5969950801-18">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·b74b1f2238ff8aacdff227371c9bc32942decbb03166691ac38fa5c150339cdc·...·]-17">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
157 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-20">(</span><span·class="p"·data-group-id="0306720617-20">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·ae037880a3240629ff272505e7dd6b321652d82246a4374967c7bc8c58312847·...·]-19">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">157 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-20">(</span><span·class="p"·data-group-id="5969950801-20">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·873a66b72245cba8fa631942dbb693ad3b6000da01aa24a468f6ec8f713588ef·...·]-19">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
158 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-22">(</span><span·class="p"·data-group-id="0306720617-22">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·0a3d459e964cc8cff28a7614e3b2899cb5de06f45cf87cbeb24a1bc955841be2·...·]-21">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">158 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-22">(</span><span·class="p"·data-group-id="5969950801-22">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·694d0f2103e7abe5118bb7a36af6c5aeac0adc2e28e00b8f3bd9fa5ab0b2183d·...·]-21">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
159 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-24">(</span><span·class="p"·data-group-id="0306720617-24">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·976abb071077bbb3239caf3157a65c5befeb6fcff17598a6572b639dfc8dcdd1·...·]-23">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">159 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-24">(</span><span·class="p"·data-group-id="5969950801-24">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·263466134c83202c35a2d49d5aabe031ab12b436fd51a25b7ec094dc65d378a5·...·]-23">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
160 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-26">(</span><span·class="p"·data-group-id="0306720617-26">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·0a3d459e964cc8cff28a7614e3b2899cb5de06f45cf87cbeb24a1bc955841be2·...·]-25">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">160 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-26">(</span><span·class="p"·data-group-id="5969950801-26">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·694d0f2103e7abe5118bb7a36af6c5aeac0adc2e28e00b8f3bd9fa5ab0b2183d·...·]-25">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
161 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-28">(</span><span·class="p"·data-group-id="0306720617-28">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·4266961b4c21cf3d460afe7621cd4fabc3b58c9593dc8ceaf3a970e4750022dd·...·]-27">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">161 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-28">(</span><span·class="p"·data-group-id="5969950801-28">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·a331d05d280f624eca1bfe84f3c4aa3f18f7ec7ce5dc3a05d57af81e690e044f·...·]-27">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
162 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-30">(</span><span·class="p"·data-group-id="0306720617-30">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·0f476b17139361bd233004a9a4b66104b9d61d6ebbace29781e51157b2155e5c·...·]-29">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">162 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-30">(</span><span·class="p"·data-group-id="5969950801-30">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·2d377160623ad42c4876f69853f95524f81ab3f1691e715d3a585257a50ec3a5·...·]-29">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">
163 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-32">(</span><span·class="p"·data-group-id="0306720617-32">)</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·510751253cb5aa2ee808beb6a46942b7e078f9119b7634878b3b0373f6a072d6·...·]-31">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">163 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-32">(</span><span·class="p"·data-group-id="5969950801-32">)</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·91b5f535d17c9930c53238c5810471d74cb3e5c30ab88abc409aac2ae6ce2c3b·...·]-31">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
164 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-34">(</span><span·class="p"·data-group-id="0306720617-34">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·0a3d459e964cc8cff28a7614e3b2899cb5de06f45cf87cbeb24a1bc955841be2·...·]-33">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">164 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-34">(</span><span·class="p"·data-group-id="5969950801-34">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·694d0f2103e7abe5118bb7a36af6c5aeac0adc2e28e00b8f3bd9fa5ab0b2183d·...·]-33">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
165 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-36">(</span><span·class="p"·data-group-id="0306720617-36">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·ac99c7923c9e1994da6ee89d28e02f0eb9cb22edb06635b6fb1654af0ba78986·...·]-35">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">165 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-36">(</span><span·class="p"·data-group-id="5969950801-36">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·bb5f0597bc1d58ddd762b12e2edfcb22416068815cd4ad999558755190e19658·...·]-35">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
166 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-38">(</span><span·class="p"·data-group-id="0306720617-38">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·5002743ef8c2360e50d05ea2c99dcdef38351fc0e59ec95b8db90c6cf8ed4633·...·]-37">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">166 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-38">(</span><span·class="p"·data-group-id="5969950801-38">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·60f3c0b65989c73c5dd19110bec7478e00df999b17da1598c4896b2389c3ea32·...·]-37">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">
167 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-40">(</span><span·class="p"·data-group-id="0306720617-40">)</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·34c7a462ba8498dc3a1d2ee57b431edb86cc51358e6bed12a2a0808479b87d9f·...·]-39">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">167 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-40">(</span><span·class="p"·data-group-id="5969950801-40">)</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·1cac3832a67192e58dbaee0778d6004373d8727960adb644b2f3d122953664ae·...·]-39">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">
168 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-42">(</span><span·class="p"·data-group-id="0306720617-42">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·976abb071077bbb3239caf3157a65c5befeb6fcff17598a6572b639dfc8dcdd1·...·]-41">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">168 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-42">(</span><span·class="p"·data-group-id="5969950801-42">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·263466134c83202c35a2d49d5aabe031ab12b436fd51a25b7ec094dc65d378a5·...·]-41">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
169 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-44">(</span><span·class="p"·data-group-id="0306720617-44">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·ae037880a3240629ff272505e7dd6b321652d82246a4374967c7bc8c58312847·...·]-43">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">169 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-44">(</span><span·class="p"·data-group-id="5969950801-44">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·873a66b72245cba8fa631942dbb693ad3b6000da01aa24a468f6ec8f713588ef·...·]-43">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
170 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-46">(</span><span·class="p"·data-group-id="0306720617-46">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·beed05a1382a8b388125965fc93b4ce18462b2d2cd2e0e11beb095113730b334·...·]-45">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">170 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-46">(</span><span·class="p"·data-group-id="5969950801-46">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·2ae6a1cc4087af558841917112daaaa41bb65f30e3a3d920e190bc7f5d039672·...·]-45">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
171 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-48">(</span><span·class="p"·data-group-id="0306720617-48">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·976abb071077bbb3239caf3157a65c5befeb6fcff17598a6572b639dfc8dcdd1·...·]-47">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">171 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-48">(</span><span·class="p"·data-group-id="5969950801-48">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·263466134c83202c35a2d49d5aabe031ab12b436fd51a25b7ec094dc65d378a5·...·]-47">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
172 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-50">(</span><span·class="p"·data-group-id="0306720617-50">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·4266961b4c21cf3d460afe7621cd4fabc3b58c9593dc8ceaf3a970e4750022dd·...·]-49">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">172 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-50">(</span><span·class="p"·data-group-id="5969950801-50">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·a331d05d280f624eca1bfe84f3c4aa3f18f7ec7ce5dc3a05d57af81e690e044f·...·]-49">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
173 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-52">(</span><span·class="p"·data-group-id="0306720617-52">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·ac99c7923c9e1994da6ee89d28e02f0eb9cb22edb06635b6fb1654af0ba78986·...·]-51">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">173 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-52">(</span><span·class="p"·data-group-id="5969950801-52">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·bb5f0597bc1d58ddd762b12e2edfcb22416068815cd4ad999558755190e19658·...·]-51">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
174 ·······················</span><span·class="p"·data-group-id="0306720617-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="0306720617-54">(</span><span·class="p"·data-group-id="0306720617-54">)</span><span·class="p"·data-group-id="0306720617-53">}</span><span·class="w"> 
175 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="0306720617-55">(</span><span·class="p"·data-group-id="0306720617-55">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·217,·SHA:·3e67bbe685a5306ff576cb5b083f959f3804fdba4583338c8a51ffb06dbac367·...·]</span><span·class="w">174 ·······················</span><span·class="p"·data-group-id="5969950801-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="5969950801-54">(</span>[·...·truncated·by·diffoscope;·len:·101,·SHA:·dc741332acc23e3ead6682dbd4117894ada4afde98c40bc0c64f722d964bd5ef·...·]</span><span·class="w">
 175 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="5969950801-55">(</span><span·class="p"·data-group-id="5969950801-55">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5969950801-56">[</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="5969950801-57">(</span><span·class="p"·data-group-id="5969950801-57">)</span><span·class="p"·data-group-id="5969950801-56">]</span><span·class="w">
176 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="0306720617-58">(</span><span·class="p"·data-group-id="0306720617-58">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0306720617-59">{</span><span·class="ss">restart_type</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·228,·SHA:·a4615a80b7db681ad621b9807e45a6f0ae2bfdb174076042abe1be92970d23f2·...·]-59">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">176 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="5969950801-58">(</span><span·class="p"·data-group-id="5969950801-58">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5969950801-59">{</span><span·class="ss">restart_type</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·228,·SHA:·21e7264abcfe8d2072f57a9e12f0d64958a3d225273e1a9c746587feaec3674a·...·]-59">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
177 ·························</span><span·class="p"·data-group-id="0306720617-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="0306720617-62">(</span><span·class="p"·data-group-id="0306720617-62"[·...·truncated·by·diffoscope;·len:·50,·SHA:·4f827f2a97788c853d3d62f9b817ca0952d772c2f79e03aeec9ac7bfdc74d2cd·...·]-61">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">177 ·························</span><span·class="p"·data-group-id="5969950801-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="5969950801-62">(</span><span·class="p"·data-group-id="5969950801-62"[·...·truncated·by·diffoscope;·len:·50,·SHA:·236ab605e5e877c13a7c8ee5718ddd4039a376dbfa9789d8752b52feab494257·...·]-61">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
178 ·························</span><span·class="p"·data-group-id="0306720617-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="0306720617-64">(</span><span·class="p"·data-group-id="0306720617-64">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·4266961b4c21cf3d460afe7621cd4fabc3b58c9593dc8ceaf3a970e4750022dd·...·]-63">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">178 ·························</span><span·class="p"·data-group-id="5969950801-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="5969950801-64">(</span><span·class="p"·data-group-id="5969950801-64">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·a331d05d280f624eca1bfe84f3c4aa3f18f7ec7ce5dc3a05d57af81e690e044f·...·]-63">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">
179 ·························</span><span·class="p"·data-group-id="0306720617-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="0306720617-66">(</span><span·class="p"·data-group-id="0306720617-66">)</[·...·truncated·by·diffoscope;·len:·46,·SHA:·9ca395ca6db62741d6342ce96ea05b52292dca54ba68cc4b40cc2d5f92df8fe8·...·]-65">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">179 ·························</span><span·class="p"·data-group-id="5969950801-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="5969950801-66">(</span><span·class="p"·data-group-id="5969950801-66">)</[·...·truncated·by·diffoscope;·len:·46,·SHA:·19b73610b45cc833d2b3da619959e3916518fac39b868d678cdbf2f3cee5ca77·...·]-65">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">
180 ·························</span><span·class="p"·data-group-id="0306720617-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="0306720617-68">(</span><span·class="p"·data-group-id="0306720617-68"[·...·truncated·by·diffoscope;·len:·50,·SHA:·4f827f2a97788c853d3d62f9b817ca0952d772c2f79e03aeec9ac7bfdc74d2cd·...·]-67">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">180 ·························</span><span·class="p"·data-group-id="5969950801-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="5969950801-68">(</span><span·class="p"·data-group-id="5969950801-68"[·...·truncated·by·diffoscope;·len:·50,·SHA:·236ab605e5e877c13a7c8ee5718ddd4039a376dbfa9789d8752b52feab494257·...·]-67">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
181 ·························</span><span·class="p"·data-group-id="0306720617-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="0306720617-70">(</span><span·class="p"·data-group-id="0306720617-70">)<[·...·truncated·by·diffoscope;·len:·47,·SHA:·325cce50b65923c9103e9841c83fc7c375d21f94fc1d7b5e21beed7b9c1372e2·...·]-69">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">181 ·························</span><span·class="p"·data-group-id="5969950801-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="5969950801-70">(</span><span·class="p"·data-group-id="5969950801-70">)<[·...·truncated·by·diffoscope;·len:·47,·SHA:·d4d7721ea00a8c52a4d182d824d9a85828d0800d3f9a0a4656bf7b8965c27392·...·]-69">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
182 ·························</span><span·class="p"·data-group-id="0306720617-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="0306720617-72">(</span><span·class="p"·data-group-id="0306720617-72">)[·...·truncated·by·diffoscope;·len:·48,·SHA:·9ade2a2af0c0d8ce8345cf835c33cf62d9c992ef904643328097b57be9ad0a1b·...·]-71">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">182 ·························</span><span·class="p"·data-group-id="5969950801-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="5969950801-72">(</span><span·class="p"·data-group-id="5969950801-72">)[·...·truncated·by·diffoscope;·len:·48,·SHA:·2e8eb7aeac49945efc9f2be1fc5fd2a87320584df32d6aa7d6b1a4ca0c277957·...·]-71">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
183 ·························</span><span·class="p"·data-group-id="0306720617-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="0306720617-74">(</span><span·class="p"·data-group-id="0306720617-74">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·beed05a1382a8b388125965fc93b4ce18462b2d2cd2e0e11beb095113730b334·...·]-73">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">183 ·························</span><span·class="p"·data-group-id="5969950801-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="5969950801-74">(</span><span·class="p"·data-group-id="5969950801-74">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·2ae6a1cc4087af558841917112daaaa41bb65f30e3a3d920e190bc7f5d039672·...·]-73">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
184 ·························</span><span·class="p"·data-group-id="0306720617-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="0306720617-76">(</span><span·class="p"·data-group-id="0306720617-76[·...·truncated·by·diffoscope;·len:·51,·SHA:·af04547c7a4114bd8ed24044270585ab20db5178aa8955db7cf5f3b46a333248·...·]-75">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">184 ·························</span><span·class="p"·data-group-id="5969950801-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="5969950801-76">(</span><span·class="p"·data-group-id="5969950801-76[·...·truncated·by·diffoscope;·len:·51,·SHA:·2b296de2a3ea2a17e43acba077cc6b10b24e74a040cd89fd2a08ee03945d231d·...·]-75">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
185 ·························</span><span·class="p"·data-group-id="0306720617-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="0306720617-78">(</span><span·class="p"·data-group-id="0306720617-78">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·beed05a1382a8b388125965fc93b4ce18462b2d2cd2e0e11beb095113730b334·...·]-77">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">185 ·························</span><span·class="p"·data-group-id="5969950801-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="5969950801-78">(</span><span·class="p"·data-group-id="5969950801-78">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·2ae6a1cc4087af558841917112daaaa41bb65f30e3a3d920e190bc7f5d039672·...·]-77">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
186 ·························</span><span·class="p"·data-group-id="0306720617-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="0306720617-80">(</span><span·class="p"·data-group-id="0306720617-80">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">186 ·························</span><span·class="p"·data-group-id="5969950801-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="5969950801-80">(</span><span·class="p"·data-group-id="5969950801-80">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
187 ·························</span><span·class="p"·data-group-id="0306720617-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="0306720617-82">(</span><span·class="p"·data-group-id="0306720617-82">[·...·truncated·by·diffoscope;·len:·49,·SHA:·9ee342a0e567ace282278e025566066b10cf5770a4bacc50bc5690b5dafdb7e2·...·]-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="5969950801-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="5969950801-82">(</span><span·class="p"·data-group-id="5969950801-82">[·...·truncated·by·diffoscope;·len:·49,·SHA:·478175069942078f6d214922b4dd1efbe58e9ff4b3b247fcdf09734823fec8d2·...·]-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.1/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="0831192463-1">(</span><span·class="p"·data-group-id="0831192463-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0831192463-2">[</span><span·class="nf">agent_option</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·127,·SHA:·9f83b6a46bafe36269c8bfb5c3d30bfdd1c739fa00a51444741320213145416d·...·]-2">]</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="4638392201-1">(</span><span·class="p"·data-group-id="4638392201-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4638392201-2">[</span><span·class="nf">agent_option</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·127,·SHA:·b79221ae61f66f6de197e82eb8bf8becf74fef7afebba01cc70815d60dcedfcd·...·]-2">]</span><span·class="w">
149 ······</span><span·class="nf">agent_option</span><span·class="p"·data-group-id="0831192463-4">(</span><span·class="p"·data-group-id="0831192463-4">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0831192463-5">{</span><span·class="ss">restart_type</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·215,·SHA:·3e1c8288de69b979839e66873dd466bfb9681c72d558147d415df80a94b239c3·...·]-5">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">149 ······</span><span·class="nf">agent_option</span><span·class="p"·data-group-id="4638392201-4">(</span><span·class="p"·data-group-id="4638392201-4">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4638392201-5">{</span><span·class="ss">restart_type</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·215,·SHA:·ef4ac3832c63e9dbbfa05a2cb00d64acdb0354600c2c1a09cbd5ac695d7cff75·...·]-5">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
150 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-8">(</span><span·class="p"·data-group-id="0831192463-8">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·87a9fcc7abefec1e5be210611ec3c8a4eec982c19a37e843c97c8bcc09eeb27b·...·]-7">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">150 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-8">(</span><span·class="p"·data-group-id="4638392201-8">)</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·92f3c1e688f1d338d3ed0c70502a0305ca56ae9cefcb39696b6d12d9e1013b1a·...·]-7">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
151 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-10">(</span><span·class="p"·data-group-id="0831192463-10">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·0f548e2a29c0098bed6c81a241406479e827d4600006e70f68797ec4fbc67363·...·]-9">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">151 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-10">(</span><span·class="p"·data-group-id="4638392201-10">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·c25abed6ac4632983ad51d1fddac466846ca58666ed63679b0b5334c10447892·...·]-9">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
152 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-12">(</span><span·class="p"·data-group-id="0831192463-12">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·0f548e2a29c0098bed6c81a241406479e827d4600006e70f68797ec4fbc67363·...·]-11">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">152 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-12">(</span><span·class="p"·data-group-id="4638392201-12">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·c25abed6ac4632983ad51d1fddac466846ca58666ed63679b0b5334c10447892·...·]-11">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
153 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-14">(</span><span·class="p"·data-group-id="0831192463-14">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·7d0b79b2da9c4de219f79b9c5b7f73ddd9587b485af913ce6e334eb803bc8cc5·...·]-13">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">153 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-14">(</span><span·class="p"·data-group-id="4638392201-14">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·d76e00cbff115961aa33ee8d457b520e3a45c099d66f744b3660918d860a4783·...·]-13">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
154 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-16">(</span><span·class="p"·data-group-id="0831192463-16">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·a42227a1914e22d52b7f1b99d009a405ee53ab2f1215c113369da23f10ee9da0·...·]-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">154 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-16">(</span><span·class="p"·data-group-id="4638392201-16">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·de65ac4255f95eb26e1e1eb5b950262c928883cb541992eca2e1894e43ad4528·...·]-15">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
155 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-18">(</span><span·class="p"·data-group-id="0831192463-18">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·0f548e2a29c0098bed6c81a241406479e827d4600006e70f68797ec4fbc67363·...·]-17">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">155 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-18">(</span><span·class="p"·data-group-id="4638392201-18">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·c25abed6ac4632983ad51d1fddac466846ca58666ed63679b0b5334c10447892·...·]-17">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
156 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-20">(</span><span·class="p"·data-group-id="0831192463-20">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·a34cb2bb1da288e5a2a7ae3a1dba56885a78a71f5caa013dd76e9affa5836885·...·]-19">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">156 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-20">(</span><span·class="p"·data-group-id="4638392201-20">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·bc3ec43bacadc37138452b90601fb4b06e8532b1d3b8e23af3956ed7afae0d85·...·]-19">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
157 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-22">(</span><span·class="p"·data-group-id="0831192463-22">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·b7750072102d8057fae17b7073a03d8616b8e3d89f94421edd0b0e120b381fe8·...·]-21">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">157 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-22">(</span><span·class="p"·data-group-id="4638392201-22">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·a65c21651727a0ffafa2982d186e3cd534629c49346ff11e9e1ce16308c7d0a8·...·]-21">}</span><span·class="w">···········</span><span·class="p">|</span><span·class="w">
158 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-24">(</span><span·class="p"·data-group-id="0831192463-24">)</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·6179cde2a416812c349cfa31c08e7cf3f310d0c57ecb4159a9ab2e06b1e9f849·...·]-23">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">158 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-24">(</span><span·class="p"·data-group-id="4638392201-24">)</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·7ad918e1c801d141dec64a93c349d61ee6168df7ce38ac9af8fb604205b56fdc·...·]-23">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
159 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-26">(</span><span·class="p"·data-group-id="0831192463-26">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·0f548e2a29c0098bed6c81a241406479e827d4600006e70f68797ec4fbc67363·...·]-25">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">159 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-26">(</span><span·class="p"·data-group-id="4638392201-26">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·c25abed6ac4632983ad51d1fddac466846ca58666ed63679b0b5334c10447892·...·]-25">}</span><span·class="w">·········</span><span·class="p">|</span><span·class="w">
160 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-28">(</span><span·class="p"·data-group-id="0831192463-28">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·90b50f82f639aa845f87d1d07b389779bf9047fa6b7e47c89bebb521141653b0·...·]-27">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">160 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-28">(</span><span·class="p"·data-group-id="4638392201-28">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·f6e199e83682341e4919686f826e7762ff27f5a68c25f6a58d8e796a8613913a·...·]-27">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
161 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-30">(</span><span·class="p"·data-group-id="0831192463-30">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·13068f7091e848b614d70a3f0a7935ef1f963cf4099d303d17859c382eac8685·...·]-29">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">161 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-30">(</span><span·class="p"·data-group-id="4638392201-30">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·48c8cb390efa2bdda01eae7c1f185d38e533849f377ed448f4b90f0f3343694a·...·]-29">}</span><span·class="w">·············</span><span·class="p">|</span><span·class="w">
162 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-32">(</span><span·class="p"·data-group-id="0831192463-32">)</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·52d9e097adcff1c61414266d0733c38fc8eff9a936787867c9ae17e2586eb9e3·...·]-31">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">162 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-32">(</span><span·class="p"·data-group-id="4638392201-32">)</span><s[·...·truncated·by·diffoscope;·len:·39,·SHA:·f625b1ddb03fb5a66f8dbc40efd8349e8390e32920853c37a27f739c72f24c2f·...·]-31">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">
163 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-34">(</span><span·class="p"·data-group-id="0831192463-34">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·a42227a1914e22d52b7f1b99d009a405ee53ab2f1215c113369da23f10ee9da0·...·]-33">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">163 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-34">(</span><span·class="p"·data-group-id="4638392201-34">)</span><sp[·...·truncated·by·diffoscope;·len:·38,·SHA:·de65ac4255f95eb26e1e1eb5b950262c928883cb541992eca2e1894e43ad4528·...·]-33">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w">
164 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-36">(</span><span·class="p"·data-group-id="0831192463-36">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·7d0b79b2da9c4de219f79b9c5b7f73ddd9587b485af913ce6e334eb803bc8cc5·...·]-35">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">164 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-36">(</span><span·class="p"·data-group-id="4638392201-36">)</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·d76e00cbff115961aa33ee8d457b520e3a45c099d66f744b3660918d860a4783·...·]-35">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
165 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-38">(</span><span·class="p"·data-group-id="0831192463-38">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·e4dacd95b7d9f972c2ccb5df78bee0f946cfd59f276014ef4cc6d9771fc64f7b·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">165 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-38">(</span><span·class="p"·data-group-id="4638392201-38">)</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·c5ae37e6e2e175fe127380960095f2b44ff9dff459f9de79774b7b739a290760·...·]-37">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
166 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-40">(</span><span·class="p"·data-group-id="0831192463-40">)</span><span·class="p"·data-group-id="0831192463-39">}</span><span·class="w">·······</span><span·class="p">|</span><span·class="w"> 
167 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-42">(</span><span·class="p"·data-group-id="0831192463-42">)</span[·...·truncated·by·diffoscope;·len:·71,·SHA:·edb85d8b6376cc0d0338dbc909d8a136317273f9107ee702e4d7b973cd59656c·...·]···</span><span·class="p">|</span><span·class="w">166 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-40">(</span><span·class="p"·data-group-id="4638392201-40">)</span><sp[·...·truncated·by·diffoscope;·len:·71,·SHA:·7190dc73f60536d113af19af3a17f83fe61c4292bff63fce7776445ae6c90e42·...·]···</span><span·class="p">|</span><span·class="w">
 167 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-42">(</span><span·class="p"·data-group-id="4638392201-42">)</span><span·class="p"·data-group-id="4638392201-41">}</span><span·class="w">···</span><span·class="p">|</span><span·class="w">
168 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-44">(</span><span·class="p"·data-group-id="0831192463-44">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·90b50f82f639aa845f87d1d07b389779bf9047fa6b7e47c89bebb521141653b0·...·]-43">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">168 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-44">(</span><span·class="p"·data-group-id="4638392201-44">)</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·f6e199e83682341e4919686f826e7762ff27f5a68c25f6a58d8e796a8613913a·...·]-43">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
169 ·······················</span><span·class="p"·data-group-id="0831192463-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="0831192463-46">(</span><span·class="p"·data-group-id="0831192463-46">)</span><span·class="p"·data-group-id="0831192463-45">}</span><span·class="w"> 
170 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="0831192463-47">(</span><span·class="p"·data-group-id="0831192463-47">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·217,·SHA:·72fa34fbf0f30c3a29b84591eb506d25357fbcc23cb66971afce89ca4e95301e·...·]</span><span·class="w">169 ·······················</span><span·class="p"·data-group-id="4638392201-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="4638392201-46">(</span>[·...·truncated·by·diffoscope;·len:·101,·SHA:·50e5b5ef29dd853cddca754105becfecd478e4fc67b7cafbc684daa4e72a8f52·...·]</span><span·class="w">
 170 ······</span><span·class="nf">manager_options</span><span·class="p"·data-group-id="4638392201-47">(</span><span·class="p"·data-group-id="4638392201-47">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4638392201-48">[</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="4638392201-49">(</span><span·class="p"·data-group-id="4638392201-49">)</span><span·class="p"·data-group-id="4638392201-48">]</span><span·class="w">
171 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="0831192463-50">(</span><span·class="p"·data-group-id="0831192463-50">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0831192463-51">{</span><span·class="ss">restart_type</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·228,·SHA:·4feed4a60a8697005975e58dc3ac213c38395047d0f6d38e6824be3db309fc0d·...·]-51">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">171 ······</span><span·class="nf">manager_option</span><span·class="p"·data-group-id="4638392201-50">(</span><span·class="p"·data-group-id="4638392201-50">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4638392201-51">{</span><span·class="ss">restart_type</span><span·class="p">,[·...·truncated·by·diffoscope;·len:·228,·SHA:·51f431efd7234fc4b6c96bce94549318dda5c98aa25d0ad0bb9b50c44307e1d9·...·]-51">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
172 ·························</span><span·class="p"·data-group-id="0831192463-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="0831192463-54">(</span><span·class="p"·data-group-id="0831192463-54"[·...·truncated·by·diffoscope;·len:·50,·SHA:·ffdf01b7881d066985d598f268297146d222855a2afb6d70f030c004e2097676·...·]-53">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">172 ·························</span><span·class="p"·data-group-id="4638392201-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="4638392201-54">(</span><span·class="p"·data-group-id="4638392201-54"[·...·truncated·by·diffoscope;·len:·50,·SHA:·662ef462d1921da2c7b7679c24184b573900dc2e8f969b934d6f82d8ba0736f1·...·]-53">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
173 ·························</span><span·class="p"·data-group-id="0831192463-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="0831192463-56">(</span><span·class="p"·data-group-id="0831192463-56">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·a34cb2bb1da288e5a2a7ae3a1dba56885a78a71f5caa013dd76e9affa5836885·...·]-55">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">173 ·························</span><span·class="p"·data-group-id="4638392201-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="4638392201-56">(</span><span·class="p"·data-group-id="4638392201-56">)</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·bc3ec43bacadc37138452b90601fb4b06e8532b1d3b8e23af3956ed7afae0d85·...·]-55">}</span><span·class="w">··········</span><span·class="p">|</span><span·class="w">
174 ·························</span><span·class="p"·data-group-id="0831192463-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="0831192463-58">(</span><span·class="p"·data-group-id="0831192463-58">)</[·...·truncated·by·diffoscope;·len:·46,·SHA:·95bb4858e25855f1f77f92b0fb75cc5445900904be46ee0feb00c18b45027114·...·]-57">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">174 ·························</span><span·class="p"·data-group-id="4638392201-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="4638392201-58">(</span><span·class="p"·data-group-id="4638392201-58">)</[·...·truncated·by·diffoscope;·len:·46,·SHA:·55788d1746c5ab7de230a109e00612e2ed9bedbb4f74ad54d468103e81b6607f·...·]-57">}</span><span·class="w">······</span><span·class="p">|</span><span·class="w">
175 ·························</span><span·class="p"·data-group-id="0831192463-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="0831192463-60">(</span><span·class="p"·data-group-id="0831192463-60">)</span><span·class="p"·data-group-id="0831192463-59">}</span><span·class="w">··</span><span·class="p">|</span><span·class="w"> 
176 ·························</span><span·class="p"·data-group-id="0831192463-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="0831192463-62">(</span><span·class="p"·data-group-id="0831192463-62">)<[·...·truncated·by·diffoscope;·len:·79,·SHA:·8bdcfb9bbd363b2b311c31d13855c19365829982e838d10e79c306db1c85fa4f·...·]··</span><span·class="p">|</span><span·class="w">175 ·························</span><span·class="p"·data-group-id="4638392201-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="4638392201-60">(</span><span·class="p"·data-group-id="4638392201-60"[·...·truncated·by·diffoscope;·len:·79,·SHA:·f40a2c8c7f667d90a612c6434b6e445a6be0914840aca5df6ffc72fc5889f4db·...·]··</span><span·class="p">|</span><span·class="w">
 176 ·························</span><span·class="p"·data-group-id="4638392201-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="4638392201-62">(</span><span·class="p"·data-group-id="4638392201-62">)</span><span·class="p"·data-group-id="4638392201-61">}</span><span·class="w">·····</span><span·class="p">|</span><span·class="w">
177 ·························</span><span·class="p"·data-group-id="0831192463-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="0831192463-64">(</span><span·class="p"·data-group-id="0831192463-64">)[·...·truncated·by·diffoscope;·len:·48,·SHA:·8d2c217dde1fcd158132e33aafe3d9210ee493284bb02e2ba191811e2d76e9c3·...·]-63">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">177 ·························</span><span·class="p"·data-group-id="4638392201-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="4638392201-64">(</span><span·class="p"·data-group-id="4638392201-64">)[·...·truncated·by·diffoscope;·len:·48,·SHA:·8ad5996a93e1b5461ca578c0df837367a711fee0f76a9813e12d5c17c7f790a9·...·]-63">}</span><span·class="w">····</span><span·class="p">|</span><span·class="w">
178 ·························</span><span·class="p"·data-group-id="0831192463-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="0831192463-66">(</span><span·class="p"·data-group-id="0831192463-66">)</span><span·class="p"·data-group-id="0831192463-65">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w"> 
179 ·························</span><span·class="p"·data-group-id="0831192463-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="0831192463-68">(</span><span·class="p"·data-group-id="0831192463-68">)</span><span·class="p"·data-group-id="0831192463-67">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w"> 
180 ·························</span><span·class="p"·data-group-id="0831192463-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="0831192463-70">(</span><span·class="p"·data-group-id="0831192463-70">)</sp[·...·truncated·by·diffoscope;·len:·47,·SHA:·5f0675b94c3e578d74002ad7ca754cbf9931081e4c7f1d86bba14ab284b144a9·...·]">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">178 ·························</span><span·class="p"·data-group-id="4638392201-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="4638392201-66">(</span><span·class="p"·data-group-id="4638392201-66">)</sp[·...·truncated·by·diffoscope;·len:·47,·SHA:·cc0f539442a634635f7e66ad8d1625705270899c28a88671076caf6829d27521·...·]">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
 179 ·························</span><span·class="p"·data-group-id="4638392201-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="4638392201-68">(</span><span·class="p"·data-group-id="4638392201-68">)</span><span·class="p"·data-group-id="4638392201-67">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
 180 ·························</span><span·class="p"·data-group-id="4638392201-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="4638392201-70">(</span><span·class="p"·data-group-id="4638392201-70">)</span><span·class="p"·data-group-id="4638392201-69">}</span><span·class="w">········</span><span·class="p">|</span><span·class="w">
181 ·························</span><span·class="p"·data-group-id="0831192463-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="0831192463-72">(</span><span·class="p"·data-group-id="0831192463-72">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">181 ·························</span><span·class="p"·data-group-id="4638392201-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="4638392201-72">(</span><span·class="p"·data-group-id="4638392201-72">)</span><span·class="w">··</span><span·class="p">|</span><span·class="w">
182 ·························</span><span·class="p"·data-group-id="0831192463-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="0831192463-74">(</span><span·class="p"·data-group-id="0831192463-74">[·...·truncated·by·diffoscope;·len:·49,·SHA:·28b0b2b02716fdd640b4b68157e4f55ae58545007cf33304d096b01b0c6a5cff·...·]-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="4638392201-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="4638392201-74">(</span><span·class="p"·data-group-id="4638392201-74">[·...·truncated·by·diffoscope;·len:·49,·SHA:·99f5293eb8a94d886579a4225421a09fd2be023bcd7ecaf4f611cc3fdec1e07d·...·]-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.1/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="1528127924-1">{</span><span·class="ss">myVar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1528127924-2">{</span><span·class="ss">snmp_generic</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">var[·...·truncated·by·diffoscope;·len:·1108,·SHA:·bdfd8d85dd225baafeec5283871b3dd0927c89ff7fb8c281c9c8c0d91198f461·...·]-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="3800957806-1">{</span><span·class="ss">myVar</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3800957806-2">{</span><span·class="ss">snmp_generic</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">var[·...·truncated·by·diffoscope;·len:·1108,·SHA:·bd608285c384c132fe4281732cff1974b3ee4105065c3b43de0688934ebe814f·...·]-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="5911408692-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="5911408692-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="5221299363-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="5221299363-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="5911408692-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="5911408692-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="5221299363-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="5221299363-2">)</span><span·class="p">.</span><span·class="w">
  
174 </span><span·class="nf">myTable_func</span><span·class="p"·data-group-id="5911408692-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="5911408692-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="5221299363-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="5221299363-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="5911408692-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="5911408692-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="5221299363-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="5221299363-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="5911408692-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:·aa1c849384e0e1c4eb82275952d3baf1d24700cf54867d6a27b2f8b438e9a802·...·]-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="5221299363-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:·ae0cb4f18ab4725f0fdf506ba7a20f31f08d6040c2d6e69c2d7293716eedaf73·...·]-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="5911408692-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="5221299363-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="5911408692-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="5221299363-6">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
180 ····</span><span·class="p"·data-group-id="5911408692-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="5911408692-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">180 ····</span><span·class="p"·data-group-id="5221299363-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="5221299363-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="5911408692-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="5911408692-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="5221299363-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="5221299363-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="5911408692-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:·8c2bddb395dfc9443ea446deea913396153c7084f668f9da66bd08f6343e8bcb·...·]-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="5221299363-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:·709c6f6d81f307ec49b8fb4c172209f3db7ba212a47799b35929a90e70959f26·...·]-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="5911408692-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="5221299363-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="5911408692-10">)</span><span·class="p">,</span><span·class="w">187 ·······························</span><span·class="n">NameDb</span><span·class="p"·data-group-id="5221299363-10">)</span><span·class="p">,</span><span·class="w">
188 ····</span><span·class="p"·data-group-id="5911408692-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="5911408692-11">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">188 ····</span><span·class="p"·data-group-id="5221299363-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="5221299363-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="5911408692-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="5911408692-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="5221299363-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="5221299363-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="5911408692-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:·fbee1dd2231e602e6e21b9de05e31902f28d3de42d6798163e6f6689e4a5f927·...·]-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="5221299363-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:·7a72570433c8986affefaf3d5b6b69c6595efcb5956e351a998605dd7fce50fc·...·]-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="5911408692-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:·01aa5156f93318c7d0ff95f59ccfe4525db783cdc3045a15cdc2b91287cdb13b·...·]-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="5221299363-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:·4ce3f4117dd4e5f18b16e49a4a1f5b9a16d273d2e7ae0515fc135f2b3918dbc8·...·]-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.1/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="9172172814-1">(</span><span·class="ss">snmp</span><span·class="p"·data-group-id="9172172814-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="2496987617-1">(</span><span·class="ss">snmp</span><span·class="p"·data-group-id="2496987617-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="9172172814-2">(</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="9172172814-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="2496987617-2">(</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="2496987617-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="9172172814-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="9172172814-3">}</span><span·class="gp·unselectable">238 </span><span·class="p"·data-group-id="2496987617-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="2496987617-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="9172172814-4">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9172172814-5">[</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="9172172814-5">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·097a5281c92f33491e7c3b84deb50d873bfa55c63c468aa31e7f92a4f00922dc·...·]-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="2496987617-4">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2496987617-5">[</span><span·class="s">&quot;EX1-MIB&quot;</span><span·class="p"·data-group-id="2496987617-5">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·fe62960b7532217d7f51c7722815a33c187e5963f5bf7ddae04574c1b9d4597d·...·]-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="6740314097-1">(</span><span·class="p"·data-group-id="6740314097-2">[</span><span·class="p"·data-group-id="6740314097-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:·d0848377aaf48915f9ba82f5f0c17ed4d657a9d5c44ba1d6afa2cfdd82c8ee9e·...·]-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="7557716443-1">(</span><span·class="p"·data-group-id="7557716443-2">[</span><span·class="p"·data-group-id="7557716443-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:·d983a3bd345a1e61290e7903db873d0a6199dc32ed28ead1b294bded2bde6a71·...·]-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="6740314097-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:·01a7d22b921ceeb9bb254cb3a296399ca0b39e4016b8b717c2f7251e064242ba·...·]-5">}</span><span·class="w">244 </span><span·class="p"·data-group-id="7557716443-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:·032467733cdc2f65f8fb7a22a338bea1ebe7b7abe6e2f82c9fa425ed7c137edb·...·]-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="6740314097-6">(</span><span·class="p"·data-group-id="6740314097-7">[</span><span·class="p"·data-group-id="6740314097-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:·944d63f03775e74e5a06d0cae10da8a8368ec9d38dc7384d07dc27d644ab6b32·...·]-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="7557716443-6">(</span><span·class="p"·data-group-id="7557716443-7">[</span><span·class="p"·data-group-id="7557716443-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:·420ceee9bcabd7688babc226d3c668d9fe77ca96c1f7e826603844a762872ce2·...·]-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="6740314097-9">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6740314097-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:·50b1ac8f1848135185ba32b6bdca367a2d4005158fb9fc28f4f2f0635c99024e·...·]-10">]</span><span·class="w">249 </span><span·class="p"·data-group-id="7557716443-9">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7557716443-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:·6f886ef0407ff962c4f892271f14b04ac457896a5025978708ceb5337c9f6ebc·...·]-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="6740314097-11">(</span><span·class="p"·data-group-id="6740314097-12">[</span><span·class="p"·data-group-id="6740314097-13">{</span><span·class="p"·data-group-id="6740314097-14">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·300,·SHA:·cd4898da68579f8aefb4bfa2b1f1a4506bdf3a3127f56149cc270a1f1444a17c·...·]-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="7557716443-11">(</span><span·class="p"·data-group-id="7557716443-12">[</span><span·class="p"·data-group-id="7557716443-13">{</span><span·class="p"·data-group-id="7557716443-14">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">[·...·truncated·by·diffoscope;·len:·300,·SHA:·44a5fd5e4e60617cc549e5c41f63bd27f48d63e3686ea263c557a1e13311197b·...·]-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="6740314097-15">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6740314097-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="7557716443-15">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7557716443-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="6740314097-16">(</span><span·class="p"·data-group-id="6740314097-17">[</span><span·class="p"·data-group-id="6740314097-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:·4977df679b4b9e6a8c5db0385e97bfb9454b6c0ea7fc8f7940ccd012f1a918cf·...·]-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="7557716443-16">(</span><span·class="p"·data-group-id="7557716443-17">[</span><span·class="p"·data-group-id="7557716443-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:·c41f6d484d067e1fc4990dcf33737e4f57d41b0ad6bd359b9b31047ec00fe6bf·...·]-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="6740314097-19">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6740314097-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="7557716443-19">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7557716443-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="6740314097-20">(</span><span·class="p"·data-group-id="6740314097-21">[</span><span·class="p"·data-group-id="6740314097-22">{</span><span·class="p"·data-group-id="6740314097-23">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0[·...·truncated·by·diffoscope;·len:·1100,·SHA:·be12a26ebac63587f867b7a980157861c3ebd9670f9a40521e820e882b5de3de·...·]-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="7557716443-20">(</span><span·class="p"·data-group-id="7557716443-21">[</span><span·class="p"·data-group-id="7557716443-22">{</span><span·class="p"·data-group-id="7557716443-23">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0[·...·truncated·by·diffoscope;·len:·1100,·SHA:·9c7a42ea0be77e8f1bdaa99de2b3f4e7f763801969db4c24d7676fa5b07401d5·...·]-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="6740314097-28">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6740314097-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="7557716443-28">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7557716443-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="6740314097-29">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6740314097-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="7557716443-29">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7557716443-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="6740314097-30">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6740314097-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="7557716443-30">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7557716443-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="6740314097-31">(</span><span·class="p"·data-group-id="6740314097-32">[</span><span·class="p"·data-group-id="6740314097-33">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6740314097-33">[·...·truncated·by·diffoscope;·len:·103,·SHA:·690dfafe0933803369e8c657df35e80e9b5121f3947cae1d054d97918384d024·...·]-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="7557716443-31">(</span><span·class="p"·data-group-id="7557716443-32">[</span><span·class="p"·data-group-id="7557716443-33">[</span><span·class="ss">myName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7557716443-33">[·...·truncated·by·diffoscope;·len:·103,·SHA:·a43d21da2d1c309b4168b8b890722a65d7a21f4d43e3fa256ee087ad6c82fbae·...·]-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="6740314097-34">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6740314097-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="7557716443-34">[</span><span·class="ss">fName</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7557716443-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="6740314097-35">(</span><span·class="p"·data-group-id="6740314097-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="7557716443-35">(</span><span·class="p"·data-group-id="7557716443-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="6740314097-36">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6740314097-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="7557716443-36">[</span><span·class="ss">fAddress</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7557716443-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="6740314097-37">(</span><span·class="p"·data-group-id="6740314097-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="7557716443-37">(</span><span·class="p"·data-group-id="7557716443-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="6740314097-38">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="6740314097-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="7557716443-38">[</span><span·class="ss">fStatus</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7557716443-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="1825973639-1">(</span><span·class="ss">ex1</span><span·class="p"·data-group-id="1825973639-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="1738269545-1">(</span><span·class="ss">ex1</span><span·class="p"·data-group-id="1738269545-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="1825973639-2">(</span><span·class="ss">&#39;dummy@flop.org&#39;</span><span·class="p"·data-group-id="1825973639-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="1738269545-2">(</span><span·class="ss">&#39;dummy@flop.org&#39;</span><span·class="p"·data-group-id="1738269545-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="1825973639-3">(</span><span·class="p"·data-group-id="1825973639-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:·aee7e0078f5c501454158faa74e4c16bde7ff2deadd8bc9b372dc09503c42461·...·]-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="1738269545-3">(</span><span·class="p"·data-group-id="1738269545-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:·0ff9d2e89d63672e7a58b90e826c13c64e7cec67ea69ed752706f63875b9d0f4·...·]-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="1825973639-5">(</span><span·class="p"·data-group-id="1825973639-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1825973639-6">]</span><span·class="p"·data-group-id="1825973639-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="1738269545-5">(</span><span·class="p"·data-group-id="1738269545-6">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1738269545-6">]</span><span·class="p"·data-group-id="1738269545-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="1825973639-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="1825973639-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="1738269545-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="1738269545-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="1825973639-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="1825973639-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="1738269545-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="1738269545-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="1825973639-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="1825973639-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="1738269545-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="1738269545-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="1825973639-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="1825973639-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="1738269545-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="1738269545-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="1825973639-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="1825973639-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="1825973639-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="1825973639-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="1825973639-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="1825973639-13">)</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="1738269545-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="1738269545-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="1738269545-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="1738269545-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="1738269545-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="1738269545-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="1825973639-14">(</span><span·class="p"·data-group-id="1825973639-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="1738269545-14">(</span><span·class="p"·data-group-id="1738269545-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="1825973639-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="1825973639-16">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·b40c95dbf6b1371bf66e5c40aa940dd2c8918d66830b36c4d9687a711a63b2a2·...·]-15">)</span><span·class="p">.</span><span·class="w">312 ····</span><span·class="nf">spawn</span><span·class="p"·data-group-id="1738269545-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="1738269545-16">[</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·66,·SHA:·83863497c9b573bcc4c6df7f527b99c32d9b20b52c23c607ce6d907e9ef73707·...·]-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="1825973639-17">(</span><span·class="nb">get</span><span·class="p"·data-group-id="1825973639-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="1738269545-17">(</span><span·class="nb">get</span><span·class="p"·data-group-id="1738269545-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="1825973639-18">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1825973639-19">(</span><span·class="p"·data-group-id="1825973639-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:·28b0e59f9bbdef9dcb71cf9af6c7a7b9d3085b73bfc4acecd1d455bf0871bbc0·...·]-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="1738269545-18">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1738269545-19">(</span><span·class="p"·data-group-id="1738269545-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:·5988b57fb30ef091492ec302da7ab7707ff4fd670b6f23503494e274a535c480·...·]-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="1825973639-20">(</span><span·class="p"·data-group-id="1825973639-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="1738269545-20">(</span><span·class="p"·data-group-id="1738269545-20">)</span><span·class="p">,</span><span·class="w">
321 ····</span><span·class="p"·data-group-id="1825973639-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="1825973639-21">}</span><span·class="p">.</span><span·class="w">321 ····</span><span·class="p"·data-group-id="1738269545-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="1738269545-21">}</span><span·class="p">.</span><span·class="w">
322 </span><span·class="nf">my_name</span><span·class="p"·data-group-id="1825973639-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="1825973639-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="1738269545-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="1738269545-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="1825973639-23">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1825973639-24">(</span><span·class="p"·data-group-id="1825973639-24">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1825973639-25">{</s[·...·truncated·by·diffoscope;·len:·212,·SHA:·0e95ad6763ea00b56f01eec31feef68e9b4aeed54c5542641065635209a758be·...·]-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="1738269545-23">{</span><span·class="nf">self</span><span·class="p"·data-group-id="1738269545-24">(</span><span·class="p"·data-group-id="1738269545-24">)</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1738269545-25">{</s[·...·truncated·by·diffoscope;·len:·212,·SHA:·d6c6e89db0d79fdec3acbe7bd29f96caca82c59cf3a1b92f6d6bc2c9d10bb5d2·...·]-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="1825973639-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="1825973639-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="1738269545-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="1738269545-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="1825973639-27">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="1825973639-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="1738269545-27">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="1738269545-27">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
330 ···</span><span·class="p"·data-group-id="1825973639-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="1825973639-28">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">330 ···</span><span·class="p"·data-group-id="1738269545-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="1738269545-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="1825973639-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="1825973639-29">)</span><span·class="p">;</span><span·class="w">331 ········</span><span·class="nf">get_cols</span><span·class="p"·data-group-id="1738269545-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="1738269545-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="1825973639-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="1825973639-30">}</span><span·class="w">333 ········</span><span·class="p"·data-group-id="1738269545-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="1738269545-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="1825973639-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="1825973639-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="1738269545-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="1738269545-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="1825973639-32">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="1825973639-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="1738269545-32">(</span><span·class="n">RowIndex</span><span·class="p"·data-group-id="1738269545-32">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
337 ···</span><span·class="p"·data-group-id="1825973639-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="1825973639-33">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">337 ···</span><span·class="p"·data-group-id="1738269545-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="1738269545-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="1825973639-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="1825973639-34">)</span><span·class="p">;</span><span·class="w">338 ········</span><span·class="nf">get_next_cols</span><span·class="p"·data-group-id="1738269545-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="1738269545-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="1825973639-35">(</span><span·class="p"·data-group-id="1825973639-36">[</span><span·class="p"·data-group-id="1825973639-36">]</span><span·class="p"·data-group-id="1825973639-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="1738269545-35">(</span><span·class="p"·data-group-id="1738269545-36">[</span><span·class="p"·data-group-id="1738269545-36">]</span><span·class="p"·data-group-id="1738269545-35">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
341 ·····</span><span·class="p"·data-group-id="1825973639-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="1825973639-37">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">341 ·····</span><span·class="p"·data-group-id="1738269545-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="1738269545-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="1825973639-38">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="1825973639-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="1738269545-38">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="1738269545-38">)</span><span·class="p">,</span><span·class="w">
344 ·········</span><span·class="nf">get_next_cols</span><span·class="p"·data-group-id="1825973639-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="1825973639-39">)</span><span·class="p">;</span><span·class="w">344 ·········</span><span·class="nf">get_next_cols</span><span·class="p"·data-group-id="1738269545-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="1738269545-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="1825973639-40">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="1825973639-40">)</span><span·class="w">346 ········</span><span·class="nf">end_of_table</span><span·class="p"·data-group-id="1738269545-40">(</span><span·class="n">Cols</span><span·class="p"·data-group-id="1738269545-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">
Max diff block lines reached; 128059/177824 bytes (72.01%) of diff not shown.
6.65 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18.1/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="8674784028-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="8674784028-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="9703897935-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="9703897935-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="8674784028-2">(</span><span·class="p"·data-group-id="8674784028-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="9703897935-2">(</span><span·class="p"·data-group-id="9703897935-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="8674784028-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="8674784028-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="9703897935-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="9703897935-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="8341363013-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="8341363013-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="9593005200-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="9593005200-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
144 ··</span><span·class="p"·data-group-id="8341363013-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8341363013-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:·fcfd0114a44ff8a5bc4b8142f29c37a919f92bae8acc180924d605128d09e49b·...·]-4">)</span><span·class="p">,</span><span·class="w">144 ··</span><span·class="p"·data-group-id="9593005200-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9593005200-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:·ff7550adc18ff9d0ff06285544cbb96e8a2243ce99bd468f258ae365854091b6·...·]-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.1/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="8983830998-1">[</span><span·class="p"·data-group-id="8983830998-2">{</span><span·class="p"·data-group-id="8983830998-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="8983830998-3">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">g</span><span·class="p"·data-group-id="8983830998-2">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8983830998-4">{</span><span·class="p"·data-group-id="8983830998-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="8983830998-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">c</span><span·class="p"·data-group-id="8983830998-4">}</span><span·class="p"·data-group-id="8983830998-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="3901248932-1">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3901248932-2">[</span><span·class="p"·data-group-id="3901248932-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3901248932-3">[</span><span·class="mi">0</span><span·class="p"·data-group-id="3901248932-3">]</span><span·class="p"·data-group-id="3901248932-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="3901248932-4">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3901248932-5">[</span><span·class="mi">3</span><span·[·...·truncated·by·diffoscope;·len:·447,·SHA:·0430a5dadf7ad8826106b92e62c3a2bb8546c432ff8d6a7dcb8c13c4915e3997·...·]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:·e4b8de5e0fda760363ee72b8be110e464c03b35de7ab4af1bc7fb8d9cd8696d6·...·]
 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="9780709408-1">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9780709408-2">[</span><span·class="p"·data-group-id="9780709408-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9780709408-3">[</span><span·class="mi">0</span><span·class="p"·data-group-id="9780709408-3">]</span><span·class="p"·data-group-id="9780709408-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="9780709408-4">(</span><span·class="ss">get_next</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9780709408-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="9780709408-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9780709408-6">[</span><span·class="mi">1</span><span·class="p"·data-group-id="9780709408-6">]</span><span·class="p"·data-group-id="9780709408-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="8788473281-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8788473281-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:·d25e6bb2c851ed3378022d46151ddf3d8aeef1c98a1ac16fc9592e6744718a3c·...·]-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="5545970254-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5545970254-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:·ba897eab2cecc08ab26e3243690cf019f1d14ab4899c49e169cdfe5335ac8953·...·]-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="8788473281-4">{</span><span·class="p"·data-group-id="8788473281-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="8788473281-5">]</span><span[·...·truncated·by·diffoscope;·len:·460,·SHA:·b6af9e18f68a90379746745731334ab9098dfda3342ac94192a5122faaf4a851·...·]-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="5545970254-4">{</span><span·class="p"·data-group-id="5545970254-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="5545970254-5">]</span><span[·...·truncated·by·diffoscope;·len:·460,·SHA:·6126aa4474f9409659e353babd8acafabc473cc46f976780cb46113e530585e1·...·]-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="8838517726-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8838517726-2">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generi[·...·truncated·by·diffoscope;·len:·301,·SHA:·72d5aec131d29193a5ac4cd350d6a4faf6a45f238be18dc70c98b6c224520f25·...·]6-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="0827423536-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0827423536-2">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generi[·...·truncated·by·diffoscope;·len:·301,·SHA:·63629f092db74bf04345d55e0a05a56d1067209ec25cdb1a4f9925be69c2617f·...·]6-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="8838517726-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8838517726-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic[·...·truncated·by·diffoscope;·len:·299,·SHA:·d26825b3e96517ee238e66b2fc368c8d669e778e8d5853dc0620b766903e983b·...·]6-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="0827423536-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0827423536-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic[·...·truncated·by·diffoscope;·len:·299,·SHA:·5384fb5cd914652160361305ff97b96d6b7a81e0b09b8e934e7c7cfd1196d02e·...·]6-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="1870733989-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1870733989-2">{</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:·d23f629470301327eeabe340b71b2bb197c15eec505f7cc84e11741760522774·...·]-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="1279854067-1">{</span><span·class="ss">ipAdr</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1279854067-2">{</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:·b35e546e80675e0e3f3fdbe377fcd344b4e6e4f8a63a72c2b78b20c1f6c13148·...·]-1">}</span><span·class="p">.</span><span·class="w">
246 </span><span·class="p"·data-group-id="1870733989-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1870733989-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic_[·...·truncated·by·diffoscope;·len:·292,·SHA:·ce92d6c6eca644943fc56d238d1d8a0364834e3730789e311e8bbcf4894656fa·...·]-4">}</span><span·class="p">.</span></code></pre><h2·id="default-instrumentation"·class="section-heading">246 </span><span·class="p"·data-group-id="1279854067-4">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1279854067-5">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">generic_[·...·truncated·by·diffoscope;·len:·292,·SHA:·0b4f4b78c7e250035477f361d9f0b572cddfff1f3a26009fc15caf8933363523·...·]-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,
36.2 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18.1/doc/html/snmp_manager_config_files.html
    
Offset 145, 46 lines modifiedOffset 145, 46 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="8929927107-1">{</span><span·class="ss">transports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="8929927107-2">[</span><span·class="p"·data-group-id="8929927107-3">{</span><span·class="ss">transportDomainUdpIpv4</[·...·truncated·by·diffoscope;·len:·560,·SHA:·e6453508697be3e8d882a00a3bacd095ad13353baf128a7bfcd66d2b7c9eb191·...·]-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="8484508414-1">{</span><span·class="ss">transports</span><span·class="p">,</span><span·class="w">·······</span><span·class="p"·data-group-id="8484508414-2">[</span><span·class="p"·data-group-id="8484508414-3">{</span><span·class="ss">transportDomainUdpIpv4</[·...·truncated·by·diffoscope;·len:·560,·SHA:·2a0c26d36a843e642fd6524bbbd4581ce46e9f1bb9ada9ae9ec93936f214b01c·...·]-3">}</span><span·class="p">,</span><span·class="w">
153 ····················</span><span·class="p"·data-group-id="8929927107-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8929927107-7">{</span><span·class="p"·data-group-id="8929927107-8">{</span><span·class="mi">0</span><span·clas[·...·truncated·by·diffoscope;·len:·662,·SHA:·f1526bdcda6dd438713a1c62543025cd0f3e15b0ad7a584e627574562352a508·...·]-1">}</span><span·class="p">.</span><span·class="w">153 ····················</span><span·class="p"·data-group-id="8484508414-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8484508414-7">{</span><span·class="p"·data-group-id="8484508414-8">{</span><span·class="mi">0</span><span·clas[·...·truncated·by·diffoscope;·len:·662,·SHA:·ed978eaf9a794c175172989c5c2e13a5a3032ad6c749da22c3dfcca5e1216753·...·]-1">}</span><span·class="p">.</span><span·class="w">
154 </span><span·class="p"·data-group-id="8929927107-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="8929927107-9">}</span><span·class="p">.</span><span·class="w">154 </span><span·class="p"·data-group-id="8484508414-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="8484508414-9">}</span><span·class="p">.</span><span·class="w">
155 </span><span·class="p"·data-group-id="8929927107-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="8929927107-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="8484508414-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="8484508414-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><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ManagerDir</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">156 structure.·See·RFC·2271/2571·for·details.</p><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ManagerDir</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">
157 </span><span·class="n">Port</span><span·class="w">··········</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5000</span><span·class="p">,</span><span·class="w">157 </span><span·class="n">Port</span><span·class="w">··········</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">5000</span><span·class="p">,</span><span·class="w">
158 </span><span·class="n">Addr4</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5093249771-1">{</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="5093249771-1">}</span><span·class="p">,</span><span·class="w">158 </span><span·class="n">Addr4</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4865414567-1">{</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="4865414567-1">}</span><span·class="p">,</span><span·class="w">
159 </span><span·class="n">Addr6</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5093249771-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:·175,·SHA:·9612b1379e8d94eb56541985a2a2fe59184b43c5bebbf0262a00ae1e22031d30·...·]-2">}</span><span·class="p">,</span><span·class="w">159 </span><span·class="n">Addr6</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4865414567-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:·175,·SHA:·57f9b0100349004355f6b967a610f51cc90057c421602b8640f7f0fee7b783ba·...·]-2">}</span><span·class="p">,</span><span·class="w">
160 </span><span·class="n">Transports</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5093249771-3">[</span><span·class="p"·data-group-id="5093249771-4">{</span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5093249771-5">{</span><span·class="n">Addr4</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="5093249771-5">}</span><span·class="p"·data-group-id="5093249771-4">}</span><span·class="p">,</span><span·class="w"> 
161 ·················</span><span·class="p"·data-group-id="5093249771-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5093249771-7">{</span><span·class="n">Addr6</span><spa[·...·truncated·by·diffoscope;·len:·223,·SHA:·8f8b1f223a58dfca55e4cd66c051c35d95193b08df9c9eb230db60f429640931·...·]</span><span·class="p">,</span><span·class="w">160 </span><span·class="n">Transports</span><span·class="w">····</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4865414567-3">[</span><span·class="p"·data-group-id="4865414567-4">{</span><span·class="ss">transportDomainUdp[·...·truncated·by·diffoscope;·len:·314,·SHA:·6c916672de803f82c6521b1f9f9477ae5a80cc201e72163db1f3b18b0340b7aa·...·]</span><span·class="p">,</span><span·class="w">
 161 ·················</span><span·class="p"·data-group-id="4865414567-6">{</span><span·class="ss">transportDomainUdpIpv6</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4865414567-7">{</span><span·class="n">Addr6</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Port</span><span·class="p"·data-group-id="4865414567-7">}</span><span·class="p"·data-group-id="4865414567-6">}</span><span·class="p"·data-group-id="4865414567-3">]</span><span·class="p">,</span><span·class="w">
162 </span><span·class="n">EngineID</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;mgrEngine&quot;</span><span·class="p">,</span><span·class="w">162 </span><span·class="n">EngineID</span><span·class="w">······</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;mgrEngine&quot;</span><span·class="p">,</span><span·class="w">
163 </span><span·class="n">MMS</span><span·class="w">···········</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">484</span><span·class="p">,</span><span·class="w">163 </span><span·class="n">MMS</span><span·class="w">···········</span><span·class="o">=</span><span·class="w">·</span><span·class="mi">484</span><span·class="p">,</span><span·class="w">
164 </span><span·class="n">ManagerConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="5093249771-8">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">manager_entry</span><span·class="p"·data-group-id="5093249771-9">(</span><span·class="ss">transports</span><span·class="p">,</span><span·class="w">·······</spa[·...·truncated·by·diffoscope;·len:·76,·SHA:·c0300b0063de45454ee6de22da116e320a119f0fe4433a879fa3637dd400c381·...·]-9">)</span><span·class="p">,</span><span·class="w">164 </span><span·class="n">ManagerConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4865414567-8">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">manager_entry</span><span·class="p"·data-group-id="4865414567-9">(</span><span·class="ss">transports</span><span·class="p">,</span><span·class="w">·······</spa[·...·truncated·by·diffoscope;·len:·76,·SHA:·5953254f4185c94134eb327c8e161ab3567063866ef9369b3fa1b460d3a00e4d·...·]-9">)</span><span·class="p">,</span><span·class="w">
165 ·················</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">manager_entry</span><span·class="p"·data-group-id="5093249771-10">(</span><span·class="ss">engine_id</span><span·class="p">,</span><span·class="w">········</span><span·class="n">EngineID</span><span·class="p"·data-group-id="5093249771-10">)</span><span·class="p">,</span><span·class="w">165 ·················</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">manager_entry</span><span·class="p"·data-group-id="4865414567-10">(</span><span·class="ss">engine_id</span><span·class="p">,</span><span·class="w">········</span><span·class="n">EngineID</span><span·class="p"·data-group-id="4865414567-10">)</span><span·class="p">,</span><span·class="w">
166 ·················</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">manager_entry</span><span·class="p"·data-group-id="5093249771-11">(</span><span·class="ss">max_message_size</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MMS</span><span·class="p"·data-group-id="5093249771-11">)</span><span·class="p"·data-group-id="5093249771-8">]</span><span·class="p">,</span><span·class="w">166 ·················</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">manager_entry</span><span·class="p"·data-group-id="4865414567-11">(</span><span·class="ss">max_message_size</span><span·class="p">,</span><span·class="w">·</span><span·class="n">MMS</span><span·class="p"·data-group-id="4865414567-11">)</span><span·class="p"·data-group-id="4865414567-8">]</span><span·class="p">,</span><span·class="w">
167 </span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">write_manager_config</span><span·class="p"·data-group-id="5093249771-12">(</span><span·class="n">ManagerDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ManagerConfig</span><span·class="p"·data-group-id="5093249771-12">)</span><span·class="p">,</span></code></pre><h2·id="users"·class="section-heading">167 </span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">write_manager_config</span><span·class="p"·data-group-id="4865414567-12">(</span><span·class="n">ManagerDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ManagerConfig</span><span·class="p"·data-group-id="4865414567-12">)</span><span·class="p">,</span></code></pre><h2·id="users"·class="section-heading">
168 ··<a·href="#users"·class="hover-link">168 ··<a·href="#users"·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">Users</span>171 ··<span·class="text">Users</span>
172 </h2>172 </h2>
173 <p>For·each·<em>manager·user</em>,·the·manager·needs·some·information.·This·information·is173 <p>For·each·<em>manager·user</em>,·the·manager·needs·some·information.·This·information·is
174 either·added·in·the·<code·class="inline">users.conf</code>·config·file·or·by·calling·the174 either·added·in·the·<code·class="inline">users.conf</code>·config·file·or·by·calling·the
175 <a·href="snmpm.html#register_user/4">register_user</a>·function·in·run-time.</p><p>Each·row·defines·a·<em>manager·user</em>·of·the·manager.</p><p>Each·entry·is·a·tuple·of·size·four:</p><p><code·class="inline">{UserId,·UserMod,·UserData,·DefaultAgentConfig}.</code></p><ul><li><code·class="inline">UserId</code>·is·any·term·(used·to·uniquely·identify·the·user).</li><li><code·class="inline">UserMod</code>·is·the·user·callback·module·(atom).</li><li><code·class="inline">UserData</code>·is·any·term·(passed·on·to·the·user·when·calling·the·<code·class="inline">UserMod</code>.</li><li><code·class="inline">DefaultAgentConfig</code>·is·a·list·of·default·agent·config's.·These·values·are175 <a·href="snmpm.html#register_user/4">register_user</a>·function·in·run-time.</p><p>Each·row·defines·a·<em>manager·user</em>·of·the·manager.</p><p>Each·entry·is·a·tuple·of·size·four:</p><p><code·class="inline">{UserId,·UserMod,·UserData,·DefaultAgentConfig}.</code></p><ul><li><code·class="inline">UserId</code>·is·any·term·(used·to·uniquely·identify·the·user).</li><li><code·class="inline">UserMod</code>·is·the·user·callback·module·(atom).</li><li><code·class="inline">UserData</code>·is·any·term·(passed·on·to·the·user·when·calling·the·<code·class="inline">UserMod</code>.</li><li><code·class="inline">DefaultAgentConfig</code>·is·a·list·of·default·agent·config's.·These·values·are
176 used·as·default·values·when·this·user·registers·agents.</li></ul><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ManagerDir</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">176 used·as·default·values·when·this·user·registers·agents.</li></ul><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ManagerDir</span><span·class="w">·········</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">
177 </span><span·class="n">UserID</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="2755411338-1">(</span><span·class="p"·data-group-id="2755411338-1">)</span><span·class="p">,</span><span·class="w">177 </span><span·class="n">UserID</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="8499178378-1">(</span><span·class="p"·data-group-id="8499178378-1">)</span><span·class="p">,</span><span·class="w">
178 </span><span·class="n">UserMod</span><span·class="w">············</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">my_manager_callback_mod</span><span·class="p">,</span><span·class="w">178 </span><span·class="n">UserMod</span><span·class="w">············</span><span·class="o">=</span><span·class="w">·</span><span·class="ss">my_manager_callback_mod</span><span·class="p">,</span><span·class="w">
179 </span><span·class="n">UserData</span><span·class="w">···········</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="2755411338-2">(</span><span·class="p"·data-group-id="2755411338-2">)</span><span·class="p">,</span><span·class="w">179 </span><span·class="n">UserData</span><span·class="w">···········</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">self</span><span·class="p"·data-group-id="8499178378-2">(</span><span·class="p"·data-group-id="8499178378-2">)</span><span·class="p">,</span><span·class="w">
180 </span><span·class="n">DefaultAgentConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2755411338-3">[</span><span·class="p"·data-group-id="2755411338-4">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">v1</span><span·class="p"·data-group-id="2755411338-4">}</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·547,·SHA:·32dcb1cff383c9aee3759ac1637aaa3659878eca5ddfbf140575550a0f63e10a·...·]8-3">]</span><span·class="p">,</span><span·class="w">180 </span><span·class="n">DefaultAgentConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8499178378-3">[</span><span·class="p"·data-group-id="8499178378-4">{</span><span·class="ss">version</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">v1</span><span·class="p"·data-group-id="8499178378-4">}</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·547,·SHA:·ac35d005336df8ef5c503d2a91cca4aa55be0c8ae2a3954c1b2599b0fd83181c·...·]8-3">]</span><span·class="p">,</span><span·class="w">
181 </span><span·class="n">UsersConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2755411338-7">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">users_entry</span><span·class="p"·data-group-id="2755411338-8">(</span><span·class="n">UserID</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserMod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserData</span><span·class="p">,</span><span·class="w">181 </span><span·class="n">UsersConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8499178378-7">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">users_entry</span><span·class="p"·data-group-id="8499178378-8">(</span><span·class="n">UserID</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserMod</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UserData</span><span·class="p">,</span><span·class="w">
182 ······································</span><span·class="n">DefaultAgentConfig</span><span·class="p"·data-group-id="2755411338-8">)</span><span·class="p"·data-group-id="2755411338-7">]</span><span·class="p">,</span><span·class="w">182 ······································</span><span·class="n">DefaultAgentConfig</span><span·class="p"·data-group-id="8499178378-8">)</span><span·class="p"·data-group-id="8499178378-7">]</span><span·class="p">,</span><span·class="w">
183 </span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">write_users_config</span><span·class="p"·data-group-id="2755411338-9">(</span><span·class="n">ManagerDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UsersConfig</span><span·class="p"·data-group-id="2755411338-9">)</span><span·class="p">,</span></code></pre><h2·id="agents"·class="section-heading">183 </span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">write_users_config</span><span·class="p"·data-group-id="8499178378-9">(</span><span·class="n">ManagerDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UsersConfig</span><span·class="p"·data-group-id="8499178378-9">)</span><span·class="p">,</span></code></pre><h2·id="agents"·class="section-heading">
184 ··<a·href="#agents"·class="hover-link">184 ··<a·href="#agents"·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">Agents</span>187 ··<span·class="text">Agents</span>
188 </h2>188 </h2>
189 <p>The·information·needed·to·handle·agents·should·be·stored·in·a·file·called189 <p>The·information·needed·to·handle·agents·should·be·stored·in·a·file·called
190 <code·class="inline">agents.conf</code>.·It·is·also·possible·to·add·agents·in·run-time·by·calling·the190 <code·class="inline">agents.conf</code>.·It·is·also·possible·to·add·agents·in·run-time·by·calling·the
Offset 194, 31 lines modifiedOffset 194, 31 lines modified
194 tuple·or·a·traditional·SNMP·integer·list·containing·port·number.·<code·class="inline">IpAddr</code>·is194 tuple·or·a·traditional·SNMP·integer·list·containing·port·number.·<code·class="inline">IpAddr</code>·is
195 either·a·regular·Erlang/OTP·<a·href="../../../../lib/kernel-10.2.3/doc/html/inet.html#t:ip_address/0"><code·class="inline">ip_address()</code></a>·or·a195 either·a·regular·Erlang/OTP·<a·href="../../../../lib/kernel-10.2.3/doc/html/inet.html#t:ip_address/0"><code·class="inline">ip_address()</code></a>·or·a
196 traditional·SNMP·integer·list·not·containing·port·number,·and·<code·class="inline">IpPort</code>·is·an196 traditional·SNMP·integer·list·not·containing·port·number,·and·<code·class="inline">IpPort</code>·is·an
197 integer.</li><li><code·class="inline">EngineID</code>·is·the·engine-id·of·the·agent·(string).</li><li><p><code·class="inline">Timeout</code>·is·re-transmission·timeout·(<code·class="inline">infinity</code>·|·integer).</p></li><li><code·class="inline">MaxMessageSize</code>·is·the·max·message·size·for·outgoing·messages·to·this·agent197 integer.</li><li><code·class="inline">EngineID</code>·is·the·engine-id·of·the·agent·(string).</li><li><p><code·class="inline">Timeout</code>·is·re-transmission·timeout·(<code·class="inline">infinity</code>·|·integer).</p></li><li><code·class="inline">MaxMessageSize</code>·is·the·max·message·size·for·outgoing·messages·to·this·agent
198 (integer).</li><li><p><code·class="inline">Version</code>·is·the·version·(v1·|·v2·|·v3).</p></li><li><p><code·class="inline">SecModel</code>·is·the·security·model·(any·|·v1·|·v2c·|·usm).</p></li><li><code·class="inline">SecName</code>·is·the·security·name·(string).</li><li><p><code·class="inline">SecLevel</code>·is·security·level·(noAuthNoPriv·|·authNoPriv·|·authPriv).</p></li></ul><p>Legacy·configurations·using·tuples·without·<code·class="inline">Domain</code>·element,·as·well·as·with·all198 (integer).</li><li><p><code·class="inline">Version</code>·is·the·version·(v1·|·v2·|·v3).</p></li><li><p><code·class="inline">SecModel</code>·is·the·security·model·(any·|·v1·|·v2c·|·usm).</p></li><li><code·class="inline">SecName</code>·is·the·security·name·(string).</li><li><p><code·class="inline">SecLevel</code>·is·security·level·(noAuthNoPriv·|·authNoPriv·|·authPriv).</p></li></ul><p>Legacy·configurations·using·tuples·without·<code·class="inline">Domain</code>·element,·as·well·as·with·all
199 <code·class="inline">TDomain</code>,·<code·class="inline">Ip</code>·and·<code·class="inline">Port</code>·elements·still·work.</p><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ManagerDir</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">199 <code·class="inline">TDomain</code>,·<code·class="inline">Ip</code>·and·<code·class="inline">Port</code>·elements·still·work.</p><p>And·this·is·a·code·(snippet)·example·of·how·to·generate·this·file·in·runtime:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ManagerDir</span><span·class="w">···</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">
200 </span><span·class="n">UserID</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">200 </span><span·class="n">UserID</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">
201 </span><span·class="n">AgentsConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8902022930-1">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">agents_entry</span><span·class="p"·data-group-id="8902022930-2">(</span><span·class="n">UserID</span><span·class="p">,</span><span·class="w">201 </span><span·class="n">AgentsConfig</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="4445512212-1">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">agents_entry</span><span·class="p"·data-group-id="4445512212-2">(</span><span·class="n">UserID</span><span·class="p">,</span><span·class="w">
202 ········································</span><span·class="s">&quot;target·1&quot;</span><span·class="p">,</span><span·class="w">202 ········································</span><span·class="s">&quot;target·1&quot;</span><span·class="p">,</span><span·class="w">
203 »       »       »       »       »       </span><span·class="s">&quot;FOOBAR&quot;</span><span·class="p">,</span><span·class="w">203 »       »       »       »       »       </span><span·class="s">&quot;FOOBAR&quot;</span><span·class="p">,</span><span·class="w">
204 »       »       »       »       »       </span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8902022930-3">{</span><span·class="p"·data-group-id="8902022930-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">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·136,·SHA:·0ce817ef63b4e5d85fc5fd649e5308f22a1dda278214642e7a46c30b79d3948d·...·]-3">}</span><span·class="p">,</span><span·class="w">204 »       »       »       »       »       </span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4445512212-3">{</span><span·class="p"·data-group-id="4445512212-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">,</span><span·class="mi">4</span><span·cla[·...·truncated·by·diffoscope;·len:·136,·SHA:·2725423f9681b2d2054b401fd565250b7fe77a4d1214d00872c3c78d783d684c·...·]-3">}</span><span·class="p">,</span><span·class="w">
205 »       »       »       »       »       </span><span·class="s">&quot;agent·Engine·1&quot;</span><span·class="w">205 »       »       »       »       »       </span><span·class="s">&quot;agent·Engine·1&quot;</span><span·class="w">
206 »       »       »       »       »       </span><span·class="mi">1500</span><span·class="p">,</span><span·class="w">206 »       »       »       »       »       </span><span·class="mi">1500</span><span·class="p">,</span><span·class="w">
207 »       »       »       »       »       </span><span·class="mi">484</span><span·class="p">.</span><span·class="w">207 »       »       »       »       »       </span><span·class="mi">484</span><span·class="p">.</span><span·class="w">
208 »       »       »       »       »       </span><span·class="ss">v1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">v1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;sec·name·1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">noAuthNoPriv</span><span·class="p"·data-group-id="8902022930-2">)</span><span·class="p">,</span><span·class="w">208 »       »       »       »       »       </span><span·class="ss">v1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">v1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;sec·name·1&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">noAuthNoPriv</span><span·class="p"·data-group-id="4445512212-2">)</span><span·class="p">,</span><span·class="w">
209 »       »       </span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">agents_entry</span><span·class="p"·data-group-id="8902022930-5">(</span><span·class="n">UserID</span><span·class="p">,</span><span·class="w">209 »       »       </span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">agents_entry</span><span·class="p"·data-group-id="4445512212-5">(</span><span·class="n">UserID</span><span·class="p">,</span><span·class="w">
210 ········································</span><span·class="s">&quot;target·2&quot;</span><span·class="p">,</span><span·class="w">210 ········································</span><span·class="s">&quot;target·2&quot;</span><span·class="p">,</span><span·class="w">
211 »       »       »       »       »       </span><span·class="s">&quot;FOOBAR&quot;</span><span·class="p">,</span><span·class="w">211 »       »       »       »       »       </span><span·class="s">&quot;FOOBAR&quot;</span><span·class="p">,</span><span·class="w">
212 »       »       »       »       »       </span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8902022930-6">{</span><span·class="p"·data-group-id="8902022930-7">{</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="mi">8</span><span·cla[·...·truncated·by·diffoscope;·len:·136,·SHA:·61454891bcc8733f49a4223149ed2cfb60e7b296edd9383d060e1d8bfb6a670c·...·]-6">}</span><span·class="p">,</span><span·class="w">212 »       »       »       »       »       </span><span·class="ss">transportDomainUdpIpv4</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4445512212-6">{</span><span·class="p"·data-group-id="4445512212-7">{</span><span·class="mi">5</span><span·class="p">,</span><span·class="mi">6</span><span·class="p">,</span><span·class="mi">7</span><span·class="p">,</span><span·class="mi">8</span><span·cla[·...·truncated·by·diffoscope;·len:·136,·SHA:·fabf97381e0e863e00d8d5fd27f4737c8a6a86fab0eda1e0c05bf111c4fae839·...·]-6">}</span><span·class="p">,</span><span·class="w">
213 »       »       »       »       »       </span><span·class="s">&quot;agent·Engine·2&quot;</span><span·class="w">213 »       »       »       »       »       </span><span·class="s">&quot;agent·Engine·2&quot;</span><span·class="w">
214 »       »       »       »       »       </span><span·class="mi">1500</span><span·class="p">,</span><span·class="w">214 »       »       »       »       »       </span><span·class="mi">1500</span><span·class="p">,</span><span·class="w">
215 »       »       »       »       »       </span><span·class="mi">1000</span><span·class="p">.</span><span·class="w">215 »       »       »       »       »       </span><span·class="mi">1000</span><span·class="p">.</span><span·class="w">
216 »       »       »       »       »       </span><span·class="ss">v1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">v1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;sec·name·2&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">noAuthNoPriv</span><span·class="p"·data-group-id="8902022930-5">)</span><span·class="p"·data-group-id="8902022930-1">]</span><span·class="p">,</span><span·class="w">216 »       »       »       »       »       </span><span·class="ss">v1</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">v1</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;sec·name·2&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">noAuthNoPriv</span><span·class="p"·data-group-id="4445512212-5">)</span><span·class="p"·data-group-id="4445512212-1">]</span><span·class="p">,</span><span·class="w">
217 </span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">write_agents_config</span><span·class="p"·data-group-id="8902022930-8">(</span><span·class="n">ManagerDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UsersConfig</span><span·class="p"·data-group-id="8902022930-8">)</span><span·class="p">,</span></code></pre><h2·id="security-data-for-usm"·class="section-heading">217 </span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">write_agents_config</span><span·class="p"·data-group-id="4445512212-8">(</span><span·class="n">ManagerDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UsersConfig</span><span·class="p"·data-group-id="4445512212-8">)</span><span·class="p">,</span></code></pre><h2·id="security-data-for-usm"·class="section-heading">
218 ··<a·href="#security-data-for-usm"·class="hover-link">218 ··<a·href="#security-data-for-usm"·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">Security·data·for·USM</span>221 ··<span·class="text">Security·data·for·USM</span>
222 </h2>222 </h2>
223 <p>The·information·about·Security·data·for·USM·should·be·stored·in·a·file·called223 <p>The·information·about·Security·data·for·USM·should·be·stored·in·a·file·called
224 <code·class="inline">usm.conf</code>,·which·must·be·present·if·the·manager·wishes·to·use·SNMPv3·when224 <code·class="inline">usm.conf</code>,·which·must·be·present·if·the·manager·wishes·to·use·SNMPv3·when
Offset 229, 21 lines modifiedOffset 229, 21 lines modified
229 <code·class="inline">usmHMAC192SH256AuthProtocol</code>,·<code·class="inline">usmHMAC256SHA384AuthProtocol</code>·or229 <code·class="inline">usmHMAC192SH256AuthProtocol</code>,·<code·class="inline">usmHMAC256SHA384AuthProtocol</code>·or
230 <code·class="inline">usmHMAC384SHA512AuthProtocol</code>.</p></li><li><p><code·class="inline">AuthKey</code>·is·a·list·(of·integer).·This·is·the·User's·secret·localized230 <code·class="inline">usmHMAC384SHA512AuthProtocol</code>.</p></li><li><p><code·class="inline">AuthKey</code>·is·a·list·(of·integer).·This·is·the·User's·secret·localized
231 authentication·key.·It·is·not·visible·in·the·MIB.·The·length·(number·of231 authentication·key.·It·is·not·visible·in·the·MIB.·The·length·(number·of
232 octets)·of·this·key·needs·to·be:</p><ul><li>16·if·<code·class="inline">usmHMACMD5AuthProtocol</code>.</li><li>20·if·<code·class="inline">usmHMACSHAAuthProtocol</code>.</li><li>28·if·<code·class="inline">usmHMAC128SHA224AuthProtocol</code>.</li><li>32·if·<code·class="inline">usmHMAC192SHA256AuthProtocol</code>.</li><li>48·if·<code·class="inline">usmHMAC256SHA384AuthProtocol</code>.</li><li>64·if·<code·class="inline">usmHMAC384SHA512AuthProtocol</code>.</li></ul></li><li><p><code·class="inline">PrivP</code>·is·a·<code·class="inline">usmNoPrivProtocol</code>,·<code·class="inline">usmDESPrivProtocol</code>·or232 octets)·of·this·key·needs·to·be:</p><ul><li>16·if·<code·class="inline">usmHMACMD5AuthProtocol</code>.</li><li>20·if·<code·class="inline">usmHMACSHAAuthProtocol</code>.</li><li>28·if·<code·class="inline">usmHMAC128SHA224AuthProtocol</code>.</li><li>32·if·<code·class="inline">usmHMAC192SHA256AuthProtocol</code>.</li><li>48·if·<code·class="inline">usmHMAC256SHA384AuthProtocol</code>.</li><li>64·if·<code·class="inline">usmHMAC384SHA512AuthProtocol</code>.</li></ul></li><li><p><code·class="inline">PrivP</code>·is·a·<code·class="inline">usmNoPrivProtocol</code>,·<code·class="inline">usmDESPrivProtocol</code>·or
233 <code·class="inline">usmAesCfb128Protocol</code>.</p></li><li><p><code·class="inline">PrivKey</code>·is·a·list·(of·integer).·This·is·the·User's·secret·localized233 <code·class="inline">usmAesCfb128Protocol</code>.</p></li><li><p><code·class="inline">PrivKey</code>·is·a·list·(of·integer).·This·is·the·User's·secret·localized
234 encryption·key.·It·is·not·visible·in·the·MIB.·The·length·of·this·key·needs·to234 encryption·key.·It·is·not·visible·in·the·MIB.·The·length·of·this·key·needs·to
235 be·16·if·<code·class="inline">usmDESPrivProtocol</code>·or·<code·class="inline">usmAesCfb128Protocol</code>·is·used.</p></li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ManagerDir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">235 be·16·if·<code·class="inline">usmDESPrivProtocol</code>·or·<code·class="inline">usmAesCfb128Protocol</code>·is·used.</p></li></ul><pre><code·class="makeup·erlang"·translate="no"><span·class="n">ManagerDir</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="s">&quot;/tmp&quot;</span><span·class="p">,</span><span·class="w">
236 </span><span·class="n">UsmConfig</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2214257320-1">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">usm_entry</span><span·class="p"·data-group-id="2214257320-2">(</span><span·class="s">&quot;engine&quot;</span><span·class="p">,</span><span·class="w">236 </span><span·class="n">UsmConfig</span><span·class="w">··</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3528492787-1">[</span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">usm_entry</span><span·class="p"·data-group-id="3528492787-2">(</span><span·class="s">&quot;engine&quot;</span><span·class="p">,</span><span·class="w">
237 ···································</span><span·class="s">&quot;user·1&quot;</span><span·class="p">,</span><span·class="w">237 ···································</span><span·class="s">&quot;user·1&quot;</span><span·class="p">,</span><span·class="w">
238 »       ···························</span><span·class="ss">usmNoAuthProtocol</span><span·class="p">,</span><span·class="w">238 »       ···························</span><span·class="ss">usmNoAuthProtocol</span><span·class="p">,</span><span·class="w">
239 »       ·»       »       »       ···</span><span·class="p"·data-group-id="2214257320-3">[</span><span·class="p"·data-group-id="2214257320-3">]</span><span·class="p">,</span><span·class="w">239 »       ·»       »       »       ···</span><span·class="p"·data-group-id="3528492787-3">[</span><span·class="p"·data-group-id="3528492787-3">]</span><span·class="p">,</span><span·class="w">
240 »       ·»       »       »       ···</span><span·class="ss">usmNoPrivProtocol</span><span·class="p">,</span><span·class="w">240 »       ·»       »       »       ···</span><span·class="ss">usmNoPrivProtocol</span><span·class="p">,</span><span·class="w">
241 »       ·»       »       »       ···</span><span·class="p"·data-group-id="2214257320-4">[</span><span·class="p"·data-group-id="2214257320-4">]</span><span·class="p"·data-group-id="2214257320-2">)</span><span·class="p"·data-group-id="2214257320-1">]</span><span·class="p">,</span><span·class="w">241 »       ·»       »       »       ···</span><span·class="p"·data-group-id="3528492787-4">[</span><span·class="p"·data-group-id="3528492787-4">]</span><span·class="p"·data-group-id="3528492787-2">)</span><span·class="p"·data-group-id="3528492787-1">]</span><span·class="p">,</span><span·class="w">
242 </span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">write_usm_config</span><span·class="p"·data-group-id="2214257320-5">(</span><span·class="n">ManagerDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UsmConfig</span><span·class="p"·data-group-id="2214257320-5">)</span><span·class="p">,</span></code></pre>242 </span><span·class="nc">snmpm_conf</span><span·class="p">:</span><span·class="nf">write_usm_config</span><span·class="p"·data-group-id="3528492787-5">(</span><span·class="n">ManagerDir</span><span·class="p">,</span><span·class="w">·</span><span·class="n">UsmConfig</span><span·class="p"·data-group-id="3528492787-5">)</span><span·class="p">,</span></code></pre>
243 </div>243 </div>
  
244 <div·class="bottom-actions"·id="bottom-actions">244 <div·class="bottom-actions"·id="bottom-actions">
245 ··<div·class="bottom-actions-item">245 ··<div·class="bottom-actions-item">
  
246 ······<a·href="snmp_agent_config_files.html"·class="bottom-actions-button"·rel="prev">246 ······<a·href="snmp_agent_config_files.html"·class="bottom-actions-button"·rel="prev">
247 ········<span·class="subheader">247 ········<span·class="subheader">
7.36 KB
./usr/share/doc/erlang-doc/html/lib/snmp-5.18.1/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="1916817721-1">(</span><span·class="s">&quot;RFC1213-MIB&quot;</span><span·class="p"·data-group-id="1916817721-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="7681313509-1">(</span><span·class="s">&quot;RFC1213-MIB&quot;</span><span·class="p"·data-group-id="7681313509-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="3617792329-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="0757933355-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="3617792329-2">[</span><span·class="p"·data-group-id="3617792329-3">{</span><span·class="ss">i</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3617792329-4">[</span><span·class="s">&quot;friend_mibs/&quot;</span><span·cl[·...·truncated·by·diffoscope;·len:·292,·SHA:·0f89d7375f6006b0d374e62edf984570002fd0dbf52ceeedced2df82bb7fe530·...·]-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="0757933355-2">[</span><span·class="p"·data-group-id="0757933355-3">{</span><span·class="ss">i</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0757933355-4">[</span><span·class="s">&quot;friend_mibs/&quot;</span><span·cl[·...·truncated·by·diffoscope;·len:·292,·SHA:·763d7aa55fedf7cde3bcd5fb85f9b33dc442a3867bdc958443a8f241a30b76c7·...·]-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="9608980294-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="1342025543-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="9608980294-2">[</span><span·class="p"·data-group-id="9608980294-3">{</span><span·class="ss">il</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9608980294-4">[</span><span·class="s">&quot;snmp/priv/mibs/&quot;</span><spa[·...·truncated·by·diffoscope;·len:·295,·SHA:·83d562acf931cbd120048f128f093e05235f5992d5432ad399f6f0cd12bf3bca·...·]-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="1342025543-2">[</span><span·class="p"·data-group-id="1342025543-3">{</span><span·class="ss">il</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1342025543-4">[</span><span·class="s">&quot;snmp/priv/mibs/&quot;</span><spa[·...·truncated·by·diffoscope;·len:·295,·SHA:·77b82c67696e353b122026fb6912cd6373be0d0079bf81c5c4fc68deaacf8157·...·]-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.1/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="1323388997-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="1323388997-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="5686426261-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="5686426261-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="1323388997-2">(</span><span·class="s">&quot;snmp/include/snmp_types.hrl&quot;</span><span·class="p"·data-group-id="1323388997-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="5686426261-2">(</span><span·class="s">&quot;snmp/include/snmp_types.hrl&quot;</span><span·class="p"·data-group-id="5686426261-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.1/doc/html/snmpa.html
    
Offset 3215, 16 lines modifiedOffset 3215, 16 lines modified
3215 ······················AgentName·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:atom/0">atom</a>(),3215 ······················AgentName·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:atom/0">atom</a>(),
3216 ······················Mib·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>(),3216 ······················Mib·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>(),
3217 ······················Reason·::·already_loaded·|·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>().</pre>3217 ······················Reason·::·already_loaded·|·<a·href="../../../../erts-15.2.3/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="3098415456-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="3098415456-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="9278271260-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="9278271260-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="3098415456-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:·34a3d227f8044bae9d35dc9a93985a7e90df0bd1bc6bad83a7339c4d81883d09·...·]-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="9278271260-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:·cbc820594b726959f7409fe0d4697f8ac30de8212f56f9edb4100d566b928a36·...·]-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.3/doc/html/erlang.html#t:term/0">term</a>().</pre>3326 ·······················InternalReason·::·already_loaded·|·<a·href="../../../../erts-15.2.3/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="3449950008-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="3449950008-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="3796440060-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="3796440060-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="3449950008-2">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3449950008-3">[</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·141,·SHA:·48e00a5664bd248963eb2fcaa49c2814059b3ebdd7b708ddc0fa78efb87375d8·...·]-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="3796440060-2">(</span><span·class="ss">snmp_master_agent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3796440060-3">[</span><span·class="n">Dir</span><span·class="w">·</span><span·class="o">++</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·141,·SHA:·4947a62b26965ef0ddd83029621ffa6fe544e3cdb425152d71d7df5db1e1c29e·...·]-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.3/doc/html/erlang.html#t:module/0">module</a>(),4297 ··········································Mod·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:module/0">module</a>(),
4298 ··········································Data·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>(),4298 ··········································Data·::·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0">term</a>().</pre>4300 ··········································Reason·::·<a·href="../../../../erts-15.2.3/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="2703477241-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:·442,·SHA:·9f4718a21818d13bcdd078d83e8f5daf752652a4855235f6881a1fe315164de4·...·]-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="2880462217-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:·442,·SHA:·8c56782dce4ea28d08d63c3606445a08ce3977d56c6283b71ff82bdeeb9f44d0·...·]-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="2703477241-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:·442,·SHA:·13813a2c693c589760b6e6a149ead10d679b08caaab2419d86ccd71001c1fb2f·...·]-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="2880462217-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:·442,·SHA:·2c9efac804842e81c226fad24a07ba87cd7b60b2032bf750578f8bfbb6007bf4·...·]-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.3/doc/html/erlang.html#t:pid/0">pid</a>(),4367 ·······························SubAgent·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:pid/0">pid</a>(),
4368 ·······························Reason·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>().</pre>4368 ·······························Reason·::·<a·href="../../../../erts-15.2.3/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="8184609956-1">(</span><span·class="n">MAPid</span><span·class="p">,</span><span·class="p"·data-group-id="8184609956-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="8184609956-2">]</span><span·class="p">,</span><span·class="n">SA1</span><span·class="p"·data-group-id="8184609956-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="8184609956-3">(</span><span·class="n">SA1</span><span·class="p">,</span><span·class="p"·data-group-id="8184609956-4">[<[·...·truncated·by·diffoscope;·len:·476,·SHA:·b40c745f6f123f27947ae988cd566b450d336b82cfce7bdca64ff747318a163b·...·]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="7254512629-1">(</span><span·class="n">MAPid</span>[·...·truncated·by·diffoscope;·len:·445,·SHA:·3b0fc7593262a6af97c138cef885aeed2b75c0d43104b4dc636f2df940aba2bb·...·]
 4373 </span><span·class="nc">snmp_agent</span><span·class="p">:</span><span·class="nf">register_subagent</span><span·class="p"·data-group-id="7254512629-3">(</span><span·class="n">SA1</span><span·class="p">,</span><span·class="p"·data-group-id="7254512629-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="7254512629-4">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">SA2</span><span·class="p"·data-group-id="7254512629-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="0175367512-1">[</span><span·class="nf">address</span><span·class="p"·data-group-id="0175367512-2">(</span><span·class="p"·data-group-id="0175367512-2">)</span><span·class="p"·data-group-id="0175367512-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="7075573890-1">[</span><span·class="nf">address</span><span·class="p"·data-group-id="7075573890-2">(</span><span·class="p"·data-group-id="7075573890-2">)</span><span·class="p"·data-group-id="7075573890-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="0175367512-3">(</span><span·class="p"·data-group-id="0175367512-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="7075573890-3">(</span><span·class="p"·data-group-id="7075573890-3">)</span><span·class="w">
4802 ········</span><span·class="nf">address</span><span·class="p"·data-group-id="0175367512-4">(</span><span·class="p"·data-group-id="0175367512-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="0175367512-5">(</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·232,·SHA:·eba3d5a7576be62f7a7ead2e386733d5f5bb3ac059d54014ae617927c7d5d863·...·]-6">)</span><span·class="w">4802 ········</span><span·class="nf">address</span><span·class="p"·data-group-id="7075573890-4">(</span><span·class="p"·data-group-id="7075573890-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="7075573890-5">(</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·232,·SHA:·4ae877ae48945bd8f11a7d41c1b874595e454ab36557ba7416f9a2151cc481c3·...·]-6">)</span><span·class="w">
4803 ········</span><span·class="nf">v1_address</span><span·class="p"·data-group-id="0175367512-7">(</span><span·class="p"·data-group-id="0175367512-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0175367512-8">{</span><span·class="n">TDomain</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·94,·SHA:·7be6a46c9d8ff9b84d51da306732a912b69f15d6a67040a8958d3281ad95ce45·...·]-8">}</span><span·class="w">4803 ········</span><span·class="nf">v1_address</span><span·class="p"·data-group-id="7075573890-7">(</span><span·class="p"·data-group-id="7075573890-7">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7075573890-8">{</span><span·class="n">TDomain</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·94,·SHA:·f06575e5828efa87ed5d90451d9f3fc84f90e04f974151e9ad503a04a624cad8·...·]-8">}</span><span·class="w">
4804 ········</span><span·class="nf">v3_address</span><span·class="p"·data-group-id="0175367512-9">(</span><span·class="p"·data-group-id="0175367512-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0175367512-10">{</span><span·class="p"·data-group-id="0175367512-11">{</span><[·...·truncated·by·diffoscope;·len:·283,·SHA:·acb0c80e3ea6f31dbf41bbb77514bdc3f77d735a070b421c29284b9007dfd7e8·...·]-10">}</span><span·class="w">4804 ········</span><span·class="nf">v3_address</span><span·class="p"·data-group-id="7075573890-9">(</span><span·class="p"·data-group-id="7075573890-9">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7075573890-10">{</span><span·class="p"·data-group-id="7075573890-11">{</span><[·...·truncated·by·diffoscope;·len:·283,·SHA:·d63d40ed1fe18a0b04fbc20c0029a43f95b5c648d61a24fbde2423349e159f64·...·]-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="0175367512-12">(</span><span·class="p"·data-group-id="0175367512-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="7075573890-12">(</span><span·class="p"·data-group-id="7075573890-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="0175367512-13">(</span><span·class="p"·data-group-id="0175367512-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="7075573890-13">(</span><span·class="p"·data-group-id="7075573890-13">)</span><span·class="w">
4807 ········</span><span·class="nf">tdomain</span><span·class="p"·data-group-id="0175367512-14">(</span><span·class="p"·data-group-id="0175367512-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="7075573890-14">(</span><span·class="p"·data-group-id="7075573890-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="0175367512-15">(</span><span·class="p"·data-group-id="0175367512-15">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0175367512-16">[</span><span·class="n">A1</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·378,·SHA:·364351a094c189e771c3b4321b1d7f3a869254acd0b2a453a33b8892eceb81cd·...·]-16">]</span><span·class="w">4809 ········</span><span·class="nf">taddress</span><span·class="p"·data-group-id="7075573890-15">(</span><span·class="p"·data-group-id="7075573890-15">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="7075573890-16">[</span><span·class="n">A1</span><span·class="p">,</span><spa[·...·truncated·by·diffoscope;·len:·378,·SHA:·2699187b18f86d9fe19413ee9152e115dc6f7976583f63494c0cf48e76596bd1·...·]-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="0175367512-17">(</span><span·class="p"·data-group-id="0175367512-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="7075573890-17">(</span><span·class="p"·data-group-id="7075573890-17">)</span><span·class="w">
4813 ········</span><span·class="nf">v3_msg_data</span><span·class="p"·data-group-id="0175367512-18">(</span><span·class="p"·data-group-id="0175367512-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="0175367512-19">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·23400a51b98384b1037a1c120225760e51723044fe63b1063d9ad48272112979·...·]-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="7075573890-18">(</span><span·class="p"·data-group-id="7075573890-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="7075573890-19">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·e092425359f26605d2d45200dd1613f9415020b2306e75dd9701e17347924b6c·...·]-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.1/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="5813674840-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="5813674840-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="1500490985-1">[</span><span·class="ss">options</span><span·class="p"·data-group-id="1500490985-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.1/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.3/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.3/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="4535836862-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="4535836862-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="2322829400-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="2322829400-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="4535836862-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="4535836862-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="2322829400-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="2322829400-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.3/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.3/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="7743480697-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="7743480697-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="0536714853-1">(</span><span·class="ss">my_app</span><span·class="p"·data-group-id="0536714853-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="7743480697-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="7743480697-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="0536714853-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="0536714853-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.8/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="9634078724-1">(</span><span·class="mi">22</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9634078724-2">[</span><span·class="p"·data-group-id="9634078724-3">{</span><span·class="ss">user</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·624,·SHA:·df9c70a286de2fcd373131a7a2a77ffd49c1ee53126a02a7b02ba18fc4e5e569·...·]0-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="6891771310-1">(</span><span·class="mi">22</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6891771310-2">[</span><span·class="p"·data-group-id="6891771310-3">{</span><span·class="ss">user</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·624,·SHA:·76e687049747da3d43307c024cba40e9a591df8e11bb81e630bcd149e0098eef·...·]0-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="8239969520-2">[</span><span·class="p"·data-group-id="8239969520-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="8239969520-3">}</span><span·class="p">,</span><span·class="w">146 ·</span><span·class="p"·data-group-id="6190411250-2">[</span><span·class="p"·data-group-id="6190411250-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="6190411250-3">}</span><span·class="p">,</span><span·class="w">
147 ··</span><span·class="p"·data-group-id="8239969520-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="8239969520-4">}</span><span·class="p">,</span><span·class="w">147 ··</span><span·class="p"·data-group-id="6190411250-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="6190411250-4">}</span><span·class="p">,</span><span·class="w">
148 ··</span><span·class="p"·data-group-id="8239969520-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8239969520-6">[</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">148 ··</span><span·class="p"·data-group-id="6190411250-5">{</span><span·class="ss">modules</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6190411250-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="8239969520-6">]</span><span·class="p"·data-group-id="8239969520-5">}</span><span·class="p">,</span><span·class="w">150 ·········</span><span·class="ss">ssh_xfer</span><span·class="p"·data-group-id="6190411250-6">]</span><span·class="p"·data-group-id="6190411250-5">}</span><span·class="p">,</span><span·class="w">
151 ··</span><span·class="p"·data-group-id="8239969520-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8239969520-8">[</span><span·class="p"·data-group-id="8239969520-8">]</span><span·class="p"·data-group-id="8239969520-7">}</span><span·class="p">,</span><span·class="w">151 ··</span><span·class="p"·data-group-id="6190411250-7">{</span><span·class="ss">registered</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6190411250-8">[</span><span·class="p"·data-group-id="6190411250-8">]</span><span·class="p"·data-group-id="6190411250-7">}</span><span·class="p">,</span><span·class="w">
152 ··</span><span·class="p"·data-group-id="8239969520-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8239969520-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·266,·SHA:·2de072874a3f571af14da622f8067ef80b6023c03fb01acca5d50e899caa2030·...·]0-9">}</span><span·class="p">,</span><span·class="w">152 ··</span><span·class="p"·data-group-id="6190411250-9">{</span><span·class="ss">applications</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6190411250-10">[</span><span·class="ss">kernel</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">s[·...·truncated·by·diffoscope;·len:·266,·SHA:·c72a8a778252a0172780ce86ae0170203d5fd1aecfd4041a53d46d267c76478e·...·]0-9">}</span><span·class="p">,</span><span·class="w">
153 ··</span><span·class="p"·data-group-id="8239969520-11">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8239969520-12">[</span><span·class="p"·data-group-id="8239969520-13">{</span><span·class="ss">user</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·128,·SHA:·1b5aca5c21745fec2ae51ca0e2fc2eb7c1ecc6d7691933af85f56b8bfa427268·...·]0-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="6190411250-11">{</span><span·class="ss">env</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6190411250-12">[</span><span·class="p"·data-group-id="6190411250-13">{</span><span·class="ss">user</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·128,·SHA:·98d3efc2df713a422d5fd18273a90e69f480c18da1cb1a9c9644c0dbac92c0e2·...·]0-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="8239969520-14">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8239969520-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:·177,·SHA:·7f6cb98d16c669185d1c51c69b17dd3254fee36a9d243bf3ffa835b7034a22e1·...·]0-14">}</span><span·class="p">,</span><span·class="w">154 ··</span><span·class="p"·data-group-id="6190411250-14">{</span><span·class="ss">mod</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6190411250-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:·177,·SHA:·4681703fe5fd68854a1cb1cee3a727e57aa8559de14bb20ef9a061d61f6fb9cf·...·]0-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="3627871338-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="7080801576-1">[</span><span·class="w">
156 </span><span·class="p"·data-group-id="3627871338-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3627871338-3">[</span><span·class="p"·data-group-id="3627871338-4">{</span><span·class="ss">user</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·208,·SHA:·88b1c48cf89a4a509e75c6b2e1808dd26e09b1abc801b01222db235fb71a8522·...·]-2">}</span><span·class="w">156 </span><span·class="p"·data-group-id="7080801576-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7080801576-3">[</span><span·class="p"·data-group-id="7080801576-4">{</span><span·class="ss">user</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·208,·SHA:·4c3164dee68683bd8028975371455afea506a82f0b035e712a7af24b9e7ee2be·...·]-2">}</span><span·class="w">
157 </span><span·class="p"·data-group-id="3627871338-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="7080801576-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="6187787824-1">[</span><span·class="w">158 this·way:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8126281767-1">[</span><span·class="w">
159 </span><span·class="p"·data-group-id="6187787824-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6187787824-3">[</span><span·class="p"·data-group-id="6187787824-4">{</span><span·class="ss">server_options</span><span·class="p"[·...·truncated·by·diffoscope;·len:·376,·SHA:·1ccd6454eae9af0a698d4617b671747824bc0822f1950973b2174f368082fd06·...·]-4">}</span><span·class="p">,</span><span·class="w">159 </span><span·class="p"·data-group-id="8126281767-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8126281767-3">[</span><span·class="p"·data-group-id="8126281767-4">{</span><span·class="ss">server_options</span><span·class="p"[·...·truncated·by·diffoscope;·len:·376,·SHA:·3bca2a27fc2607bf045cc6312734fb4371d9e71912fc26f31946990f9e0e885b·...·]-4">}</span><span·class="p">,</span><span·class="w">
160 ·······</span><span·class="p"·data-group-id="6187787824-7">{</span><span·class="ss">client_options</span><span·class="p">,</span><span·class="p"·data-group-id="6187787824-8">[</span><span·class="p"·data-group-id="6187787824-9">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·195,·SHA:·2f15af38e5478d1955545b04c5ae84e016057113f268ff6373eeaeb62ae264b2·...·]-7">}</span><span·class="w">160 ·······</span><span·class="p"·data-group-id="8126281767-7">{</span><span·class="ss">client_options</span><span·class="p">,</span><span·class="p"·data-group-id="8126281767-8">[</span><span·class="p"·data-group-id="8126281767-9">{</span><span·class="ss">user</span><span·class="p">,</span><span·class="w[·...·truncated·by·diffoscope;·len:·195,·SHA:·e47a8213e7fc95ed44299c14b79a984ab913ea17be9b8838a606de494f3c8aba·...·]-7">}</span><span·class="w">
161 </span><span·class="p"·data-group-id="6187787824-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="8126281767-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.3/doc/html/config.html">OTP·Configuration·Parameters</a></li><li>Level·2:·Options·in·the·<a·href="../../../../lib/kernel-10.2.3/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.3/doc/html/config.html">OTP·Configuration·Parameters</a></li><li>Level·2:·Options·in·the·<a·href="../../../../lib/kernel-10.2.3/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="3280561260-1">(</span><span·class="p"·data-group-id="3280561260-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="4191762578-1">(</span><span·class="p"·data-group-id="4191762578-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="3280561260-2">(</span><span·class="p"·data-group-id="3280561260-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="4191762578-2">(</span><span·class="p"·data-group-id="4191762578-2">)</span><span·class="p">.</span><span·class="w">
235 </span><span·class="p"·data-group-id="3280561260-3">[</span><span·class="p"·data-group-id="3280561260-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="3280561260-5">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·b69475ee113fce469daf2ce93c1423ebf38b3654752c5c31b83d1d997641a892·...·]-4">}</span><span·class="p">,</span><span·class="w">235 </span><span·class="p"·data-group-id="4191762578-3">[</span><span·class="p"·data-group-id="4191762578-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="4191762578-5">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·2096b69d29ec36c9523c3d51e24cae03cfc16df18aadec58f6d1a9906821c98d·...·]-4">}</span><span·class="p">,</span><span·class="w">
236 ·</span><span·class="p"·data-group-id="3280561260-6">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="3280561260-7">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p"·data-group-id="3280561260-7">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·7f75d95339579d3fd6357e0717c36ebc4737bbb7946c1dadbacecd9e0e350b86·...·]-6">}</span><span·class="p">,</span><span·class="w">236 ·</span><span·class="p"·data-group-id="4191762578-6">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="4191762578-7">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p"·data-group-id="4191762578-7">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·80e5b5ae7b939233668cd216c4d0d5e05607d30a2d8e70e44dedd40819ebed94·...·]-6">}</span><span·class="p">,</span><span·class="w">
237 ·</span><span·class="p"·data-group-id="3280561260-8">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="3280561260-9">[</span><span·class="p"·data-group-id="3280561260-10">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·181,·SHA:·7868becb094c104f55b98aa44e63915ba36aaf2abf4d2e0b27100017cc14d488·...·]-10">}</span><span·class="p">,</span><span·class="w">237 ·</span><span·class="p"·data-group-id="4191762578-8">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="4191762578-9">[</span><span·class="p"·data-group-id="4191762578-10">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class=[·...·truncated·by·diffoscope;·len:·181,·SHA:·f973a3855574fd5b93f090b7e9a372c60f2c09caa2b78922ed87426db25b4f94·...·]-10">}</span><span·class="p">,</span><span·class="w">
238 ··········</span><span·class="p"·data-group-id="3280561260-12">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="3280561260-13">[</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p"·data-group-id="3280561260-13">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·128,·SHA:·0d93caf6e84951f6ba9c017840f363111c655e8388c6ec21baee0dfc00e39c5d·...·]-8">}</span><span·class="p">,</span><span·class="w">238 ··········</span><span·class="p"·data-group-id="4191762578-12">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4191762578-13">[</span><span·class="ss">&#39;aes192-ctr&#39;</span><span·class="p"·data-group-id="4191762578-13">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·128,·SHA:·344494cdd17a83ee72569345bb5add98260d1bb90d33a2bb582c68478e62c247·...·]-8">}</span><span·class="p">,</span><span·class="w">
239 ·</span><span·class="p"·data-group-id="3280561260-14">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="3280561260-15">[</span><span·class="p"·data-group-id="3280561260-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·a0dee8b39b4469f3a1026d927132a1ecc08cecc5475043f0356a05ea92885ed1·...·]-16">}</span><span·class="p">,</span><span·class="w">239 ·</span><span·class="p"·data-group-id="4191762578-14">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="4191762578-15">[</span><span·class="p"·data-group-id="4191762578-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·179,·SHA:·8f1137e4df1369952a7cbb02e17d00923589e62cb3ff2f07d73a251370e225ee·...·]-16">}</span><span·class="p">,</span><span·class="w">
240 ·······</span><span·class="p"·data-group-id="3280561260-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="3280561260-19">[</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="3280561260-19">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·128,·SHA:·ef576cd08220fc9a0516e5ba2c7180f6a76d5b2046ed38a40a136689b7bb3662·...·]-14">}</span><span·class="p">,</span><span·class="w">240 ·······</span><span·class="p"·data-group-id="4191762578-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4191762578-19">[</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="4191762578-19">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·128,·SHA:·0e5d55de20a3cd2ce706251f5f3c3ae2a21ada335408ab5c375b17cb46cc3e48·...·]-14">}</span><span·class="p">,</span><span·class="w">
241 ·</span><span·class="p"·data-group-id="3280561260-20">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="3280561260-21">[</span><span·class="p"·data-group-id="3280561260-22">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="p"·data-group-id="3280561260-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="3280561260-23">]</span><span·class="p"·data-group-id="3280561260-22">}</span><span·class="p">,</span><span·class="w"> 
242 ···············</span><span·class="p"·data-group-id="3280561260-24">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="3280561260-25">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="s[·...·truncated·by·diffoscope;·len:·350,·SHA:·dba838e8a9325d1969653df394e624b66a98a6e145f84995c420b6209977f436·...·]</span><span·class="w">241 ·</span><span·class="p"·data-group-id="4191762578-20">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="4191762578-21">[</span><span·class="p"·data-group-id="4191762578-22">{</span><span·class="ss">client2serv[·...·truncated·by·diffoscope;·len:·366,·SHA:·678cf177b81f0a502cf4e20e19eb65f5a118a8ed59da048b90981dd2cd807e98·...·]</span><span·class="w">
 242 ···············</span><span·class="p"·data-group-id="4191762578-24">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4191762578-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="4191762578-25">]</span><span·class="p"·data-group-id="4191762578-24">}</span><span·class="p"·data-group-id="4191762578-21">]</span><span·class="p"·data-group-id="4191762578-20">}</span><span·class="p"·data-group-id="4191762578-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="5850335929-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="5850335929-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:·dc0f59f4417e12dd3cfd94cab13c751dfb54e3916d68facc49086144d9252e04·...·]-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="0291935748-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="0291935748-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:·2f7759d1ce25225f465f9329999d1c9b469be3ec3bf1ff3dc30fe702d5fbaf63·...·]-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="5850335929-3">[</span><span·class="p"·data-group-id="5850335929-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">256 ························</span><span·class="p"·data-group-id="0291935748-3">[</span><span·class="p"·data-group-id="0291935748-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">
257 ·································</span><span·class="p"·data-group-id="5850335929-5">[</span><span·class="p"·data-group-id="5850335929-6">{</span><span·class="ss">rm</span><span·class="p">,</span><span·class="w">257 ·································</span><span·class="p"·data-group-id="0291935748-5">[</span><span·class="p"·data-group-id="0291935748-6">{</span><span·class="ss">rm</span><span·class="p">,</span><span·class="w">
258 ·····································</span><span·class="p"·data-group-id="5850335929-7">[</span><span·class="w">·</span><span·class="p"·data-group-id="5850335929-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="5850335929-9">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><[·...·truncated·by·diffoscope;·len:·170,·SHA:·674ffc3171b7bc999d3b0295b8f204e8d6f506ccdbcfbd318c33f537e1693390·...·]-7">]</span><span·class="w">258 ·····································</span><span·class="p"·data-group-id="0291935748-7">[</span><span·class="w">·</span><span·class="p"·data-group-id="0291935748-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="0291935748-9">[</span><span·class="ss">&#39;ecdh-sha2-nistp384&#39;</span><[·...·truncated·by·diffoscope;·len:·170,·SHA:·47bb65cf71ecc0da5e694f47433a9b111add551b19693d8d4d3b6b61ac089dbb·...·]-7">]</span><span·class="w">
259 »       »       »       »       ··</span><span·class="p"·data-group-id="5850335929-6">}</span><span·class="p">,</span><span·class="w">259 »       »       »       »       ··</span><span·class="p"·data-group-id="0291935748-6">}</span><span·class="p">,</span><span·class="w">
260 ··································</span><span·class="p"·data-group-id="5850335929-10">{</span><span·class="ss">append</span><span·class="p">,</span><span·class="w">260 ··································</span><span·class="p"·data-group-id="0291935748-10">{</span><span·class="ss">append</span><span·class="p">,</span><span·class="w">
261 »       »       »       ·············</span><span·class="p"·data-group-id="5850335929-11">[</span><span·class="w">·</span><span·class="p"·data-group-id="5850335929-12">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="5850335929-13">[</span><span·class="ss">&#39;curve25519-sha256@libssh.org[·...·truncated·by·diffoscope;·len:·185,·SHA:·90d13b2aa1406837be0c80ae41739c0d4cda1b77d2b8810138cc60497ad20acd·...·]-11">]</span><span·class="w">261 »       »       »       ·············</span><span·class="p"·data-group-id="0291935748-11">[</span><span·class="w">·</span><span·class="p"·data-group-id="0291935748-12">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="0291935748-13">[</span><span·class="ss">&#39;curve25519-sha256@libssh.org[·...·truncated·by·diffoscope;·len:·185,·SHA:·26145f0de683e52bfc63244da4005ebf9da28b71fb437b8b69b87cb41fb30694·...·]-11">]</span><span·class="w">
262 »       »       »       »       ··</span><span·class="p"·data-group-id="5850335929-10">}</span><span·class="w">262 »       »       »       »       ··</span><span·class="p"·data-group-id="0291935748-10">}</span><span·class="w">
263 »       »       »       »       ·</span><span·class="p"·data-group-id="5850335929-5">]</span><span·class="w">263 »       »       »       »       ·</span><span·class="p"·data-group-id="0291935748-5">]</span><span·class="w">
264 »       ·················</span><span·class="p"·data-group-id="5850335929-4">}</span><span·class="w">264 »       ·················</span><span·class="p"·data-group-id="0291935748-4">}</span><span·class="w">
265 ························</span><span·class="p"·data-group-id="5850335929-3">]</span><span·class="p"·data-group-id="5850335929-2">)</span><span·class="p">.</span><span·class="w">265 ························</span><span·class="p"·data-group-id="0291935748-3">]</span><span·class="p"·data-group-id="0291935748-2">)</span><span·class="p">.</span><span·class="w">
266 </span><span·class="p"·data-group-id="5850335929-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="5850335929-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><spa[·...·truncated·by·diffoscope;·len:·311,·SHA:·e60b749b7dd5284d82b039266e114d5253aa6596296e336b89d6a00beaaceee2·...·]266 </span><span·class="p"·data-group-id="0291935748-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="[·...·truncated·by·diffoscope;·len:·136,·SHA:·27b79586b733e320100c24ff289f9519f6641e92a31e8848393a898660ff7833·...·]
 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="8469150907-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="8469150907-1">)</span><span·class="p">.</span><span·class="w">
268 </span><span·class="p"·data-group-id="8054538926-2">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="8054538926-3">[</span><span·class="p"·data-group-id="8054538926-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss">&#3[·...·truncated·by·diffoscope;·len:·83,·SHA:·2ee9a1b89d40dc1d48c95de242dc3bbd5ca302255967419ad08c9ae2c444b7d4·...·]-4">}</span><span·class="p">,</span><span·class="w">268 </span><span·class="p"·data-group-id="8469150907-2">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="8469150907-3">[</span><span·class="p"·data-group-id="8469150907-4">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss">&#3[·...·truncated·by·diffoscope;·len:·83,·SHA:·cc3031ed6c2e43ecaadd0b18a3ee856f48911c128febeac3da65b06bb38a1c66·...·]-4">}</span><span·class="p">,</span><span·class="w">
269 ·············</span><span·class="p"·data-group-id="8054538926-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="8054538926-5">}</span><span·class="p">,</span><span·class="w">269 ·············</span><span·class="p"·data-group-id="8469150907-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="8469150907-5">}</span><span·class="p">,</span><span·class="w">
270 ·············</span><span·class="p"·data-group-id="8054538926-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="8054538926-6">}</span><span·class="p">,</span><span·class="w">270 ·············</span><span·class="p"·data-group-id="8469150907-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="8469150907-6">}</span><span·class="p">,</span><span·class="w">
271 ·············</span><span·class="p"·data-group-id="8054538926-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="8054538926-7">}</span><span·class="p">,</span><span·class="w">271 ·············</span><span·class="p"·data-group-id="8469150907-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="8469150907-7">}</span><span·class="p">,</span><span·class="w">
272 ·············</span><span·class="p"·data-group-id="8054538926-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="8054538926-8">}</span><span·class="p">,</span><span·class="w">272 ·············</span><span·class="p"·data-group-id="8469150907-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="8469150907-8">}</span><span·class="p">,</span><span·class="w">
273 ·············</span><span·class="p"·data-group-id="8054538926-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="8054538926-9">}</span><span·class="p">,</span><span·class="w">273 ·············</span><span·class="p"·data-group-id="8469150907-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="8469150907-9">}</span><span·class="p">,</span><span·class="w">
274 ·············</span><span·class="p"·data-group-id="8054538926-10">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="8054538926-10">}</span><span·class="p">,</span><span·class="w">274 ·············</span><span·class="p"·data-group-id="8469150907-10">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="8469150907-10">}</span><span·class="p">,</span><span·class="w">
275 ·············</span><span·class="p"·data-group-id="8054538926-11">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="8054538926-11">}</span><span·class="p">,</span><span·class="w">275 ·············</span><span·class="p"·data-group-id="8469150907-11">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="8469150907-11">}</span><span·class="p">,</span><span·class="w">
276 ·············</span><span·class="p"·data-group-id="8054538926-12">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="8054538926-12">}</span><span·class="p">,</span><span·class="w">276 ·············</span><span·class="p"·data-group-id="8469150907-12">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="8469150907-12">}</span><span·class="p">,</span><span·class="w">
277 ·············</span><span·class="p"·data-group-id="8054538926-13">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="8054538926-13">}</span><span·class="p"·data-group-id="8054538926-3">]</span><span·class="p"·data-group-id="8054538[·...·truncated·by·diffoscope;·len:·3,·SHA:·85e36899399df701301f6741ffab57962a14326584b6f082ae0e87d90e492fd4·...·]-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="8469150907-13">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="8469150907-13">}</span><span·class="p"·data-group-id="8469150907-3">]</span><span·class="p"·data-group-id="8469150[·...·truncated·by·diffoscope;·len:·3,·SHA:·c8c9cad7b920b50f713830b8dc55f59fffbbad98335d9f30e0bca8fab5dfeedd·...·]-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="0108642820-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="5812362448-1">[</span><span·class="w">
283 ·</span><span·class="p"·data-group-id="0108642820-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0108642820-3">[</span><span·class="p"·data-group-id="0108642820-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">283 ·</span><span·class="p"·data-group-id="5812362448-2">{</span><span·class="ss">ssh</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5812362448-3">[</span><span·class="p"·data-group-id="5812362448-4">{</span><span·class="ss">modify_algorithms</span><span·class="p">,</span><span·class="w">
284 ·········</span><span·class="p"·data-group-id="0108642820-5">[</span><span·class="w">·</span><span·class="p"·data-group-id="0108642820-6">{</span><span·class="ss">prepend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0108642820-7">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·481,·SHA:·0e2737b5fcd0edeff3709ea8d4b84e7c238df99b7cce81eea30bd42f476746e5·...·]-5">]</span><span·class="w">284 ·········</span><span·class="p"·data-group-id="5812362448-5">[</span><span·class="w">·</span><span·class="p"·data-group-id="5812362448-6">{</span><span·class="ss">prepend</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5812362448-7">[</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·481,·SHA:·d48e55b8adde80daf3e7bc8ef78c42e1a9484c062aedd77f1c2f2a4fc0481b0b·...·]-5">]</span><span·class="w">
285 ········</span><span·class="p"·data-group-id="0108642820-4">}</span><span·class="p"·data-group-id="0108642820-3">]</span><span·class="p"·data-group-id="0108642820-2">}</span><span·class="w">285 ········</span><span·class="p"·data-group-id="5812362448-4">}</span><span·class="p"·data-group-id="5812362448-3">]</span><span·class="p"·data-group-id="5812362448-2">}</span><span·class="w">
286 </span><span·class="p"·data-group-id="0108642820-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="5812362448-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="7658838060-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="7658838060-2">(</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·6fb6e5083ba23b00976e8ce01f636583c89374a874b977110bf059125b8eca5a·...·]-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="8524161454-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="8524161454-2">(</span><span·[·...·truncated·by·diffoscope;·len:·88,·SHA:·8a3d0c3c698d381c91c235cef8f547cf1f96e6369250dc6515a92779eb54439b·...·]-1">)</span><span·class="p">.</span><span·class="w">
288 </span><span·class="p"·data-group-id="7658838060-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="8524161454-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="7658838060-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="8524161454-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="7935598030-1">(</span><span·class="p"·data-group-id="7935598030-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="7709054699-1">(</span><span·class="p"·data-group-id="7709054699-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="7935598030-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="7935598030-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh</span><span·cla[·...·truncated·by·diffoscope;·len:·87,·SHA:·c47fd905262d41835c3e9f6a25a261ac1541240614a90cc2a8cf960ee098af9e·...·]-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="7709054699-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="7709054699-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">ssh</span><span·cla[·...·truncated·by·diffoscope;·len:·87,·SHA:·43b563c376d85e3bb5719a819ede8117d85d4d6c3bbe6b4e666f4021027b6206·...·]-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="7935598030-4">[</span><span·class="p"·data-group-id="7935598030-5">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">294 ························</span><span·class="p"·data-group-id="7709054699-4">[</span><span·class="p"·data-group-id="7709054699-5">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
295 ·························</span><span·class="p"·data-group-id="7935598030-6">[</span><span·class="p"·data-group-id="7935598030-7">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7935598030-8">[</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;<[·...·truncated·by·diffoscope;·len:·100,·SHA:·2faa634d91ae042dfd956b8f99b2bd3dc9e19d824631c050a2a55503a1aedd1e·...·]-7">}</span><span·class="p">,</span><span·class="w">295 ·························</span><span·class="p"·data-group-id="7709054699-6">[</span><span·class="p"·data-group-id="7709054699-7">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7709054699-8">[</span><span·class="ss">&#39;ecdsa-sha2-nistp256&#39;<[·...·truncated·by·diffoscope;·len:·100,·SHA:·8544da1c10cf30dd69828285a1d9de1bca1cf73cea2644f8c56e612513051bed·...·]-7">}</span><span·class="p">,</span><span·class="w">
296 »       »       »       ··</span><span·class="p"·data-group-id="7935598030-9">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7935598030-10">[</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p"·data-group-id="7935598030-10">]</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·bfd483cdfcb830f73e1f9cd7b43c52926992fb52028c254e892fdc746c54facb·...·]-9">}</span><span·class="p">,</span><span·class="w">296 »       »       »       ··</span><span·class="p"·data-group-id="7709054699-9">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7709054699-10">[</span><span·class="ss">&#39;ecdh-sha2-nistp256&#39;</span><span·class="p"·data-group-id="7709054699-10">]</span>[·...·truncated·by·diffoscope;·len:·41,·SHA:·56b9dcb19ed1bfa5fb292a8528599e2b57d801a2ca5e19ffcbacde0fed56c773·...·]-9">}</span><span·class="p">,</span><span·class="w">
297 »       »       ··········</span><span·class="p"·data-group-id="7935598030-11">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7935598030-12">[</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="79355980[·...·truncated·by·diffoscope;·len:·56,·SHA:·444afcd00fbd7827454966d21d689622c5bbe37c7fca9b4871908665fa965cc4·...·]-11">}</span><span·class="p">,</span><span·class="w">297 »       »       ··········</span><span·class="p"·data-group-id="7709054699-11">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7709054699-12">[</span><span·class="ss">&#39;chacha20-poly1305@openssh.com&#39;</span><span·class="p"·data-group-id="77090546[·...·truncated·by·diffoscope;·len:·56,·SHA:·5e9f47828144f98dcbf50aa7c44533224c171ec146a2ec174e6aae367d67e9b8·...·]-11">}</span><span·class="p">,</span><span·class="w">
298 »       »       »       ··</span><span·class="p"·data-group-id="7935598030-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7935598030-14">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p"·data-group-id="7935598030-14">]</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·20a4c7c6ebceaae532bbf7d66a7a769ccbcb22294ed1f5f5c97e5c8dcaabcc77·...·]-13">}</span><span·class="p">,</span><span·class="w">298 »       »       »       ··</span><span·class="p"·data-group-id="7709054699-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7709054699-14">[</span><span·class="ss">&#39;hmac-sha2-256&#39;</span><span·class="p"·data-group-id="7709054699-14">]</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·6227b659258899c6ffece10975032d38fdea0a97b883531a920afe8cef9df0da·...·]-13">}</span><span·class="p">,</span><span·class="w">
299 »       »       »       ··</span><span·class="p"·data-group-id="7935598030-15">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7935598030-16">[</span><span·class="ss">none</span><span·class="p"·data-group-id="7935598030-16">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·54b65dc80cbac913dfe0cb2f9a78b160979118b7e27e3e3fdca5e349d5da92a4·...·]-15">}</span><span·class="w">299 »       »       »       ··</span><span·class="p"·data-group-id="7709054699-15">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7709054699-16">[</span><span·class="ss">none</span><span·class="p"·data-group-id="7709054699-16">]</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·df30b4d88fba852d506f822d5e740000e133d9aaeb05065b3f7ad9eee89046bd·...·]-15">}</span><span·class="w">
300 »       »       »       ··</span><span·class="p"·data-group-id="7935598030-6">]</span><span·class="p"·data-group-id="7935598030-5">}</span><span·class="w">300 »       »       »       ··</span><span·class="p"·data-group-id="7709054699-6">]</span><span·class="p"·data-group-id="7709054699-5">}</span><span·class="w">
301 »       »       »       ·</span><span·class="p"·data-group-id="7935598030-4">]</span><span·class="p"·data-group-id="7935598030-3">)</span><span·class="p">.</span><span·class="w">301 »       »       »       ·</span><span·class="p"·data-group-id="7709054699-4">]</span><span·class="p"·data-group-id="7709054699-3">)</span><span·class="p">.</span><span·class="w">
302 </span><span·class="p"·data-group-id="7935598030-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="7935598030-17">}</span><span·class="gp·unselectable">302 </span><span·class="p"·data-group-id="7709054699-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="7709054699-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="7935598030-18">(</span><span·class="n">C</span><span·class="p">,</span><span·class="ss">algorithms</span><span·class="p"·data-group-id="7935598030-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="7709054699-18">(</span><span·class="n">C</span><span·class="p">,</span><span·class="ss">algorithms</span><span·class="p"·data-group-id="7709054699-18">)</span><span·class="p">.</span><span·class="w">
304 </span><span·class="p"·data-group-id="7935598030-19">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="7935598030-20">[</span><span·class="p"·data-group-id="7935598030-21">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·76,·SHA:·059a7445a9cbd779de8307fab71a5cc6a9b67827eacaf3975c86a17fb1f21763·...·]-21">}</span><span·class="p">,</span><span·class="w">304 </span><span·class="p"·data-group-id="7709054699-19">{</span><span·class="ss">algorithms</span><span·class="p">,</span><span·class="p"·data-group-id="7709054699-20">[</span><span·class="p"·data-group-id="7709054699-21">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·76,·SHA:·96b67977eb1978b3b2f857f58b06d87d3cd48e9fb9bcb6c7d32670d3c1a81b53·...·]-21">}</span><span·class="p">,</span><span·class="w">
305 ·············</span><span·class="p"·data-group-id="7935598030-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="7935598030-22">}</span><span·class="p">,</span><span·class="w">305 ·············</span><span·class="p"·data-group-id="7709054699-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="7709054699-22">}</span><span·class="p">,</span><span·class="w">
306 ·············</span><span·class="p"·data-group-id="7935598030-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="7935598030-23">}</span><span·class="p">,</span><span·class="w">306 ·············</span><span·class="p"·data-group-id="7709054699-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="7709054699-23">}</span><span·class="p">,</span><span·class="w">
307 ·············</span><span·class="p"·data-group-id="7935598030-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="7935598030-24">}</span><span·class="p">,</span><span·class="w">307 ·············</span><span·class="p"·data-group-id="7709054699-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="7709054699-24">}</span><span·class="p">,</span><span·class="w">
308 ·············</span><span·class="p"·data-group-id="7935598030-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="7935598030-25">}</span><span·class="p">,</span><span·class="w">308 ·············</span><span·class="p"·data-group-id="7709054699-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="7709054699-25">}</span><span·class="p">,</span><span·class="w">
309 ·············</span><span·class="p"·data-group-id="7935598030-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="7935598030-26">}</span><span·class="p">,</span><span·class="w">309 ·············</span><span·class="p"·data-group-id="7709054699-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="7709054699-26">}</span><span·class="p">,</span><span·class="w">
310 ·············</span><span·class="p"·data-group-id="7935598030-27">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="7935598030-27">}</span><span·class="p">,</span><span·class="w">310 ·············</span><span·class="p"·data-group-id="7709054699-27">{</span><span·class="ss">compress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="7709054699-27">}</span><span·class="p">,</span><span·class="w">
311 ·············</span><span·class="p"·data-group-id="7935598030-28">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="7935598030-28">}</span><span·class="p">,</span><span·class="w">311 ·············</span><span·class="p"·data-group-id="7709054699-28">{</span><span·class="ss">decompress</span><span·class="p">,</span><span·class="ss">none</span><span·class="p"·data-group-id="7709054699-28">}</span><span·class="p">,</span><span·class="w">
312 ·············</span><span·class="p"·data-group-id="7935598030-29">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="7935598030-29">}</span><span·class="p">,</span><span·class="w">312 ·············</span><span·class="p"·data-group-id="7709054699-29">{</span><span·class="ss">send_ext_info</span><span·class="p">,</span><span·class="ss">false</span><span·class="p"·data-group-id="7709054699-29">}</span><span·class="p">,</span><span·class="w">
313 ·············</span><span·class="p"·data-group-id="7935598030-30">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="7935598030-30">}</span><span·class="p"·data-group-id="7935598030-20">]</span><span·class="p"·data-group-id="793559[·...·truncated·by·diffoscope;·len:·4,·SHA:·b060a56e168e78ba5c15edf3043ed474794683b0039eba3731f553b37240711a·...·]-19">}</span><span·class="w">313 ·············</span><span·class="p"·data-group-id="7709054699-30">{</span><span·class="ss">recv_ext_info</span><span·class="p">,</span><span·class="ss">true</span><span·class="p"·data-group-id="7709054699-30">}</span><span·class="p"·data-group-id="7709054699-20">]</span><span·class="p"·data-group-id="770905[·...·truncated·by·diffoscope;·len:·4,·SHA:·56f4652c9b6e2f8dfbea273777373fcf2aa2cd9ba89ef86f13ccbba1ef4a3345·...·]-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.8/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.3/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.3/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="8575593144-1">(</span><span·class="p"·data-group-id="8575593144-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="0553693009-1">(</span><span·class="p"·data-group-id="0553693009-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="p"·data-group-id="8575593144-2">[</span><span·class="p"·data-group-id="8575593144-3">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="8575593144-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="0553693009-2">[</span><span·class="p"·data-group-id="0553693009-3">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="0553693009-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="8575593144-4">]</span><span·class="p"·data-group-id="8575593144-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="0553693009-4">]</span><span·class="p"·data-group-id="0553693009-3">}</span><span·class="p">,</span><span·class="w">
181 ·</span><span·class="p"·data-group-id="8575593144-5">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="8575593144-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="0553693009-5">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="0553693009-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="8575593144-6">]</span><span·class="p"·data-group-id="8575593144-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="0553693009-6">]</span><span·class="p"·data-group-id="0553693009-5">}</span><span·class="p">,</span><span·class="w">
184 ·</span><span·class="p"·data-group-id="8575593144-7">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="8575593144-8">[</span><span·class="p"·data-group-id="8575593144-9">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·19eb34ee4359add73313c8baa0331e64b13b7e0277c5022a2d80391088eddb9c·...·]-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="0553693009-7">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="0553693009-8">[</span><span·class="p"·data-group-id="0553693009-9">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·cb5a5cead4797de7712b46a60d31387e4270b13decb4b148f7e6d2689b313bd5·...·]-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="8575593144-10">]</span><span·class="p"·data-group-id="8575593144-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="0553693009-10">]</span><span·class="p"·data-group-id="0553693009-9">}</span><span·class="p">,</span><span·class="w">
187 ··········</span><span·class="p"·data-group-id="8575593144-11">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="8575593144-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="0553693009-11">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="0553693009-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="8575593144-12">]</span><span·class="p"·data-group-id="8575593144-11">}</span><span·class="p"·data-group-id="8575593144-8">]</span><span·class="p"·data-group-id="8575593144-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="0553693009-12">]</span><span·class="p"·data-group-id="0553693009-11">}</span><span·class="p"·data-group-id="0553693009-8">]</span><span·class="p"·data-group-id="0553693009-7">}</span><span·class="p">,</span><span·class="w">
190 ·</span><span·class="p"·data-group-id="8575593144-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="8575593144-14">[</span><span·class="p"·data-group-id="8575593144-15">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·19eb34ee4359add73313c8baa0331e64b13b7e0277c5022a2d80391088eddb9c·...·]-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="0553693009-13">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="0553693009-14">[</span><span·class="p"·data-group-id="0553693009-15">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·cb5a5cead4797de7712b46a60d31387e4270b13decb4b148f7e6d2689b313bd5·...·]-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="8575593144-16">]</span><span·class="p"·data-group-id="8575593144-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="0553693009-16">]</span><span·class="p"·data-group-id="0553693009-15">}</span><span·class="p">,</span><span·class="w">
192 ·······</span><span·class="p"·data-group-id="8575593144-17">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="8575593144-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="0553693009-17">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="0553693009-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="8575593144-18">]</span><span·class="p"·data-group-id="8575593144-17">}</span><span·class="p"·data-group-id="8575593144-14">]</span><span·class="p"·data-group-id="8575593144-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="0553693009-18">]</span><span·class="p"·data-group-id="0553693009-17">}</span><span·class="p"·data-group-id="0553693009-14">]</span><span·class="p"·data-group-id="0553693009-13">}</span><span·class="p">,</span><span·class="w">
194 ·</span><span·class="p"·data-group-id="8575593144-19">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="8575593144-20">[</span><span·class="p"·data-group-id="8575593144-21">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·d27fee37982e1e5e1108f17383c0db6f8162503c727c907a8bac033ce8361dd5·...·]-21">}</span><span·class="p">,</span><span·class="w">194 ·</span><span·class="p"·data-group-id="0553693009-19">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="0553693009-20">[</span><span·class="p"·data-group-id="0553693009-21">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·a11de32752b6e4a2eb5d92815313efeb79e31f7947e2f6a10fb04b36c235a80e·...·]-21">}</span><span·class="p">,</span><span·class="w">
195 ···············</span><span·class="p"·data-group-id="8575593144-23">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="8575593144-24">[</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:·6ddc83bc47e732e818d583474a3188fca17908524fc23841eda31f90c90c867b·...·]-2">]</span></code></pre><p>To·change·the·algorithm·list,·there·are·two·options·which·can·be·used·in195 ···············</span><span·class="p"·data-group-id="0553693009-23">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="0553693009-24">[</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:·7478d435280ca7246337908b5035363f0846a76665a3016e6f9d08736e02a81d·...·]-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="6604404694-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="4287517942-1">(</span><span·class="w">
219 ···············</span><span·class="p"·data-group-id="6604404694-2">[</span><span·class="p"·data-group-id="6604404694-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">219 ···············</span><span·class="p"·data-group-id="4287517942-2">[</span><span·class="p"·data-group-id="4287517942-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
220 ·····················</span><span·class="p"·data-group-id="6604404694-4">[</span><span·class="p"·data-group-id="6604404694-5">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6604404694-6">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#[·...·truncated·by·diffoscope;·len:·104,·SHA:·88190097c8dcf73df1b15ce849b1f80d0b09ee9d1170407c7ff83bbf352ae4d2·...·]-5">}</span><span·class="w">220 ·····················</span><span·class="p"·data-group-id="4287517942-4">[</span><span·class="p"·data-group-id="4287517942-5">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4287517942-6">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#[·...·truncated·by·diffoscope;·len:·104,·SHA:·fd6f6a771ebe362e1067607b6425305b9a9f551ddb23860e010a6e3c19f3fada·...·]-5">}</span><span·class="w">
221 ·····················</span><span·class="p"·data-group-id="6604404694-4">]</span><span·class="w">221 ·····················</span><span·class="p"·data-group-id="4287517942-4">]</span><span·class="w">
222 ················</span><span·class="p"·data-group-id="6604404694-3">}</span><span·class="w">222 ················</span><span·class="p"·data-group-id="4287517942-3">}</span><span·class="w">
223 ··············</span><span·class="p"·data-group-id="6604404694-2">]</span><span·class="p"·data-group-id="6604404694-1">)</span><span·class="p">.</span><span·class="w">223 ··············</span><span·class="p"·data-group-id="4287517942-2">]</span><span·class="p"·data-group-id="4287517942-1">)</span><span·class="p">.</span><span·class="w">
224 </span><span·class="p"·data-group-id="6604404694-7">[</span><span·class="p"·data-group-id="6604404694-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="6604404694-9">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·91cd4a643b54a08619942924a1d22789c7302dc67380c190ddbeb4b956d63e6a·...·]-8">}</span><span·class="p">,</span><span·class="w">224 </span><span·class="p"·data-group-id="4287517942-7">[</span><span·class="p"·data-group-id="4287517942-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="4287517942-9">[</span><span·class="ss">&#39;diffie-hellman-group14-sha256&#39;</span><span·class="p[·...·truncated·by·diffoscope;·len:·80,·SHA:·5927737c812d2507e93bc10d54235f1555d6ffcef06871ff109594f31afb28c9·...·]-8">}</span><span·class="p">,</span><span·class="w">
225 ·</span><span·class="p"·data-group-id="6604404694-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="6604404694-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="4287517942-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="4287517942-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="6604404694-11">]</span><span·class="p"·data-group-id="6604404694-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="4287517942-11">]</span><span·class="p"·data-group-id="4287517942-10">}</span><span·class="p">,</span><span·class="w">
228 ·</span><span·class="p"·data-group-id="6604404694-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="6604404694-13">[</span><span·class="p"·data-group-id="6604404694-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·91a121dc011d1e676faf0ca120aee526a16137bed0a20f8d7171b86d6cd43ebf·...·]-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="4287517942-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="4287517942-13">[</span><span·class="p"·data-group-id="4287517942-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·31,·SHA:·6188f689810cf06e61d4e6533c95a9353f1e1bc6c634de664e4acc92c01052e3·...·]-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="6604404694-15">]</span><span·class="p"·data-group-id="6604404694-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="4287517942-15">]</span><span·class="p"·data-group-id="4287517942-14">}</span><span·class="p">,</span><span·class="w">
231 ··········</span><span·class="p"·data-group-id="6604404694-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6604404694-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="4287517942-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4287517942-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="6604404694-17">]</span><span·class="p"·data-group-id="6604404694-16">}</span><span·class="p"·data-group-id="6604404694-13">]</span><span·class="p"·data-group-id="6604404694-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="4287517942-17">]</span><span·class="p"·data-group-id="4287517942-16">}</span><span·class="p"·data-group-id="4287517942-13">]</span><span·class="p"·data-group-id="4287517942-12">}</span><span·class="p">,</span><span·class="w">
234 ·</span><span·class="p"·data-group-id="6604404694-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="6604404694-19">[</span><span·class="p"·data-group-id="6604404694-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·6b19a0ee42b3245a8e55cc3d9a8e14d7d597a0b5806408fa59d6a6db75065346·...·]-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="4287517942-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="4287517942-19">[</span><span·class="p"·data-group-id="4287517942-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·57e16f862942727a6fc6d547e86913c61927deb0fcd374a24aad6bfb2dbbb914·...·]-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="6604404694-21">]</span><span·class="p"·data-group-id="6604404694-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="4287517942-21">]</span><span·class="p"·data-group-id="4287517942-20">}</span><span·class="p">,</span><span·class="w">
236 ·······</span><span·class="p"·data-group-id="6604404694-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6604404694-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="4287517942-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4287517942-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="6604404694-23">]</span><span·class="p"·data-group-id="6604404694-22">}</span><span·class="p"·data-group-id="6604404694-19">]</span><span·class="p"·data-group-id="6604404694-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="4287517942-23">]</span><span·class="p"·data-group-id="4287517942-22">}</span><span·class="p"·data-group-id="4287517942-19">]</span><span·class="p"·data-group-id="4287517942-18">}</span><span·class="p">,</span><span·class="w">
238 ·</span><span·class="p"·data-group-id="6604404694-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="6604404694-25">[</span><span·class="p"·data-group-id="6604404694-26">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·dfb022043239dc1262c8ef0bdd69d780db81f2279f74e0b26241a3af88d885de·...·]-26">}</span><span·class="p">,</span><span·class="w">238 ·</span><span·class="p"·data-group-id="4287517942-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="4287517942-25">[</span><span·class="p"·data-group-id="4287517942-26">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·daa25df3c7cf7343809498eb93db9ebc0834dbe60cf5775c505b2370bb6672f3·...·]-26">}</span><span·class="p">,</span><span·class="w">
239 ···············</span><span·class="p"·data-group-id="6604404694-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="6604404694-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:·39bccee78129c75ab3c536930bea80e6e4aa5e741aab0307d31fed7c6195121b·...·]-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="4287517942-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4287517942-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:·67c7a8b5f57f283eb8e4a887b7f1f9ee1ec7ac189dd32e598d8ef89d38c77dec·...·]-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="2840007771-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="1462977182-1">(</span><span·class="w">
248 ···············</span><span·class="p"·data-group-id="2840007771-2">[</span><span·class="p"·data-group-id="2840007771-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">248 ···············</span><span·class="p"·data-group-id="1462977182-2">[</span><span·class="p"·data-group-id="1462977182-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
249 ·····················</span><span·class="p"·data-group-id="2840007771-4">[</span><span·class="p"·data-group-id="2840007771-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="2840007771-6">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·64,·SHA:·69cfda690be2efbbb16116ce96605735308340126fe3afb539657d7c56cb8e04·...·]-5">}</span><span·class="w">249 ·····················</span><span·class="p"·data-group-id="1462977182-4">[</span><span·class="p"·data-group-id="1462977182-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="1462977182-6">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·64,·SHA:·be2d26ed3010979d4e97a19c9629d21b2acab77260f94775c1e29e44540772b9·...·]-5">}</span><span·class="w">
250 ·····················</span><span·class="p"·data-group-id="2840007771-4">]</span><span·class="w">250 ·····················</span><span·class="p"·data-group-id="1462977182-4">]</span><span·class="w">
251 ················</span><span·class="p"·data-group-id="2840007771-3">}</span><span·class="w">251 ················</span><span·class="p"·data-group-id="1462977182-3">}</span><span·class="w">
252 ··············</span><span·class="p"·data-group-id="2840007771-2">]</span><span·class="p"·data-group-id="2840007771-1">)</span><span·class="p">.</span><span·class="w">252 ··············</span><span·class="p"·data-group-id="1462977182-2">]</span><span·class="p"·data-group-id="1462977182-1">)</span><span·class="p">.</span><span·class="w">
253 </span><span·class="p"·data-group-id="2840007771-7">[</span><span·class="p"·data-group-id="2840007771-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="2840007771-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="1462977182-7">[</span><span·class="p"·data-group-id="1462977182-8">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="1462977182-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="2840007771-9">]</span><span·class="p"·data-group-id="2840007771-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="1462977182-9">]</span><span·class="p"·data-group-id="1462977182-8">}</span><span·class="p">,</span><span·class="w">
260 ·</span><span·class="p"·data-group-id="2840007771-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="2840007771-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="1462977182-10">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="1462977182-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="2840007771-11">]</span><span·class="p"·data-group-id="2840007771-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="1462977182-11">]</span><span·class="p"·data-group-id="1462977182-10">}</span><span·class="p">,</span><span·class="w">
263 ·</span><span·class="p"·data-group-id="2840007771-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="2840007771-13">[</span><span·class="p"·data-group-id="2840007771-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·183,·SHA:·0463c0ec1f82c40fa3d54474f9ca53fd6876667e9401522bdeb0714b73b34402·...·]-14">}</span><span·class="p">,</span><span·class="w">263 ·</span><span·class="p"·data-group-id="1462977182-12">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="1462977182-13">[</span><span·class="p"·data-group-id="1462977182-14">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·183,·SHA:·dfb6284fe1d1d9f19bccaedc75b5741b702a84b0e5be26d100814915f073c2e2·...·]-14">}</span><span·class="p">,</span><span·class="w">
264 ··········</span><span·class="p"·data-group-id="2840007771-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="2840007771-17">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id="2840007771-17">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·0e137328ee8e4cdb92f12dfd9bc1574e54518ad05878f679524451cc4d455ed1·...·]-12">}</span><span·class="p">,</span><span·class="w">264 ··········</span><span·class="p"·data-group-id="1462977182-16">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="1462977182-17">[</span><span·class="ss">&#39;aes128-ctr&#39;</span><span·class="p"·data-group-id="1462977182-17">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·129,·SHA:·4443f3733aee65986406c3f20a2cc8ff75c343433e116109630a84657850957d·...·]-12">}</span><span·class="p">,</span><span·class="w">
265 ·</span><span·class="p"·data-group-id="2840007771-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="2840007771-19">[</span><span·class="p"·data-group-id="2840007771-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·2a930a450e3632c4b4dd36b7930db8d770cbd5b60516b8b0a7365913a3b72a83·...·]-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="1462977182-18">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="1462977182-19">[</span><span·class="p"·data-group-id="1462977182-20">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·d0441b0c868fe97f947f49b7dc75052aba284063a28a47e82100c0cec51d26d5·...·]-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="2840007771-21">]</span><span·class="p"·data-group-id="2840007771-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="1462977182-21">]</span><span·class="p"·data-group-id="1462977182-20">}</span><span·class="p">,</span><span·class="w">
267 ·······</span><span·class="p"·data-group-id="2840007771-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="2840007771-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="1462977182-22">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="1462977182-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="2840007771-23">]</span><span·class="p"·data-group-id="2840007771-22">}</span><span·class="p"·data-group-id="2840007771-19">]</span><span·class="p"·data-group-id="2840007771-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="1462977182-23">]</span><span·class="p"·data-group-id="1462977182-22">}</span><span·class="p"·data-group-id="1462977182-19">]</span><span·class="p"·data-group-id="1462977182-18">}</span><span·class="p">,</span><span·class="w">
269 ·</span><span·class="p"·data-group-id="2840007771-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="2840007771-25">[</span><span·class="p"·data-group-id="2840007771-26">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·5cd694dc847034ad2601eb13fbd1d6b4746f956cc99924fb98b517f03d94f1a8·...·]-26">}</span><span·class="p">,</span><span·class="w">269 ·</span><span·class="p"·data-group-id="1462977182-24">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="1462977182-25">[</span><span·class="p"·data-group-id="1462977182-26">{</span><span·class="ss">client2server</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·298,·SHA:·cae3903c3d7c844e33b422f3dfa2e59c84451ed83aac83df855a5a89cd8a6525·...·]-26">}</span><span·class="p">,</span><span·class="w">
270 ···············</span><span·class="p"·data-group-id="2840007771-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="2840007771-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:·b251b42d49e4272f27945f84bbe25bb8f4511d6a91466e22597bacd65042516d·...·]-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="1462977182-28">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="1462977182-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:·402ca58617c78d3ea22715192031376712328a6ab0509d65968a573cceb237a7·...·]-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="7442276519-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="4986270881-1">(</span><span·class="w">
279 ···············</span><span·class="p"·data-group-id="7442276519-2">[</span><span·class="p"·data-group-id="7442276519-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">279 ···············</span><span·class="p"·data-group-id="4986270881-2">[</span><span·class="p"·data-group-id="4986270881-3">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
280 ·····················</span><span·class="p"·data-group-id="7442276519-4">[</span><span·class="p"·data-group-id="7442276519-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="7442276519-6">[</span><span·class="p"·data-group-id="7442276519-7">{</span><span·class="ss">clie[·...·truncated·by·diffoscope;·len:·337,·SHA:·0d1d70e3c198ca2ee3ac1d7b1e55292be27fbf280f0c59d109ca096549757ca7·...·]-5">}</span><span·class="w">280 ·····················</span><span·class="p"·data-group-id="4986270881-4">[</span><span·class="p"·data-group-id="4986270881-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="4986270881-6">[</span><span·class="p"·data-group-id="4986270881-7">{</span><span·class="ss">clie[·...·truncated·by·diffoscope;·len:·337,·SHA:·a4daf29eb94e1ff0d9c71eb0d7ee3d6a95b9be430d00211c5b89798023cba9d8·...·]-5">}</span><span·class="w">
281 ·····················</span><span·class="p"·data-group-id="7442276519-4">]</span><span·class="w">281 ·····················</span><span·class="p"·data-group-id="4986270881-4">]</span><span·class="w">
282 ················</span><span·class="p"·data-group-id="7442276519-3">}</span><span·class="w">282 ················</span><span·class="p"·data-group-id="4986270881-3">}</span><span·class="w">
283 ··············</span><span·class="p"·data-group-id="7442276519-2">]</span><span·class="p"·data-group-id="7442276519-1">)</span><span·class="p">.</span><span·class="w">283 ··············</span><span·class="p"·data-group-id="4986270881-2">]</span><span·class="p"·data-group-id="4986270881-1">)</span><span·class="p">.</span><span·class="w">
284 </span><span·class="p"·data-group-id="7442276519-9">[</span><span·class="p"·data-group-id="7442276519-10">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="7442276519-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="4986270881-9">[</span><span·class="p"·data-group-id="4986270881-10">{</span><span·class="ss">kex</span><span·class="p">,</span><span·class="p"·data-group-id="4986270881-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="7442276519-11">]</span><span·class="p"·data-group-id="7442276519-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="4986270881-11">]</span><span·class="p"·data-group-id="4986270881-10">}</span><span·class="p">,</span><span·class="w">
291 ·</span><span·class="p"·data-group-id="7442276519-12">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="7442276519-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="4986270881-12">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="4986270881-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="7442276519-13">]</span><span·class="p"·data-group-id="7442276519-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="4986270881-13">]</span><span·class="p"·data-group-id="4986270881-12">}</span><span·class="p">,</span><span·class="w">
294 ·</span><span·class="p"·data-group-id="7442276519-14">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="7442276519-15">[</span><span·class="p"·data-group-id="7442276519-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·183,·SHA:·b26a3c163317bba478aad24c4ef43bbd07fa4760a2d5fcb3737981a428e53f49·...·]-16">}</span><span·class="p">,</span><span·class="w">294 ·</span><span·class="p"·data-group-id="4986270881-14">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="4986270881-15">[</span><span·class="p"·data-group-id="4986270881-16">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·clas[·...·truncated·by·diffoscope;·len:·183,·SHA:·62570b9a26570bc79eca370bb9b79150019b0f219a2acb7b81737a6509ed7462·...·]-16">}</span><span·class="p">,</span><span·class="w">
295 ··········</span><span·class="p"·data-group-id="7442276519-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="7442276519-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="4986270881-18">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4986270881-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="7442276519-19">]</span><span·class="p"·data-group-id="7442276519-18">}</span><span·class="p"·data-group-id="7442276519-15">]</span><span·class="p"·data-group-id="7442276519-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="4986270881-19">]</span><span·class="p"·data-group-id="4986270881-18">}</span><span·class="p"·data-group-id="4986270881-15">]</span><span·class="p"·data-group-id="4986270881-14">}</span><span·class="p">,</span><span·class="w">
298 ·</span><span·class="p"·data-group-id="7442276519-20">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="7442276519-21">[</span><span·class="p"·data-group-id="7442276519-22">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·084f4a63468cfb123b709e2ea93e6cc383aae62094e8cfdf9e7c42170e73ad12·...·]-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="4986270881-20">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="4986270881-21">[</span><span·class="p"·data-group-id="4986270881-22">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·6de5f9cbca76b27079bdaed92fae1fda6d82615f175bcd6fdc73c4a74b57da07·...·]-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">
299 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="7442276519-23">]</span><span·class="p"·data-group-id="7442276519-22">}</span><span·class="p">,</span><span·class="w">299 ·······················</span><span·class="ss">&#39;hmac-sha1&#39;</span><span·class="p"·data-group-id="4986270881-23">]</span><span·class="p"·data-group-id="4986270881-22">}</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.8/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="8048695339-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:·5666b6df194ae36ff783e00e6c65bdd86051b33d825ecd496b16d10f7253df23·...·]-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="0217191928-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:·da15f0f7db6fb09637dc7b5de4df022d7e4fc2bc1b57fdaad87cc5c82f51ff9d·...·]-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="8048695339-2">(</span><span·class="p"·data-group-id="8048695339-3">{</span><span·class="n">User</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="8048695339-3">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·185,·SHA:·2d974a15f4c6da6e98b33a1e2dd0a80dd43c45ee42d5a9f50ef2e303e12e7829·...·]-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="0217191928-2">(</span><span·class="p"·data-group-id="0217191928-3">{</span><span·class="n">User</span><span·class="p">,</span><span·class="n">Password</span><span·class="p"·data-group-id="0217191928-3">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·185,·SHA:·f9b942c8b0c3e17b9f0462f4d0f2a8f1b3bdc1def1e8d91e3a6e19e677206627·...·]-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="8048695339-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="8048695339-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="0217191928-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="0217191928-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="8048695339-6">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="8048695339-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="0217191928-6">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="0217191928-6">)</span><span·class="p">,</span><span·class="w">
223 ················</span><span·class="p"·data-group-id="8048695339-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="8048695339-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="0217191928-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="0217191928-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="8048695339-8">(</span><span·class="n">State</span><span·class="p"·data-group-id="8048695339-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="0217191928-8">(</span><span·class="n">State</span><span·class="p"·data-group-id="0217191928-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="8048695339-9">(</span><span·class="n">State</span><span·class="p"·data-group-id="8048695339-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="0217191928-9">(</span><span·class="n">State</span><span·class="p"·data-group-id="0217191928-9">)</span><span·class="p">,</span><span·class="w">
226 ················</span><span·class="p"·data-group-id="8048695339-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="8048695339-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="0217191928-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="0217191928-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="6964560762-1">(</span><span·class="mi">1234</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6964560762-2">[</span><span·class="p"·data-group-id="6964560762-3">{</span><span·class="ss">id_string</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·339,·SHA:·b1d725ae90dbd945c88619ee44da1275a4f267993b6dfb935c1e037682eeec6e·...·]-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="1683753183-1">(</span><span·class="mi">1234</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1683753183-2">[</span><span·class="p"·data-group-id="1683753183-3">{</span><span·class="ss">id_string</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·339,·SHA:·16aa69d9c67c3f21acd4d30a7334e7e1dd87005e1b1c43664822ebe5beab5994·...·]-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>
591 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.8/doc/html/ssh.epub
4.57 KB
zipinfo {}
    
Offset 1, 30 lines modifiedOffset 1, 30 lines modified
1 Zip·file·size:·270895·bytes,·number·of·entries:·281 Zip·file·size:·270879·bytes,·number·of·entries:·28
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:57·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:51·mimetype
3 ?rw-r--r--··6.1·unx···115972·bx·defN·25-Mar-18·07:57·OEBPS/using_ssh.xhtml3 ?rw-r--r--··6.1·unx···115972·bx·defN·25-Mar-18·08:51·OEBPS/using_ssh.xhtml
4 ?rw-r--r--··6.1·unx······710·bx·defN·25-Mar-18·07:57·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······710·bx·defN·25-Mar-18·08:51·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx·····7853·bx·defN·25-Mar-18·07:57·OEBPS/terminology.xhtml5 ?rw-r--r--··6.1·unx·····7853·bx·defN·25-Mar-18·08:51·OEBPS/terminology.xhtml
6 ?rw-r--r--··6.1·unx·····5270·bx·defN·25-Mar-18·07:57·OEBPS/ssh_sftpd.xhtml6 ?rw-r--r--··6.1·unx·····5270·bx·defN·25-Mar-18·08:51·OEBPS/ssh_sftpd.xhtml
7 ?rw-r--r--··6.1·unx···116566·bx·defN·25-Mar-18·07:57·OEBPS/ssh_sftp.xhtml7 ?rw-r--r--··6.1·unx···116566·bx·defN·25-Mar-18·08:51·OEBPS/ssh_sftp.xhtml
8 ?rw-r--r--··6.1·unx·····6495·bx·defN·25-Mar-18·07:57·OEBPS/ssh_server_key_api.xhtml8 ?rw-r--r--··6.1·unx·····6495·bx·defN·25-Mar-18·08:51·OEBPS/ssh_server_key_api.xhtml
9 ?rw-r--r--··6.1·unx····11494·bx·defN·25-Mar-18·07:57·OEBPS/ssh_server_channel.xhtml9 ?rw-r--r--··6.1·unx····11494·bx·defN·25-Mar-18·08:51·OEBPS/ssh_server_channel.xhtml
10 ?rw-r--r--··6.1·unx····42907·bx·defN·25-Mar-18·07:57·OEBPS/ssh_file.xhtml10 ?rw-r--r--··6.1·unx····42907·bx·defN·25-Mar-18·08:51·OEBPS/ssh_file.xhtml
11 ?rw-r--r--··6.1·unx····71207·bx·defN·25-Mar-18·07:57·OEBPS/ssh_connection.xhtml11 ?rw-r--r--··6.1·unx····71207·bx·defN·25-Mar-18·08:51·OEBPS/ssh_connection.xhtml
12 ?rw-r--r--··6.1·unx····17279·bx·defN·25-Mar-18·07:57·OEBPS/ssh_client_key_api.xhtml12 ?rw-r--r--··6.1·unx····17279·bx·defN·25-Mar-18·08:51·OEBPS/ssh_client_key_api.xhtml
13 ?rw-r--r--··6.1·unx····38219·bx·defN·25-Mar-18·07:57·OEBPS/ssh_client_channel.xhtml13 ?rw-r--r--··6.1·unx····38219·bx·defN·25-Mar-18·08:51·OEBPS/ssh_client_channel.xhtml
14 ?rw-r--r--··6.1·unx····19443·bx·defN·25-Mar-18·07:57·OEBPS/ssh_app.xhtml14 ?rw-r--r--··6.1·unx····19443·bx·defN·25-Mar-18·08:51·OEBPS/ssh_app.xhtml
15 ?rw-r--r--··6.1·unx····18835·bx·defN·25-Mar-18·07:57·OEBPS/ssh_agent.xhtml15 ?rw-r--r--··6.1·unx····18835·bx·defN·25-Mar-18·08:51·OEBPS/ssh_agent.xhtml
16 ?rw-r--r--··6.1·unx···243131·bx·defN·25-Mar-18·07:57·OEBPS/ssh.xhtml16 ?rw-r--r--··6.1·unx···243131·bx·defN·25-Mar-18·08:51·OEBPS/ssh.xhtml
17 ?rw-r--r--··6.1·unx···218718·bx·defN·25-Mar-18·07:57·OEBPS/notes.xhtml17 ?rw-r--r--··6.1·unx···218718·bx·defN·25-Mar-18·08:51·OEBPS/notes.xhtml
18 ?rw-r--r--··6.1·unx·····2043·bx·defN·25-Mar-18·07:57·OEBPS/nav.xhtml18 ?rw-r--r--··6.1·unx·····2043·bx·defN·25-Mar-18·08:51·OEBPS/nav.xhtml
19 ?rw-r--r--··6.1·unx·····8195·bx·defN·25-Mar-18·07:57·OEBPS/introduction.xhtml19 ?rw-r--r--··6.1·unx·····8195·bx·defN·25-Mar-18·08:51·OEBPS/introduction.xhtml
20 ?rw-r--r--··6.1·unx····18130·bx·defN·25-Mar-18·07:57·OEBPS/hardening.xhtml20 ?rw-r--r--··6.1·unx····18130·bx·defN·25-Mar-18·08:51·OEBPS/hardening.xhtml
21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-erlang-ESPT6BQV.css21 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-erlang-ESPT6BQV.css
22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-LSJCIYTM.js22 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:51·OEBPS/dist/epub-LSJCIYTM.js
23 ?rw-r--r--··6.1·unx·····3897·bx·defN·25-Mar-18·07:57·OEBPS/content.opf23 ?rw-r--r--··6.1·unx·····3897·bx·defN·25-Mar-18·08:51·OEBPS/content.opf
24 ?rw-r--r--··6.1·unx····74880·bx·defN·25-Mar-18·07:57·OEBPS/configure_algos.xhtml24 ?rw-r--r--··6.1·unx····74880·bx·defN·25-Mar-18·08:51·OEBPS/configure_algos.xhtml
25 ?rw-r--r--··6.1·unx····38891·bx·defN·25-Mar-18·07:57·OEBPS/configurations.xhtml25 ?rw-r--r--··6.1·unx····38891·bx·defN·25-Mar-18·08:51·OEBPS/configurations.xhtml
26 ?rw-r--r--··6.1·unx····40281·bx·defN·25-Mar-18·07:57·OEBPS/assets/ssh_timeouts.jpg26 ?rw-r--r--··6.1·unx····40281·bx·defN·25-Mar-18·08:51·OEBPS/assets/ssh_timeouts.jpg
27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:57·OEBPS/assets/logo.png27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:51·OEBPS/assets/logo.png
28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:57·META-INF/container.xml28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:51·META-INF/container.xml
29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:57·META-INF/com.apple.ibooks.display-options.xml29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:51·META-INF/com.apple.ibooks.display-options.xml
30 28·files,·1141748·bytes·uncompressed,·265975·bytes·compressed:··76.7%30 28·files,·1141748·bytes·uncompressed,·265959·bytes·compressed:··76.7%
165 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,·Mar·18·2025·07:57:12,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Mar·18·2025·08:51:46,·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="9505332438-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="9505332438-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:·c3323a079c10e3d888795fefd2b3176f44aba9c9de742f1c3eb849bd161f73bc·...·]-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="2202522132-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="2202522132-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:·69f8fbadc25f7310c68114851811ea95e96a5d548c66031c4a9f77c216bde128·...·]-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="6724097392-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="6724097392-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:·cd4f08c04f748ab79ed883478d663eb9ca4152e3e8e97225186aace8032dffe2·...·]-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="8762041665-1">{</samp><samp·class="ss">key_cb</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="8762041665-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:·84473cb080c0bf49557015a299afd04f7fdd287c6850e457ab89671da503d7e4·...·]-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.8/doc/html/ssh.html
    
Offset 3369, 22 lines modifiedOffset 3369, 22 lines modified
  
3369 ··········<pre·translate="no"><span·class="attribute">-type</span>·double_algs(AlgType)·::·[{client2server,·[AlgType]}·|·{server2client,·[AlgType]}]·|·[AlgType].</pre>3369 ··········<pre·translate="no"><span·class="attribute">-type</span>·double_algs(AlgType)·::·[{client2server,·[AlgType]}·|·{server2client,·[AlgType]}]·|·[AlgType].</pre>
  
3370 ······</div>3370 ······</div>
  
3371 <p>List·of·algorithms·to·use·in·the·algorithm·negotiation.·The·default3371 <p>List·of·algorithms·to·use·in·the·algorithm·negotiation.·The·default
3372 <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·for3372 <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
3373 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="9292950831-1">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">3373 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="4640323326-1">{</span><span·class="ss">preferred_algorithms</span><span·class="p">,</span><span·class="w">
3374 »       ··</span><span·class="p"·data-group-id="9292950831-2">[</span><span·class="p"·data-group-id="9292950831-3">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="9292950831-4">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·130,·SHA:·ba93371a747c10b11943f819a4fc35ec185e1148baa79917d200a3ba6117bdc3·...·]-3">}</span><span·class="p">,</span><span·class="w">3374 »       ··</span><span·class="p"·data-group-id="4640323326-2">[</span><span·class="p"·data-group-id="4640323326-3">{</span><span·class="ss">public_key</span><span·class="p">,</span><span·class="p"·data-group-id="4640323326-4">[</span><span·class="ss">&#39;ssh-rsa&#39;</span><span·class="p">,</span><span[·...·truncated·by·diffoscope;·len:·130,·SHA:·14ff5e4f8c28effd048f269d2f561cbcb8224d70aab7e336915dfb9030e6fa92·...·]-3">}</span><span·class="p">,</span><span·class="w">
3375 »       ··</span><span·class="p"·data-group-id="9292950831-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="9292950831-6">[</span><span·class="p"·data-group-id="9292950831-7">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·178,·SHA:·561f8ae2ac8d32a40ca2952a8443c29d5b906419d675b7260d73b3a8d0821c0f·...·]-7">}</span><span·class="p">,</span><span·class="w">3375 »       ··</span><span·class="p"·data-group-id="4640323326-5">{</span><span·class="ss">cipher</span><span·class="p">,</span><span·class="p"·data-group-id="4640323326-6">[</span><span·class="p"·data-group-id="4640323326-7">{</span><span·class="ss">client2server</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·178,·SHA:·01d2ace5a7aa3f4127e9a894267e0771ef454da4e941ff5afb86d54e56ed2eea·...·]-7">}</span><span·class="p">,</span><span·class="w">
3376 ··········</span><span·class="p"·data-group-id="9292950831-9">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="9292950831-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:·a8219d78932ee2aa1a99e4992e90555eaee2ede1fa6bbc1a6876cea8e53e6176·...·]-5">}</span><span·class="p">,</span><span·class="w">3376 ··········</span><span·class="p"·data-group-id="4640323326-9">{</span><span·class="ss">server2client</span><span·class="p">,</span><span·class="p"·data-group-id="4640323326-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:·965f10b7b6808a0d2d81239970d996ff49b17e6b373c0135860f1bcfe97e99e0·...·]-5">}</span><span·class="p">,</span><span·class="w">
3377 »       ··</span><span·class="p"·data-group-id="9292950831-11">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="9292950831-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:·3a5247a909dddf4b787da97a1005bad3ba834137ede67c4f3c5b73b034473301·...·]-11">}</span><span·class="p">,</span><span·class="w">3377 »       ··</span><span·class="p"·data-group-id="4640323326-11">{</span><span·class="ss">mac</span><span·class="p">,</span><span·class="p"·data-group-id="4640323326-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:·6d98db6e8dd8bc1516f56176558b7af38d08658822df1df0b03047b6644f6676·...·]-11">}</span><span·class="p">,</span><span·class="w">
3378 »       ··</span><span·class="p"·data-group-id="9292950831-13">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="9292950831-14">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">zlib</span><span·class="p"·data-group-id="929295083[·...·truncated·by·diffoscope;·len:·55,·SHA:·84bc8ec69947df423ce30c56671d608984abae386267873b74b9fa9339f1eb58·...·]-13">}</span><span·class="w">3378 »       ··</span><span·class="p"·data-group-id="4640323326-13">{</span><span·class="ss">compression</span><span·class="p">,</span><span·class="p"·data-group-id="4640323326-14">[</span><span·class="ss">none</span><span·class="p">,</span><span·class="ss">zlib</span><span·class="p"·data-group-id="464032332[·...·truncated·by·diffoscope;·len:·55,·SHA:·4ea4b85082f03c8458ebb085ebe33c09748bae0d26cd257c64548ea84133ba3a·...·]-13">}</span><span·class="w">
3379 »       ··</span><span·class="p"·data-group-id="9292950831-2">]</span><span·class="w">3379 »       ··</span><span·class="p"·data-group-id="4640323326-2">]</span><span·class="w">
3380 »       ··</span><span·class="p"·data-group-id="9292950831-1">}</span></code></pre><p>The·example·specifies·different·algorithms·in·the·two·directions·(client2server3380 »       ··</span><span·class="p"·data-group-id="4640323326-1">}</span></code></pre><p>The·example·specifies·different·algorithms·in·the·two·directions·(client2server
3381 and·server2client),·for·cipher·but·specifies·the·same·algorithms·for·mac·and3381 and·server2client),·for·cipher·but·specifies·the·same·algorithms·for·mac·and
3382 compression·in·both·directions.·The·kex·(key·exchange)·is·implicit·but3382 compression·in·both·directions.·The·kex·(key·exchange)·is·implicit·but
3383 public_key·is·set·explicitly.</p><p>For·background·and·more·examples·see·the3383 public_key·is·set·explicitly.</p><p>For·background·and·more·examples·see·the
3384 <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·is3384 <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
3385 undefined.·The·tags·in·the·property·lists·are·also·assumed·to·occur·at·most·one3385 undefined.·The·tags·in·the·property·lists·are·also·assumed·to·occur·at·most·one
3386 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·unless3386 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
3387 you·know·exactly·what·you·are·doing.·If·you·do·not·understand·the·values·then3387 you·know·exactly·what·you·are·doing.·If·you·do·not·understand·the·values·then
Offset 5105, 29 lines modifiedOffset 5105, 29 lines modified
5105 ·································StringOrString·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>()·|·[<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>()].</pre>5105 ·································StringOrString·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>()·|·[<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>()].</pre>
  
5106 ······</div>5106 ······</div>
  
5107 <p>hostkey_fingerprint([DigestType],·HostKey)·-&gt;5107 <p>hostkey_fingerprint([DigestType],·HostKey)·-&gt;
5108 [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·be5108 [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
5109 compatible·with·older·ssh-keygen·commands.·The·string·from·the·second·variant·is5109 compatible·with·older·ssh-keygen·commands.·The·string·from·the·second·variant·is
5110 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="1212438331-1">(</span><span·class="n">Key</span><span·class="p"·data-group-id="1212438331-1">)</span><span·class="p">.</span><span·class="w">5110 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="4149930142-1">(</span><span·class="n">Key</span><span·class="p"·data-group-id="4149930142-1">)</span><span·class="p">.</span><span·class="w">
5111 ·</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">5111 ·</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">
  
5112 ·</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="1212438331-2">(</span><span·class="nb">md5</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="1212438331-2">)</span><span·class="p">.</span><span·class="w">5112 ·</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="4149930142-2">(</span><span·class="nb">md5</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="4149930142-2">)</span><span·class="p">.</span><span·class="w">
5113 ·</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">5113 ·</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">
  
5114 ·</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="1212438331-3">(</span><span·class="ss">sha</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="1212438331-3">)</span><span·class="p">.</span><span·class="w">5114 ·</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="4149930142-3">(</span><span·class="ss">sha</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="4149930142-3">)</span><span·class="p">.</span><span·class="w">
5115 ·</span><span·class="s">&quot;SHA1:bSLY/C4QXLDL/Iwmhyg0PGW9UbY&quot;</span><span·class="w">5115 ·</span><span·class="s">&quot;SHA1:bSLY/C4QXLDL/Iwmhyg0PGW9UbY&quot;</span><span·class="w">
  
5116 ·</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="1212438331-4">(</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="1212438331-4">)</span><span·class="p">.</span><span·class="w">5116 ·</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="4149930142-4">(</span><span·class="ss">sha256</span><span·class="p">,</span><span·class="n">Key</span><span·class="p"·data-group-id="4149930142-4">)</span><span·class="p">.</span><span·class="w">
5117 ·</span><span·class="s">&quot;SHA256:aZGXhabfbf4oxglxltItWeHU7ub3Dc31NcNw2cMJePQ&quot;</span><span·class="w">5117 ·</span><span·class="s">&quot;SHA256:aZGXhabfbf4oxglxltItWeHU7ub3Dc31NcNw2cMJePQ&quot;</span><span·class="w">
  
5118 ·</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="1212438331-5">(</span><span·class="p"·data-group-id="1212438331-6">[</span><span·class="ss">sha</span><span·class="p">,</span><span·class="ss">sha256</span><span·class="p"·data-group-id="1212438331-6">]</span><span·class="p">,</span><span·class="n">Key</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·400297ed775891a1d4bf31f75584b7e92f6e78b4dfe81a55d4a522001a553df7·...·]-5">)</span><span·class="p">.</span><span·class="w">5118 ·</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="4149930142-5">(</span><span·class="p"·data-group-id="4149930142-6">[</span><span·class="ss">sha</span><span·class="p">,</span><span·class="ss">sha256</span><span·class="p"·data-group-id="4149930142-6">]</span><span·class="p">,</span><span·class="n">Key</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·d0084d3cd77f986cc639bff7122ece6a90406f3039cc24edcd02b18a6f7c5962·...·]-5">)</span><span·class="p">.</span><span·class="w">
5119 ·</span><span·class="p"·data-group-id="1212438331-7">[</span><span·class="s">&quot;SHA1:bSLY/C4QXLDL/Iwmhyg0PGW9UbY&quot;</span><span·class="p">,</span><span·class="w">5119 ·</span><span·class="p"·data-group-id="4149930142-7">[</span><span·class="s">&quot;SHA1:bSLY/C4QXLDL/Iwmhyg0PGW9UbY&quot;</span><span·class="p">,</span><span·class="w">
5120 ··</span><span·class="s">&quot;SHA256:aZGXhabfbf4oxglxltItWeHU7ub3Dc31NcNw2cMJePQ&quot;</span><span·class="p"·data-group-id="1212438331-7">]</span></code></pre>5120 ··</span><span·class="s">&quot;SHA256:aZGXhabfbf4oxglxltItWeHU7ub3Dc31NcNw2cMJePQ&quot;</span><span·class="p"·data-group-id="4149930142-7">]</span></code></pre>
5121 ··</section>5121 ··</section>
5122 </section>5122 </section>
5123 <section·class="detail"·id="set_sock_opts/2">5123 <section·class="detail"·id="set_sock_opts/2">
  
5124 ··<div·class="detail-header">5124 ··<div·class="detail-header">
5125 ····<a·href="#set_sock_opts/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">5125 ····<a·href="#set_sock_opts/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
5126 ······<i·class="ri-link-m"·aria-hidden="true"></i>5126 ······<i·class="ri-link-m"·aria-hidden="true"></i>
4.67 KB
./usr/share/doc/erlang-doc/html/lib/ssh-5.2.8/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="0082095286-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0082095286-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:·9cf7c29f4f3cd4a3cbcd96bc824d1e41399bf2979d2fa454368f5c2892baa1fd·...·]-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="4654156732-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4654156732-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:·8b41048516d9de94d6c38671c384d79088d4fd50c0284c9aa5f61342b024eaf4·...·]-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="3097629775-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3097629775-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:·399,·SHA:·18c1364be12c32cf56cbd5d4df11e88435e4183955b9d3902411cbc290b26db0·...·]5-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="8509491445-1">{</span><span·class="ss">key_cb</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8509491445-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:·399,·SHA:·813c1c7d67170cc01788818571808584c50734cac32624b6af8fba75d9d98cbd·...·]5-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.8/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="5127563519-1">(</span><span·class="p"·data-group-id="5127563519-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="3992971855-1">(</span><span·class="p"·data-group-id="3992971855-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="5127563519-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="5127563519-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·213,·SHA:·b2e902f8ad3be06c3fbf338154d77929b586e99aab67c94e99115f8f16da0ffd·...·]-3">)</span><span·class="p">.</span><span·class="w">145 2&gt;·</span><span·class="p"·data-group-id="3992971855-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="3992971855-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·213,·SHA:·98a95992a4caafb3fcd855e169d0039a080aab1f46b6194a7b80a438da9e476c·...·]-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="5188150532-1">(</span><span·class="p"·data-group-id="5188150532-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="2642410760-1">(</span><span·class="p"·data-group-id="2642410760-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="5188150532-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="5188150532-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·481,·SHA:·a3a0a64d3df4a02bd080f371191f85de39b85445f49c14306bd6c0b8e856ab93·...·]-5">}</span><span·class="p">,</span><span·class="w">166 2&gt;·</span><span·class="p"·data-group-id="2642410760-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="2642410760-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·481,·SHA:·a9e3fd70a242ab34a580add24058114d9aa4556f80732bb57ba21a130efd3dab·...·]-5">}</span><span·class="p">,</span><span·class="w">
167 ··································</span><span·class="p"·data-group-id="5188150532-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="5188150532-6">}</span><span·class="p"·data-group-id="5188150532-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·ed19a2cabf49a2571ccb3d1a81799e3c18a89e4322d964278e9417ccad8d9db3·...·]-3">)</span><span·class="p">.</span><span·class="w">167 ··································</span><span·class="p"·data-group-id="2642410760-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="2642410760-6">}</span><span·class="p"·data-group-id="2642410760-4"[·...·truncated·by·diffoscope;·len:·50,·SHA:·6a959d36456126b1b3fb69f8eaa9e55107c6e08b59075004838c736c0fe8733b·...·]-3">)</span><span·class="p">.</span><span·class="w">
168 </span><span·class="p"·data-group-id="5188150532-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="5188150532-7">}</span><span·class="w">168 </span><span·class="p"·data-group-id="2642410760-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="2642410760-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="3146487408-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="3146487408-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="0401832514-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="0401832514-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="8781737544-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="8781737544-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="2478043275-1">(</span><span·class="n">Sshd</span><span·class="p"·data-group-id="2478043275-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="3631248868-1">(</span><span·class="p"·data-group-id="3631248868-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="7837345595-1">(</span><span·class="p"·data-group-id="7837345595-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="3631248868-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="3631248868-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·455,·SHA:·32b1fbf77da962f2734994fce6d4b95356943f17a11cf9fbe97f014aa3b2f10b·...·]-3">)</span><span·class="p">.</span><span·class="w">200 2&gt;·</span><span·class="p"·data-group-id="7837345595-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="7837345595-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·455,·SHA:·671f6dceca7fa54317a1c4aeb8a0289d356fbd274d747179123c7120531c81c3·...·]-3">)</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="3631248868-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="3631248868-5">}</span><span·class="gp·unselectable">201 </span><span·class="p"·data-group-id="7837345595-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="7837345595-5">}</span><span·class="gp·unselectable">
202 3&gt;·</span><span·class="p"·data-group-id="3631248868-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="3631248868-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·3d2e434ce7370e1b5af9801e894685d910440df3117a5cf9bc291a6ca8bd32e4·...·]-7">)</span><span·class="p">.</span><span·class="w">202 3&gt;·</span><span·class="p"·data-group-id="7837345595-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="7837345595-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·6be18d0cf4ba91d78c0045bc13e33fe4c28827ea581392093410f8b8d9b73b79·...·]-7">)</span><span·class="p">.</span><span·class="w">
203 </span><span·class="p"·data-group-id="3631248868-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="3631248868-8">}</span><span·class="gp·unselectable">203 </span><span·class="p"·data-group-id="7837345595-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="7837345595-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="3631248868-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:·3201f1f6ba6669c9f3b0f694bf619133667af536688aa982e7a7994a1c3b0d97·...·]-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="7837345595-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:·0fa053f935cdac9ded6ec593fb473704a0828fed9daee1555c5013d077b6b04d·...·]-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="3631248868-10">(</span><span·class="p"·data-group-id="3631248868-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="7837345595-10">(</span><span·class="p"·data-group-id="7837345595-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="3631248868-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:·68ed68ec1e64c72a697aa0756855c5d8e3c21eb15242f6f9682980a614df5ebe·...·]-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="7837345595-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:·535249579bf91756df4d80b779928f35b876574c50e9b4241efa4867a2123b9a·...·]-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="3631248868-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:·0bb5be06fb23b65da56cb1419418a992f57e7fbd015cf6d46ebaf99b064e6833·...·]-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="7837345595-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:·476104f43f7a8e686372f5dca53498c66213db1709a0748d90e5b7c667bcbeda·...·]-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="3631248868-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:·30ce5ebb57b55c891239c983b2c3aeda7048e18fe08b7b79e958b935b228e122·...·]-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="7837345595-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:·f8699a89d0fd31e90440bcfc6d3a1f9208b7c0a6d088b18c768029a9135c46a1·...·]-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="3631248868-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:·44086121b622aea6e455d2271b47fca2e6d2db0cfc59604f830219fc467d5cbd·...·]-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="7837345595-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:·57702c4a1a3187cd92d1978c320df7e509a45567ffcc808e8c84564fbdafab76·...·]-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="3631248868-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="3631248868-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="7837345595-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="7837345595-20">)</span><span·class="p">.</span><span·class="w">
212 </span><span·class="p"·data-group-id="3631248868-21">{</span><span·class="ss">channels</span><span·class="p">,</span><span·class="p"·data-group-id="3631248868-22">[</span><span·class="p"·data-group-id="3631248868-22">]</span><span·class="p"·data-group-id="3631248868-21">}</span><span·class="w">212 </span><span·class="p"·data-group-id="7837345595-21">{</span><span·class="ss">channels</span><span·class="p">,</span><span·class="p"·data-group-id="7837345595-22">[</span><span·class="p"·data-group-id="7837345595-22">]</span><span·class="p"·data-group-id="7837345595-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="4114064237-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="4114064237-2">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·5b952f30607f9a2c32f6e1244268437f07e0a9057b6a2fc91700e617dea1d86c·...·]-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="6626534013-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="6626534013-2">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·7cde5673c472162d20136d0ef33daf6fde564bcf84ea252924bc031d9492a743·...·]-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="4114064237-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="4114064237-3">}</span><span·class="gp·unselectable">217 5&gt;·</span><span·class="w">········</span><span·class="p"·data-group-id="6626534013-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="6626534013-3">}</span><span·class="gp·unselectable">
218 5&gt;·</span><span·class="w">····</span><span·class="p"·data-group-id="4114064237-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="4114064237-5">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·8d1f98a615aa99712ec80d561a1dc37de6b7c8ab62a3f7ed89f0099d9f277801·...·]-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="6626534013-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="6626534013-5">{</span><span·class="ss">da[·...·truncated·by·diffoscope;·len:·335,·SHA:·d0dbe58565864a05839a9b84f6a3e3d78b4ca8b627830fb8057a7f8915a43b3f·...·]-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="4114064237-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="4114064237-6">}</span><span·class="gp·unselectable">219 5&gt;·</span><span·class="w">········</span><span·class="p"·data-group-id="6626534013-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="n">Result</span><span·class="p"·data-group-id="6626534013-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="4114064237-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4114064237-8">&lt;&lt;</span><span·class="s">&quot;/home/otptest\n&quot;</span><span·class="p"·data-group-id="4114064237-8">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·c87c90f24c741516b0b972aa054eda63802aa59603a5bd63f6f4783ad8bd9f34·...·]-7">}</span><span·class="w">221 </span><span·class="p"·data-group-id="6626534013-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6626534013-8">&lt;&lt;</span><span·class="s">&quot;/home/otptest\n&quot;</span><span·class="p"·data-group-id="6626534013-8">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·948f556b940f559e81ff75612675ff353997b5322473d7517f561dea85cc350a·...·]-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="4208706700-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="4208706700-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·311,·SHA:·42eec15b81c456370675a8b7660669df019f34732c207dcd32fdfba8f6cb6cc6·...·]-2">)</span><span·class="p">.</span><span·class="w">225 7&gt;·</span><span·class="p"·data-group-id="9080919106-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="9080919106-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·311,·SHA:·9a9bbb8e0d05b68f6bf3c7070922e3d862f13df9b5d7d98e207b61aa36eaf5f1·...·]-2">)</span><span·class="p">.</span><span·class="w">
226 </span><span·class="p"·data-group-id="4208706700-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4208706700-3">}</span><span·class="w">226 </span><span·class="p"·data-group-id="9080919106-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="9080919106-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="3771465367-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="3771465367-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="9701629606-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="9701629606-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="2292712177-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="2292712177-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·457,·SHA:·2d5927caff26d1366966d264769de17e8d3452e0a1e10ee7465f7dc97afee4b2·...·]-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="4983334173-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="4983334173-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·457,·SHA:·e96c3b264ced163a6d7d0ef3e7ddbbb70bb8f94fd940b7e8bd60b91336d305e4·...·]-2">)</span><span·class="p">.</span><span·class="w">
246 </span><span·class="p"·data-group-id="2292712177-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="2292712177-4">}</span><span·class="gp·unselectable">246 </span><span·class="p"·data-group-id="4983334173-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="4983334173-4">}</span><span·class="gp·unselectable">
247 2&gt;·</span><span·class="p"·data-group-id="2292712177-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="2292712177-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·d3a6e36c52458f3b92713d36ce0c059c78db3a2dce7f35b269dfc8cc875548ec·...·]-6">)</span><span·class="p">.</span><span·class="w">247 2&gt;·</span><span·class="p"·data-group-id="4983334173-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="4983334173-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·308,·SHA:·2c55c68e30577a64ae76a043ec9d29470e946d0fa579b4a05622576af32ef011·...·]-6">)</span><span·class="p">.</span><span·class="w">
248 </span><span·class="p"·data-group-id="2292712177-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="2292712177-7">}</span><span·class="gp·unselectable">248 </span><span·class="p"·data-group-id="4983334173-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">0</span><span·class="p"·data-group-id="4983334173-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="2292712177-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="4983334173-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="2292712177-8">)</span><span·class="p">.</span><span·class="w">251 ·································</span><span·class="ss">infinity</span><span·class="p"·data-group-id="4983334173-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="2292712177-9">(</span><span·class="p"·data-group-id="2292712177-9">)</span><span·class="p">.</span><span·class="w">253 4&gt;·</span><span·class="nf">flush</span><span·class="p"·data-group-id="4983334173-9">(</span><span·class="p"·data-group-id="4983334173-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="2292712177-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:·d2b67358eeadfed1922fb9e040187bebb24a55ffc86e033dfca06f23e462ecfd·...·]-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="4983334173-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:·8f8ad13c9cd5f6d6335e33f96516764033b4342c8b0c7e89d7708635f948ffd4·...·]-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="2292712177-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:·a613e28a2aad24e7c916459483750cf92d4fa2770b4fa3c59d73651f5c8aabc6·...·]-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="4983334173-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:·5d7507a28cd11f304b16b030c79eee3e8fe4530d75554ae06e63db55588f967b·...·]-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="2292712177-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:·6d39fdc3ee893d1433845f7818cef9d611f35c6cc7ec1b9a6c75a6727bcdec4a·...·]-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="4983334173-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:·22289fa051a83a3788c4ecbae4f7d061062885e457316bba89618e6ab4ca7261·...·]-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="2292712177-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:·8e623646f5fe97dda2122cbb15acfd262662a79c24bd2abdf01441433e10d35b·...·]-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="4983334173-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:·497b0df149f74f9cee276624fe3a940bb3392a706c8ee2c568226fbc42fb6715·...·]-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; 160264/210313 bytes (76.20%) of diff not shown.
607 KB
./usr/share/doc/erlang-doc/html/lib/ssl-11.2.9/doc/html/ssl.epub
3.2 KB
zipinfo {}
    
Offset 1, 21 lines modifiedOffset 1, 21 lines modified
1 Zip·file·size:·206818·bytes,·number·of·entries:·191 Zip·file·size:·206816·bytes,·number·of·entries:·19
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:56·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:50·mimetype
3 ?rw-r--r--··6.1·unx···170720·bx·defN·25-Mar-18·07:56·OEBPS/using_ssl.xhtml3 ?rw-r--r--··6.1·unx···170720·bx·defN·25-Mar-18·08:50·OEBPS/using_ssl.xhtml
4 ?rw-r--r--··6.1·unx······712·bx·defN·25-Mar-18·07:56·OEBPS/title.xhtml4 ?rw-r--r--··6.1·unx······712·bx·defN·25-Mar-18·08:50·OEBPS/title.xhtml
5 ?rw-r--r--··6.1·unx····72661·bx·defN·25-Mar-18·07:56·OEBPS/standards_compliance.xhtml5 ?rw-r--r--··6.1·unx····72661·bx·defN·25-Mar-18·08:50·OEBPS/standards_compliance.xhtml
6 ?rw-r--r--··6.1·unx····19957·bx·defN·25-Mar-18·07:56·OEBPS/ssl_session_cache_api.xhtml6 ?rw-r--r--··6.1·unx····19957·bx·defN·25-Mar-18·08:50·OEBPS/ssl_session_cache_api.xhtml
7 ?rw-r--r--··6.1·unx·····8192·bx·defN·25-Mar-18·07:56·OEBPS/ssl_protocol.xhtml7 ?rw-r--r--··6.1·unx·····8192·bx·defN·25-Mar-18·08:50·OEBPS/ssl_protocol.xhtml
8 ?rw-r--r--··6.1·unx····24574·bx·defN·25-Mar-18·07:56·OEBPS/ssl_distribution.xhtml8 ?rw-r--r--··6.1·unx····24574·bx·defN·25-Mar-18·08:50·OEBPS/ssl_distribution.xhtml
9 ?rw-r--r--··6.1·unx····15730·bx·defN·25-Mar-18·07:56·OEBPS/ssl_crl_cache_api.xhtml9 ?rw-r--r--··6.1·unx····15730·bx·defN·25-Mar-18·08:50·OEBPS/ssl_crl_cache_api.xhtml
10 ?rw-r--r--··6.1·unx·····6972·bx·defN·25-Mar-18·07:56·OEBPS/ssl_crl_cache.xhtml10 ?rw-r--r--··6.1·unx·····6972·bx·defN·25-Mar-18·08:50·OEBPS/ssl_crl_cache.xhtml
11 ?rw-r--r--··6.1·unx····11323·bx·defN·25-Mar-18·07:56·OEBPS/ssl_app.xhtml11 ?rw-r--r--··6.1·unx····11323·bx·defN·25-Mar-18·08:50·OEBPS/ssl_app.xhtml
12 ?rw-r--r--··6.1·unx···303454·bx·defN·25-Mar-18·07:56·OEBPS/ssl.xhtml12 ?rw-r--r--··6.1·unx···303454·bx·defN·25-Mar-18·08:50·OEBPS/ssl.xhtml
13 ?rw-r--r--··6.1·unx···240965·bx·defN·25-Mar-18·07:56·OEBPS/notes.xhtml13 ?rw-r--r--··6.1·unx···240965·bx·defN·25-Mar-18·08:50·OEBPS/notes.xhtml
14 ?rw-r--r--··6.1·unx·····1569·bx·defN·25-Mar-18·07:56·OEBPS/nav.xhtml14 ?rw-r--r--··6.1·unx·····1569·bx·defN·25-Mar-18·08:50·OEBPS/nav.xhtml
15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-erlang-ESPT6BQV.css15 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-erlang-ESPT6BQV.css
16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:56·OEBPS/dist/epub-LSJCIYTM.js16 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:50·OEBPS/dist/epub-LSJCIYTM.js
17 ?rw-r--r--··6.1·unx·····2608·bx·defN·25-Mar-18·07:56·OEBPS/content.opf17 ?rw-r--r--··6.1·unx·····2608·bx·defN·25-Mar-18·08:50·OEBPS/content.opf
18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:56·OEBPS/assets/logo.png18 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:50·OEBPS/assets/logo.png
19 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:56·META-INF/container.xml19 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:50·META-INF/container.xml
20 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:56·META-INF/com.apple.ibooks.display-options.xml20 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:50·META-INF/com.apple.ibooks.display-options.xml
21 19·files,·900769·bytes·uncompressed,·203464·bytes·compressed:··77.4%21 19·files,·900769·bytes·uncompressed,·203462·bytes·compressed:··77.4%
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,·Mar·18·2025·07:56:42,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Mar·18·2025·08:50:54,·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
171 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.9/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="9760596112-1">(</span><span·class="p"·data-group-id="9760596112-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="9760596112-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="9760596112-3">[</span><span·class="p"·data-group-id="9760596112-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="9760596112-4">}</span><span·class="p">,</span><span·class="w"> 
133 ····</span><span·class="p"·data-group-id="9760596112-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="9760596112-6">(</span><span·class="p"·data-group-id="9760596112-6">)</span><span·class="p"·data-group-id="9760596112-5">}</span><span·class="p"·data-group-id="9760596112-3">]</span><span·class="p"·data-group-id="9760596112-2">)</span><span·class="p">.</span><span·class="w"> 
134 </span><span·class="p"·data-group-id="9760596112-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9760596112-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·369,·SHA:·a925af42bf0531a6a5b44dab0a78deba2f5af238424106130b03063e816ae427·...·]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:·770,·SHA:·e428121eae7f473bf67ca5e4bba3aab967a615b64886ba1f4e0c24a1fd2db762·...·]
 133 ····</span><span·class="p"·data-group-id="3917668499-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="3917668499-6">(</span><span·class="p"·data-group-id="3917668499-6">)</span><span·class="p"·data-group-id="3917668499-5">}</span><span·class="p"·data-group-id="3917668499-3">]</span><span·class="p"·data-group-id="3917668499-2">)</span><span·class="p">.</span><span·class="w">
 134 </span><span·class="p"·data-group-id="3917668499-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3917668499-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3917668499-9">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="3917668499-9">]</span><span·class="p"·data-group-id="3917668499-8">}</span><span·class="p"·data-group-id="3917668499-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="3834364142-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="5769246018-1">[</span><span·class="w">
2473 </span><span·class="p"·data-group-id="3834364142-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="3834364142-2">}</span><span·class="p">,</span><span·class="w">2473 </span><span·class="p"·data-group-id="5769246018-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="5769246018-2">}</span><span·class="p">,</span><span·class="w">
2474 </span><span·class="p"·data-group-id="3834364142-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="3834364142-3">}</span><span·class="p">,</span><span·class="w">2474 </span><span·class="p"·data-group-id="5769246018-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="5769246018-3">}</span><span·class="p">,</span><span·class="w">
2475 </span><span·class="p"·data-group-id="3834364142-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="3834364142-4">}</span><span·class="p">,</span><span·class="w">2475 </span><span·class="p"·data-group-id="5769246018-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="5769246018-4">}</span><span·class="p">,</span><span·class="w">
2476 </span><span·class="p"·data-group-id="3834364142-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="3834364142-5">}</span><span·class="p">,</span><span·class="w">2476 </span><span·class="p"·data-group-id="5769246018-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="5769246018-5">}</span><span·class="p">,</span><span·class="w">
2477 </span><span·class="p"·data-group-id="3834364142-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="3834364142-6">}</span><span·class="p">,</span><span·class="w">2477 </span><span·class="p"·data-group-id="5769246018-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="5769246018-6">}</span><span·class="p">,</span><span·class="w">
2478 </span><span·class="p"·data-group-id="3834364142-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="3834364142-7">}</span><span·class="w">2478 </span><span·class="p"·data-group-id="5769246018-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="5769246018-7">}</span><span·class="w">
2479 </span><span·class="p"·data-group-id="3834364142-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="5769246018-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="4751507712-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="2309040949-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="4751507712-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="4873880347-1">[</span><span·class="w">2486 </span><span·class="ss">rsa_pss_rsae_sha256</span><span·class="p"·data-group-id="2309040949-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="5405992813-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="4873880347-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="5405992813-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="3633668099-1">(</span><span·class="n">Chain</span><span·class="p">:</span><span·class="p">:</span><span·class="p"·data-group-id="3633668099-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:·829733d15a1e571d69061ea8f0b70197afbdf825f18c59165f6da1d1a06d7dec·...·]-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="5241811343-1">(</span><span·class="n">Chain</span><span·class="p">:</span><span·class="p">:</span><span·class="p"·data-group-id="5241811343-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:·9bc0ff799459d518371b5ffc7e164cbe81cec1deb931324acf807dbb2be782b3·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
2574 ······</span><span·class="p"·data-group-id="3633668099-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:·6148b75dd3d4da95254bd046c17cc3d2cba99f8ec8380a73a8df70964748c379·...·]-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="5241811343-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:·01013d3696542d82027b938ccc205304e53ad742f61d2a0e469666c199ac17c9·...·]-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.3/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.3/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="4110808325-1">{</span><span·class="ss">customize_hostname_check</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4110808325-2">[</span><span·class="p"·data-group-id="4110808325-3">{</span><span·class="ss">match_fun</span[·...·truncated·by·diffoscope;·len:·443,·SHA:·be585990e4a79c0b3380d43736611dcf2578dc4d454e8766b05e63d63ccd06e9·...·]-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="5562738504-1">{</span><span·class="ss">customize_hostname_check</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5562738504-2">[</span><span·class="p"·data-group-id="5562738504-3">{</span><span·class="ss">match_fun</span[·...·truncated·by·diffoscope;·len:·443,·SHA:·145c1045144b10fc12a95043bbd63602d502b0a0262d379f8567974745696342·...·]-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.3/doc/html/erlang.html#t:binary/0">binary</a>()}·|3139 ··········{early_data,·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:binary/0">binary</a>()}·|
3140 ··········{middlebox_comp_mode,·MiddleBoxMode·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:boolean/0">boolean</a>()}.</pre>3140 ··········{middlebox_comp_mode,·MiddleBoxMode·::·<a·href="../../../../erts-15.2.3/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="4422292553-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="4422292553-2">{</span><span·class="n">SNI<[·...·truncated·by·diffoscope;·len:·181,·SHA:·cf1fce4567ac2115c93fbb75e9a3104a912d86ca1f6534dae9e4e232bcd91808·...·]-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="0517775292-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="0517775292-2">{</span><span·class="n">SNI<[·...·truncated·by·diffoscope;·len:·181,·SHA:·96e3cc2e6497dbef6c078be03d6896499470da0cf5b54f44de74078aee1e2069·...·]-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="0087025481-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="0087025481-2">{</span><span·class="ss">early_dat[·...·truncated·by·diffoscope;·len:·179,·SHA:·e54fcf0bcb08ab43f8acc8e78a8a2714a6ae6495a87b31ea531c391ee17ffab3·...·]-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="1261718634-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="1261718634-2">{</span><span·class="ss">early_dat[·...·truncated·by·diffoscope;·len:·179,·SHA:·0ce2fe30af3cd8d69800b3dade076cc254fb255c45e569037c1046da395352c5·...·]-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 3559, 28 lines modifiedOffset 3559, 28 lines modified
3559 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>3559 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>
3560 certificates.·<code·class="inline">rsa_pss_pss</code>·(RSA·certificates·using·Probabilistic·Signature3560 certificates.·<code·class="inline">rsa_pss_pss</code>·(RSA·certificates·using·Probabilistic·Signature
3561 Scheme)·are·supported·in·TLS-1.2·and·TLS-1.3,·but·some·TLS-1.2·implementations3561 Scheme)·are·supported·in·TLS-1.2·and·TLS-1.3,·but·some·TLS-1.2·implementations
3562 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·the3562 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
3563 peer·certificate·in·a·valid·certification·path.·So,·if·depth·is·0·the·PEER·must3563 peer·certificate·in·a·valid·certification·path.·So,·if·depth·is·0·the·PEER·must
3564 be·signed·by·the·trusted·ROOT-CA·directly;·if·1·the·path·can·be·PEER,·CA,3564 be·signed·by·the·trusted·ROOT-CA·directly;·if·1·the·path·can·be·PEER,·CA,
3565 ROOT-CA;·if·2·the·path·can·be·PEER,·CA,·CA,·ROOT-CA,·and·so·on.·The·default3565 ROOT-CA;·if·2·the·path·can·be·PEER,·CA,·CA,·ROOT-CA,·and·so·on.·The·default
3566 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="6719097172-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="67190[·...·truncated·by·diffoscope;·len:·58,·SHA:·d8ff851c98c6c3152a7a4df0196444e7884f2f26409c86755a398e8c0f2db2a4·...·]-2">}</span><span·class="p">,</span><span·class="w">3566 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="2000503368-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="20005[·...·truncated·by·diffoscope;·len:·58,·SHA:·9a9fc776e8bb6463bb88e40343f10e8dbf0cf890ad68863189114abb7665f195·...·]-2">}</span><span·class="p">,</span><span·class="w">
3567 ····</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="6719097172-3">(</span><span·class="p"·data-group-id="6719097172-3">)</span><span·class="p"·data-group-id="6719097172-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">3567 ····</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="2000503368-3">(</span><span·class="p"·data-group-id="2000503368-3">)</span><span·class="p"·data-group-id="2000503368-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
3568 ··</span><span·class="p"·data-group-id="6719097172-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:·72454b0035745d278f1f916103ecfab7d30c0d2ba9f43ed76449e8390d131f0a·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">3568 ··</span><span·class="p"·data-group-id="2000503368-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:·35b5de1f6fa89df1b46867b30275da26f2dd6b0b763281bac6e8bc3dad89eae6·...·]-4">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
3569 ··</span><span·class="p"·data-group-id="6719097172-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:·b19d3a92dbf0f8660ad6ae3b7f9d1b4c7e80ee0d9f321cb69c120a412d1420a9·...·]-8">}</span><span·class="p">.</span><span·class="w">3569 ··</span><span·class="p"·data-group-id="2000503368-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:·4a3be89201766791964d4b0bd5b294b5091ef1103d48421465a3aed9d4b0a52a·...·]-8">}</span><span·class="p">.</span><span·class="w">
  
3570 </span><span·class="nf">fun</span><span·class="p"·data-group-id="6719097172-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="6719[·...·truncated·by·diffoscope;·len:·435,·SHA:·6379debca771299a1fa6bad1351608f805d97ba5a2e9ab420bbe661cf16fbd9d·...·]-12">)</span><span·class="p">,</span><span·class="w">3570 </span><span·class="nf">fun</span><span·class="p"·data-group-id="2000503368-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="2000[·...·truncated·by·diffoscope;·len:·435,·SHA:·e103364c675b30a2d6654cc0b04f775b5d32db5a8eecf591a83d622e75826102·...·]-12">)</span><span·class="p">,</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.9/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="1295717252-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1295717252-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:·320,·SHA:·12d4bc5f45702ccdab34ce5f3ea82b88ceb4cbd9dc91a7189c42daebd4886c6c·...·]-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="9882717914-1">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9882717914-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:·320,·SHA:·5b35f303d21081d3f6d199779eee64040390ef5ce05caae270b4f53d40245771·...·]-3">}</span><span·class="p">,</span><span·class="w">
151 ······</span><span·class="p"·data-group-id="1295717252-4">[</span><span·class="p"·data-group-id="1295717252-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="1295717252-5">}</span><span·class="p">,</span><span·class="w">151 ······</span><span·class="p"·data-group-id="9882717914-4">[</span><span·class="p"·data-group-id="9882717914-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="9882717914-5">}</span><span·class="p">,</span><span·class="w">
152 ······</span><span·class="p"·data-group-id="1295717252-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="1295717252-6">}</span><span·class="p">,</span><span·class="w">152 ······</span><span·class="p"·data-group-id="9882717914-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="9882717914-6">}</span><span·class="p">,</span><span·class="w">
153 ······</span><span·class="p"·data-group-id="1295717252-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="1295717252-7">}</span><span·class="p">,</span><span·class="w">153 ······</span><span·class="p"·data-group-id="9882717914-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="9882717914-7">}</span><span·class="p">,</span><span·class="w">
154 ······</span><span·class="p"·data-group-id="1295717252-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="1295717252-8">}</span><span·class="p">,</span><span·class="w">154 ······</span><span·class="p"·data-group-id="9882717914-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="9882717914-8">}</span><span·class="p">,</span><span·class="w">
155 ······</span><span·class="p"·data-group-id="1295717252-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="1295717252-9">}</span><span·class="p">,</span><span·class="w">155 ······</span><span·class="p"·data-group-id="9882717914-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="9882717914-9">}</span><span·class="p">,</span><span·class="w">
156 ······</span><span·class="p"·data-group-id="1295717252-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="1295717252-10">}</span><span·class="w">156 ······</span><span·class="p"·data-group-id="9882717914-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="9882717914-10">}</span><span·class="w">
157 ······</span><span·class="p"·data-group-id="1295717252-4">]</span><span·class="p"·data-group-id="1295717252-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="9882717914-4">]</span><span·class="p"·data-group-id="9882717914-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.1/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.1/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="4918057337-1">[</span><span·class="p"·data-group-id="4918057337-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="6121198349-1">[</span><span·class="p"·data-group-id="6121198349-2">{</span><span·class="ss">server</span><span·class="p">,</span><span·class="w">
205 ··</span><span·class="p"·data-group-id="4918057337-3">[</span><span·class="p"·data-group-id="4918057337-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="491805733[·...·truncated·by·diffoscope;·len:·107,·SHA:·799ce73cbfd5ce23ef35651451d87b6a6bc560af120869414746ae639c20e258·...·]-2">}</span><span·class="p">,</span><span·class="w">205 ··</span><span·class="p"·data-group-id="6121198349-3">[</span><span·class="p"·data-group-id="6121198349-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="612119834[·...·truncated·by·diffoscope;·len:·107,·SHA:·d2994ffdb131e797389b0946f53f2a3e383f45642aba2883ecc697761bb1b6c5·...·]-2">}</span><span·class="p">,</span><span·class="w">
206 ·</span><span·class="p"·data-group-id="4918057337-5">{</span><span·class="ss">client</span><span·class="p">,</span><span·class="w">206 ·</span><span·class="p"·data-group-id="6121198349-5">{</span><span·class="ss">client</span><span·class="p">,</span><span·class="w">
207 ··</span><span·class="p"·data-group-id="4918057337-6">[</span><span·class="p"·data-group-id="4918057337-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="49[·...·truncated·by·diffoscope;·len:·167,·SHA:·0d5781a2adc23a9f09c004a5893c0e1a0f38b1e2745ddef7ea2b8e4446e08c0d·...·]-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="6121198349-6">[</span><span·class="p"·data-group-id="6121198349-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="61[·...·truncated·by·diffoscope;·len:·167,·SHA:·a467639108b5cbe7f1be465a4b52f3a55fcf6c575bcbe9b4a58beb34835bc1f8·...·]-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="3669743153-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="3669743153-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:·46eb1d2e721365f9e0ba158685f68df2a888a42cba3987d14a97cb81185727ea·...·]-2">]</span><span·class="w">277 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="2411806187-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="2411806187-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:·400efcc396890f3a7dbd54427fbaeed8a7ce5d224bca52a3d79247f6d84fdf5d·...·]-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="3669743153-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="3669743153-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="2411806187-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="2411806187-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="3669743153-4">(</span><span·class="p"·data-group-id="3669743153-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="2411806187-4">(</span><span·class="p"·data-group-id="2411806187-4">)</span><span·class="p">.</span><span·class="w">
280 </span><span·class="p"·data-group-id="3669743153-5">[</span><span·class="p"·data-group-id="3669743153-6">{</span><span·class="ss">root</span><span·class="p">,</span><span·class="p"·data-group-id="3669743153-7">[</span><span·class="s">&quot;/usr/local/erlang&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·acd55f41af2150be1cdd4d60d0ae6df8d678ea037dcb6f7e4ee082e11d6af721·...·]-6">}</span><span·class="p">,</span><span·class="w">280 </span><span·class="p"·data-group-id="2411806187-5">[</span><span·class="p"·data-group-id="2411806187-6">{</span><span·class="ss">root</span><span·class="p">,</span><span·class="p"·data-group-id="2411806187-7">[</span><span·class="s">&quot;/usr/local/erlang&quot;</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·80d75b4ff1b7a6261521ebf92b49999f1690c08faf7dff66bd12f35cb0d340f2·...·]-6">}</span><span·class="p">,</span><span·class="w">
281 ·</span><span·class="p"·data-group-id="3669743153-8">{</span><span·class="ss">progname</span><span·class="p">,</span><span·class="p"·data-group-id="3669743153-9">[</span><span·class="s">&quot;erl·&quot;</span><span·class="p"·data-group-id="3669743153-9">]</span><span·class="p"·data-group-id="36[·...·truncated·by·diffoscope;·len:·8,·SHA:·1c3f0c55b3dfd27dedfb22cbab3757c8517bc19c318ef5a802804cd1f861be4c·...·]-8">}</span><span·class="p">,</span><span·class="w">281 ·</span><span·class="p"·data-group-id="2411806187-8">{</span><span·class="ss">progname</span><span·class="p">,</span><span·class="p"·data-group-id="2411806187-9">[</span><span·class="s">&quot;erl·&quot;</span><span·class="p"·data-group-id="2411806187-9">]</span><span·class="p"·data-group-id="24[·...·truncated·by·diffoscope;·len:·8,·SHA:·dfcc78bb187aaa96cca72b13c660ed644e9a7bdfd5dcfb8b7af11c9bdb3caaa3·...·]-8">}</span><span·class="p">,</span><span·class="w">
282 ·</span><span·class="p"·data-group-id="3669743153-10">{</span><span·class="ss">sname</span><span·class="p">,</span><span·class="p"·data-group-id="3669743153-11">[</span><span·class="s">&quot;ssl_test&quot;</span><span·class="p"·data-group-id="3669743153-11">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·b89eefb48c28cdd213786d208fe6152b39765d56f89e265a812584ee44f94842·...·]-10">}</span><span·class="p">,</span><span·class="w">282 ·</span><span·class="p"·data-group-id="2411806187-10">{</span><span·class="ss">sname</span><span·class="p">,</span><span·class="p"·data-group-id="2411806187-11">[</span><span·class="s">&quot;ssl_test&quot;</span><span·class="p"·data-group-id="2411806187-11">]</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·12,·SHA:·64368ac4de26a6ae0cb76ece12b2d1b515393cd8bf003cade4fcb2a4b060fbef·...·]-10">}</span><span·class="p">,</span><span·class="w">
283 ·</span><span·class="p"·data-group-id="3669743153-12">{</span><span·class="ss">boot</span><span·class="p">,</span><span·class="p"·data-group-id="3669743153-13">[</span><span·class="s">&quot;/home/me/ssl/start_ssl&quot;</span><span·class="p"·data-group-id="3669743153-13">]</span><span·class="p"·data-group-id="3669743153-12">}</span><span·class="p">,</span><span·class="w"> 
284 ·</span><span·class="p"·data-group-id="3669743153-14">{</span><span·class="ss">proto_dist</span><span·class="p">,</span><span·class="p"·data-group-id="3669743153-15">[</span><span·class="s">&quot;inet_tls&quot;</span><span·class="p"·data-group-id="3669743153-15">]</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·20,·SHA:·e30673b42e8032e86ce1b8deb4e6999420b0358758f3670def935bb233c7568d·...·]">}</span><span·class="p">,</span><span·class="w">283 ·</span><span·class="p"·data-group-id="2411806187-12">{</span><span·class="ss">boot</span><span·class="p">,</span><span·class="p"·data-group-id="2411806187-13">[</span><span·class="s">&quot;/home/me/ssl/start_ssl&quot;</span><span·class="p"·data-group-id="2411806187-13">]</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·28,·SHA:·6ab0011937cf5ba617c65e4ce1a0a698406df9c77d7dfd94d51041632ade3679·...·]">}</span><span·class="p">,</span><span·class="w">
 284 ·</span><span·class="p"·data-group-id="2411806187-14">{</span><span·class="ss">proto_dist</span><span·class="p">,</span><span·class="p"·data-group-id="2411806187-15">[</span><span·class="s">&quot;inet_tls&quot;</span><span·class="p"·data-group-id="2411806187-15">]</span><span·class="p"·data-group-id="2411806187-14">}</span><span·class="p">,</span><span·class="w">
285 ·</span><span·class="p"·data-group-id="3669743153-16">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="3669743153-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:·111,·SHA:·ccca1304d0c9166e1546f745a4f3b6c8348be657d573e52517f2caa9d0456b8b·...·]-16">}</span><span·class="p">,</span><span·class="w">285 ·</span><span·class="p"·data-group-id="2411806187-16">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="2411806187-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:·111,·SHA:·b4c5b69bc322948952156f44a4e99530ef7055b2c2ba4b0d123ac441b9dad780·...·]-16">}</span><span·class="p">,</span><span·class="w">
286 ·</span><span·class="p"·data-group-id="3669743153-18">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="3669743153-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="2411806187-18">{</span><span·class="ss">ssl_dist_opt</span><span·class="p">,</span><span·class="p"·data-group-id="2411806187-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="3669743153-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="2411806187-19">]</span><span·class="w">
288 ·</span><span·class="p"·data-group-id="3669743153-20">{</span><span·class="ss">home</span><span·class="p">,</span><span·class="p"·data-group-id="3669743153-21">[</span><span·class="s">&quot;/home/me&quot;</span><span·class="p"·data-group-id="3669743153-21">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·8ddd2d6948b21f906315dd3c0d319308bd33318e9a0bc68fa425bfa1f5918675·...·]-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="2411806187-20">{</span><span·class="ss">home</span><span·class="p">,</span><span·class="p"·data-group-id="2411806187-21">[</span><span·class="s">&quot;/home/me&quot;</span><span·class="p"·data-group-id="2411806187-21">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·f3e4033d02c032e342f4a7a91a1bb151e5e9931db12e205249ac277dc9faaa04·...·]-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.9/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="3564367100-1">(</span><span·class="p"·data-group-id="3564367100-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="3564367100-2">(</span[·...·truncated·by·diffoscope;·len:·429,·SHA:·a5575837bc7a5a5ebe92b6640170214436d899712a64c0df1d559d78f88e6eda·...·]-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="3376492764-1">(</span><span·class="p"·data-group-id="3376492764-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="3376492764-2">(</span[·...·truncated·by·diffoscope;·len:·429,·SHA:·78e84068ab2e7066d0a54f9c98a57776b6d7d3b528df4f7d4650574d89a0f6b1·...·]-4">}</span><span·class="p">,</span><span·class="w">
153 ·················································</span><span·class="p"·data-group-id="3564367100-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="3564367100-6">(</span><span·clas[·...·truncated·by·diffoscope;·len:·190,·SHA:·86aa7d5cbec18edb01641f84c0b395fc3ffd4b03146be386c2e84af19bcb80e6·...·]-2">)</span><span·class="p">.</span><span·class="w">153 ·················································</span><span·class="p"·data-group-id="3376492764-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="3376492764-6">(</span><span·clas[·...·truncated·by·diffoscope;·len:·190,·SHA:·af114ad05d0404f8b3197f66491a7cb1de35e88c87c2488c365a468f41e977f9·...·]-2">)</span><span·class="p">.</span><span·class="w">
154 ···</span><span·class="p"·data-group-id="3564367100-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3564367100-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3564367100-9">[</spa[·...·truncated·by·diffoscope;·len:·221,·SHA:·bebe5751fc8c036ef147763bb754d15827b82ea2192749e1d140576648d2ab80·...·]-7">}</span></code></pre><h2·id="basic-connection"·class="section-heading">154 ···</span><span·class="p"·data-group-id="3376492764-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3376492764-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3376492764-9">[</spa[·...·truncated·by·diffoscope;·len:·221,·SHA:·0141453548ef45357c0be4f348992b0f89f0e195aa2d6f854b11345bcd12b9dc·...·]-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="3701722351-1">(</span><span·class="p"·data-group-id="3701722351-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="2803380349-1">(</span><span·class="p"·data-group-id="2803380349-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="9408945311-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="9408945311-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="5214586590-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="5214586590-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="9408945311-2">(</span><span·class="mi">9999</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9408945311-3">[</span><span·class="p"·data-group-id="9408945311-4">{</span><span·class="ss">certs_keys</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·124,·SHA:·9fa11a32511ffaa8aee17196878f21ac422a66b3bb95d166ffc2573481b8a5d2·...·]-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="5214586590-2">(</span><span·class="mi">9999</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5214586590-3">[</span><span·class="p"·data-group-id="5214586590-4">{</span><span·class="ss">certs_keys</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·124,·SHA:·e0a84903643a312b90460814a7a916316f99fa260ca6ed7514a1f1fff025f20d·...·]-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="9408945311-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="5214586590-6">}</span><span·class="p">,</span><span·class="w">
166 ································</span><span·class="p"·data-group-id="9408945311-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="5214586590-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="9408945311-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="5214586590-7">}</span><span·class="w">
169 ·······························</span><span·class="p"·data-group-id="9408945311-5">]</span><span·class="p"·data-group-id="9408945311-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="9408945311-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="9408945311-8">}</span><span·class="p"·data-group-id="9408945311-3">]</span><span·class="p"·data-group-id="9408945311-2">)</span><span·class="p">.</span><span·class="w"> 
170 </span><span·class="p"·data-group-id="9408945311-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9408945311-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9408945311-11">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9408945311-11">]</span><span·class="p"·data-group-id="9408945311-10">}</span><span·class="p"·data-group-id="9408945311-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="3479988304-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="3479988304-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="3479988304-2">(</span><span·class="n">ListenSocket</span><span·class="p"·data-group-id="3479988304-2">)</span><span·class="p">.</span><span·class="w"> 
171 </span><span·class="p"·data-group-id="3479988304-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3479988304-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·453,·SHA:·02e51114ad4a7de65c7dbb948547e6357e378b200d69046b7aa3a60a71053538·...·]169 ·······························</span><span·class="p"·data-group-id="5214586590-5">]</span><span·class="p"·data-group-id="5214586590-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="5214586590-8">{</span><span·class="ss">reuseaddr</span><s[·...·truncated·by·diffoscope;·len:·273,·SHA:·ab7714e6961daf5f3715e2fe160c21082e541556df55f56b4e912fbf6b5149df·...·]
 170 </span><span·class="p"·data-group-id="5214586590-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5214586590-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5214586590-11">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5214586590-11">]</span><span·class="p"·data-group-id="5214586590-10">}</span><span·class="p"·data-group-id="5214586590-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="2061904813-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="2061904813-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="2061904813-2">(</span><span·class="n">ListenSocket</span><span·class="p"·data-group-id="2061904813-2">)</span><span·class="p">.</span><span·class="w">
 171 </span><span·class="p"·data-group-id="2061904813-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2061904813-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2061904813-5">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2061904813-5">]</span><span·class="p"·data-group-id="2061904813-4">}</span><span·class="p"·data-group-id="2061904813-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="6912173116-1">(</span><span·class="p"·data-group-id="6912173116-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="2952023340-1">(</span><span·class="p"·data-group-id="2952023340-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="5072432323-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="5072432323-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·117,·SHA:·f1432898b77f55f11ad90b25acf979f701fbe02c37bc438c182f42a0db1cd07b·...·]-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="1094734576-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="1094734576-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·117,·SHA:·5c271bc6fbc640a802feec36ea82b5c83049e6fd49e88fd36fb0cd0b45ea0820·...·]-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="5072432323-3">[</span><span·class="p"·data-group-id="5072432323-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="5072432323-4">}</span><span·class="p">,</span><span·class="w">176 ······</span><span·class="p"·data-group-id="1094734576-3">[</span><span·class="p"·data-group-id="1094734576-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="1094734576-4">}</span><span·class="p">,</span><span·class="w">
177 ······</span><span·class="p"·data-group-id="5072432323-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="5072432323-5">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·381,·SHA:·7c60e395511e03b49d1a2380e73100afa8ac786ca3d8a6560047639efcb95109·...·]-2">)</span><span·class="p">.</span><span·class="w">177 ······</span><span·class="p"·data-group-id="1094734576-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="1094734576-5">}</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·381,·SHA:·e2670fcba6832a7941b3b50f896f3d06c1ced75c2b5ac210822d39bcaacc95ef·...·]-2">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="5072432323-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5072432323-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5072432323-9">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5072432323-9">]</span><span·class="p"·data-group-id="5072432323-8">}</span><span·class="p"·data-group-id="5072432323-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="1502262665-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="1502262665-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="1502262665-2">(</span><span·class="n">TLSTransportSocket</span><span·class="p"·data-group-id="1502262665-2">)</span><span·class="p">.</span><span·class="w"> 
179 </span><span·class="p"·data-group-id="1502262665-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1502262665-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1502262665-5">[</spa[·...·truncated·by·diffoscope;·len:·409,·SHA:·ed2a2a62f928824156d1e337b8ac2a98479eec9368d6f7f3c63d4862a9324794·...·]178 </span><span·class="p"·data-group-id="1094734576-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1094734576-8">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1094734576-9">[</spa[·...·truncated·by·diffoscope;·len:·1021,·SHA:·c7474bc416729db1168f68f1a63f08e4a4ab34470752d0a6cb2c09046b49aac9·...·]
 179 </span><span·class="p"·data-group-id="6601347059-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6601347059-4">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6601347059-5">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6601347059-5">]</span><span·class="p"·data-group-id="6601347059-4">}</span><span·class="p"·data-group-id="6601347059-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="0400545667-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="0400545667-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="2918351421-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="2918351421-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="0551576412-1">(</span><span·class="p"·data-group-id="0551576412-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="0148359476-1">(</span><span·class="p"·data-group-id="0148359476-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="0551576412-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="0551576412-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="0551576412-4">[</span><span·class="p">.</sp[·...·truncated·by·diffoscope;·len:·260,·SHA:·d13368f1e79f1e1624110f2c380646616282f0cd76f5468c41bcf7055a4494ae·...·]-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="0148359476-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="0148359476-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="0148359476-4">[</span><span·class="p">.</sp[·...·truncated·by·diffoscope;·len:·260,·SHA:·3b13f37ecf692b1df07bb630ba028b64258164183cc2696e8183ae6600e76b90·...·]-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="2808321575-1">(</span><span·class="p"·data-group-id="2808321575-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="4164661123-1">(</span><span·class="p"·data-group-id="4164661123-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="9971742038-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="9971742038-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·470,·SHA:·3e3b9f0e2b4dd255a3aa54d3d1c34bb973197b6eb71f8f2ffcbfaaf036d8cdf1·...·]-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="3455237537-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="3455237537-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·470,·SHA:·1c33a0cca700823ecdf836ac9fc6f8781a07287b685e3669916fe3de74ad5c22·...·]-4">}</span><span·class="p">,</span><span·class="w">
199 ··</span><span·class="p"·data-group-id="9971742038-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="9971742038-5">}</span><span·class="p"·data-group-id="9971742038-3">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·37eee28bb624e634ceb0a2f174f9dd9daa75aab99f2089319df64e8996dde7a8·...·]-2">)</span><span·class="p">.</span><span·class="w">199 ··</span><span·class="p"·data-group-id="3455237537-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="3455237537-5">}</span><span·class="p"·data-group-id="3455237537-3">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·7d318b40176bb2cce996127c20917b87b909e2d3444a06458511bd44436ac062·...·]-2">)</span><span·class="p">.</span><span·class="w">
200 ··</span><span·class="p"·data-group-id="9971742038-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:·dcd6b43ce901790a5f62f312c24cc5bea891f3bb99c78eb83579c09715d5bf3b·...·]-2">)</span><span·class="p">.</span><span·class="w">200 ··</span><span·class="p"·data-group-id="3455237537-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:·9db07c98aa7e8bc10254b6d783f30d14370c8c3b7235e2632fa3d4afa9895a98·...·]-2">)</span><span·class="p">.</span><span·class="w">
201 ··</span><span·class="p"·data-group-id="8981940005-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:·83a5e0ad51349ae2b8b2fd8536fe1ce8a96af56bf0d51f18c023bfa0a5dfa703·...·]-1">)</span><span·class="p">.</span><span·class="w">201 ··</span><span·class="p"·data-group-id="1913806510-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:·73a096d25041176760c79e3870799143f7f74b8606faab96b81b04a7768f8b29·...·]-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="3387384867-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="3387384867-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·1559,·SHA:·dfefc825c3b65664c4c08475b6fd625a7dde679ac4a9dedb45f725dd72670207·...·]-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="6327495404-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="6327495404-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·1559,·SHA:·ed2025d29d3de0b308822effde7b79b46dda050b3e21417a80458628fa2e2412·...·]-4">}</span><span·class="p">,</span><span·class="w">
203 ··</span><span·class="p"·data-group-id="8293380155-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="8293380155-5">}</span><span·class="p">,</span><span·class="w">203 ··</span><span·class="p"·data-group-id="8904512953-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="8904512953-5">}</span><span·class="p">,</span><span·class="w">
204 ··</span><span·class="p"·data-group-id="8293380155-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="8293380155-6">}</span><span·class="p">,</span><span·class="w">204 ··</span><span·class="p"·data-group-id="8904512953-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="8904512953-6">}</span><span·class="p">,</span><span·class="w">
205 ··</span><span·class="p"·data-group-id="8293380155-7">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8293380155-8">[</span><span·class="p"·data-group-id="8293380155-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="8293380155-9">}</span><span·class="p"·data-group-id="8293380155-8">]</span><span·class="p"·data-group-id="8293380155-7">}</span><span·class="p"·data-group-id="8293380155-3">]</span><span·class="p"·data-group-id="8293380155-2">)</span><span·class="p">.</span><span·class="w"> 
206 ··</span><span·class="p"·data-group-id="8293380155-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8293380155-11">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="8293380155-12">[</span><span·class="p">.</[·...·truncated·by·diffoscope;·len:·318,·SHA:·6ca69a2e1f77420da8af7c2386f8ea8610dbf61924ca8688dbbf13a32717e843·...·]205 ··</span><span·class="p"·data-group-id="8904512953-7">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8904512953-8">[</span><span·class="p"·data-group-id="8904512953-9">#{</span><span·class="ss">certfile</span><span·class="w[·...·truncated·by·diffoscope;·len:·607,·SHA:·96b68e6d80124e34e1a9f4a482ed0f72582e2e75ecb1f5080a84e29892f8d9ff·...·]
 206 ··</span><span·class="p"·data-group-id="8904512953-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8904512953-11">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="8904512953-12">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8904512953-12">]</span><span·class="p"·data-group-id="8904512953-11">}</span><span·class="p"·data-group-id="8904512953-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="1808443179-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="1808443179-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·469,·SHA:·a53c761def244c2ec5711d748b48fe1533b704adaa4f718062bfd0bea2c3969e·...·]-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="5037724304-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="5037724304-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·469,·SHA:·c315f170aacaebbc8b9ca5b62f4c38a54b85278258f36d44a3f2a159a0ee4164·...·]-4">}</span><span·class="p">,</span><span·class="w">
209 ··</span><span·class="p"·data-group-id="1808443179-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="1808443179-5">}</span><span·class="p">,</span><span·class="w">209 ··</span><span·class="p"·data-group-id="5037724304-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="5037724304-5">}</span><span·class="p">,</span><span·class="w">
210 ··</span><span·class="p"·data-group-id="1808443179-6">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1808443179-7">[</span><span·class="p"·data-group-id="1808443179-8">#{</span><span·class="ss">certfile</span><span·class="[·...·truncated·by·diffoscope;·len:·636,·SHA:·3e9cda551ef1c974975b66ac3c107f2777b7fdbdabb6892e45439fd6db7463ca·...·]-2">)</span><span·class="p">.</span><span·class="w">210 ··</span><span·class="p"·data-group-id="5037724304-6">{</span><span·class="ss">certs_keys</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5037724304-7">[</span><span·class="p"·data-group-id="5037724304-8">#{</span><span·class="ss">certfile</span><span·class="[·...·truncated·by·diffoscope;·len:·636,·SHA:·6d11b5942dd121d60595e44010006edd733fc9c5479a02d58afcd37815652527·...·]-2">)</span><span·class="p">.</span><span·class="w">
211 </span><span·class="p"·data-group-id="1808443179-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1808443179-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="1808443179-11">[</span><span·class="p">.</[·...·truncated·by·diffoscope;·len:·744,·SHA:·8f0a039d451ceb337921395ae7a7276e3e80d3ec14a94e539dfa9ca0ea00f932·...·]-1">)</span><span·class="p">.</span><span·class="w">211 </span><span·class="p"·data-group-id="5037724304-9">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5037724304-10">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="5037724304-11">[</span><span·class="p">.</[·...·truncated·by·diffoscope;·len:·744,·SHA:·c6e62c0bae73ca1749c402eada1f62c160ed9a43dba0f2ef87722066ca7e7851·...·]-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="3049928872-1">(</span><span·class="n">TLSSocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3049928872-2">[</span><span·class="p"·data-group-id="3049928872-3">{</span><span·class="ss">active</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·205,·SHA:·d3c08fa3661756b09cf76e217ec90059985de9b1c37a5696c6046722b8da92c7·...·]-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="1608604646-1">(</span><span·class="n">TLSSocket</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1608604646-2">[</span><span·class="p"·data-group-id="1608604646-3">{</span><span·class="ss">active</span><span·class="p">,<[·...·truncated·by·diffoscope;·len:·205,·SHA:·82a2a8fa03745ff09687e13f455a86d59c31c26ba7a35f677dd7f7258e1e6177·...·]-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="6370647830-1">(</span><span·class="p"·data-group-id="6370647830-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="3611757058-1">(</span><span·class="p"·data-group-id="3611757058-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="6370647830-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="6370647830-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="6370647830-4">[</span><span·class="p">.</s[·...·truncated·by·diffoscope;·len:·261,·SHA:·684594969a95c43fac56e0004cef6425a62159a0a2aa7d182852de9bd582b442·...·]-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="3611757058-2">{</span><span·class="ss">ssl</span><span·class="p">,</span><span·class="p"·data-group-id="3611757058-3">{</span><span·class="ss">sslsocket</span><span·class="p">,</span><span·class="p"·data-group-id="3611757058-4">[</span><span·class="p">.</s[·...·truncated·by·diffoscope;·len:·261,·SHA:·f0b6c67a376b77e86c8b4a4784d10b6eaad6a9fefb0f112ddfa76fb80aad3c04·...·]-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="0370915591-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="0370915591-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="8636886846-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="8636886846-1">)</span><span·class="p">.</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="0370915591-2">[</span><span·class="p"·data-group-id="0370915591-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="8636886846-2">[</span><span·class="p"·data-group-id="8636886846-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="0370915591-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="0370915591-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="8636886846-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="8636886846-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="6784366456-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="6702557728-1">(</span><span·class="n">Default</span><span·class="p">,</span><span·class="w">
228 ·····························</span><span·class="p"·data-group-id="6784366456-2">[</span><span·class="p"·data-group-id="6784366456-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="6784366456-4">(</span><span·class="ss">rs[·...·truncated·by·diffoscope;·len:·49,·SHA:·149f6b41bfd462f84901adc041ccc3c83e4ebc08bab92c0bbb5748626b8501b0·...·]-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="6702557728-2">[</span><span·class="p"·data-group-id="6702557728-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="6702557728-4">(</span><span·class="ss">rs[·...·truncated·by·diffoscope;·len:·49,·SHA:·259f9626f3058113aa51d23b19a3bbb5d82f40077702a3c54e65220e0ff556cb·...·]-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="6784366456-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="6784366456-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="6702557728-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="6702557728-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="6784366456-3">}</span><span·class="p"·data-group-id="6784366456-2">]</span><span·class="p"·data-group-id="6784366456-1">)</span><span·class="p">.</span><span·class="w">230 ·············································</span><span·class="k">end</span><span·class="p"·data-group-id="6702557728-3">}</span><span·class="p"·data-group-id="6702557728-2">]</span><span·class="p"·data-group-id="6702557728-1">)</span><span·class="p">.</span><span·class="w">
231 ····</span><span·class="p"·data-group-id="6784366456-6">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6784366456-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="6702557728-6">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6702557728-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="2444468210-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="7945139916-1">(</span><span·class="n">Default</span><span·class="p">,</span><span·class="w">
233 ·····························</span><span·class="p"·data-group-id="2444468210-2">[</span><span·class="p"·data-group-id="2444468210-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="2444468210-4">(</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·58,·SHA:·83aaf71a8a1d13625cc997a91083fa9fe92ceaad6eb97533dc9beb39bbdf9176·...·]-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="7945139916-2">[</span><span·class="p"·data-group-id="7945139916-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="7945139916-4">(</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·58,·SHA:·1cc53ec1dea296a14bca1c9ecb0b9ecc68748d9943243f66ae95d26f001d8fa1·...·]-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="2444468210-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="2444468210-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="7945139916-5">(</span><span·class="p">_</span><span·class="p"·data-group-id="7945139916-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="2444468210-3">}</span><span·class="p">,</span><span·class="w">235 ·············································</span><span·class="k">end</span><span·class="p"·data-group-id="7945139916-3">}</span><span·class="p">,</span><span·class="w">
236 ······························</span><span·class="p"·data-group-id="2444468210-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="2444468210-7">(</span><span·class="ss">aes_128_cbc</span><span·class="p"·data-group-id="2444468210-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="7945139916-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="7945139916-7">(</span><span·class="ss">aes_128_cbc</span><span·class="p"·data-group-id="7945139916-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="2444468210-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="2444468210-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="7945139916-8">(</span><span·class="p">_</span><span·class="p"·data-group-id="7945139916-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="2444468210-6">}</span><span·class="p"·data-group-id="2444468210-2">]</span><span·class="p"·data-group-id="2444468210-1">)</span><span·class="p">.</span><span·class="w">238 ·······································</span><span·class="k">end</span><span·class="p"·data-group-id="7945139916-6">}</span><span·class="p"·data-group-id="7945139916-2">]</span><span·class="p"·data-group-id="7945139916-1">)</span><span·class="p">.</span><span·class="w">
  
239 </span><span·class="p"·data-group-id="2444468210-9">[</span><span·class="p"·data-group-id="2444468210-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="7945139916-9">[</span><span·class="p"·data-group-id="7945139916-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="2444468210-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="7945139916-10">}</span><span·class="p">,</span><span·class="w">
241 ·</span><span·class="p"·data-group-id="2444468210-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="7945139916-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="2444468210-11">}</span><span·class="p"·data-group-id="2444468210-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="7945139916-11">}</span><span·class="p"·data-group-id="7945139916-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="6038311517-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="6038311517-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="3867966971-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="3867966971-1">)</span><span·class="p">.</span><span·class="w">
244 ··</span><span·class="p"·data-group-id="6038311517-2">[</span><span·class="p"·data-group-id="6038311517-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="3867966971-2">[</span><span·class="p"·data-group-id="3867966971-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="6038311517-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="3867966971-3">}</span><span·class="p">,</span><span·class="w">
246 ···</span><span·class="p"·data-group-id="6038311517-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="3867966971-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="6038311517-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="3867966971-4">}</span><span·class="p">,</span><span·class="w">
248 ···</span><span·class="p"·data-group-id="6038311517-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="3867966971-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="6038311517-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="6038311517-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="3867966971-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="3867966971-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="8967044127-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="8967044127-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="9016105713-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="9016105713-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.
628 B
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/doc/html/.build
    
Offset 26, 15 lines modifiedOffset 26, 15 lines modified
26 dist/lato-latin-300-normal-YUMVEFOL.woff226 dist/lato-latin-300-normal-YUMVEFOL.woff2
27 dist/lato-latin-400-normal-W7754I4D.woff227 dist/lato-latin-400-normal-W7754I4D.woff2
28 dist/lato-latin-700-normal-2XVSBPG4.woff228 dist/lato-latin-700-normal-2XVSBPG4.woff2
29 dist/lato-latin-ext-300-normal-VPGGJKJL.woff229 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
30 dist/lato-latin-ext-400-normal-N27NCBWW.woff230 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
31 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff231 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
32 dist/remixicon-NKANDIL5.woff232 dist/remixicon-NKANDIL5.woff2
33 dist/search_data-C1715298.js33 dist/search_data-A1A25C0C.js
34 dist/sidebar_items-3345C785.js34 dist/sidebar_items-3345C785.js
35 edlin.html35 edlin.html
36 edlin_expand.html36 edlin_expand.html
37 epp.html37 epp.html
38 erl_anno.html38 erl_anno.html
39 erl_error.html39 erl_error.html
40 erl_eval.html40 erl_eval.html
125 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/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.3/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.3/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="7547923367-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="7547923367-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="0545940006-1">(</span><span·class="n">Args</span><span·class="p"·data-group-id="0545940006-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="7547923367-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="7547923367-3">(</span><span·class="p"·data-group-id="7547923367-3">)</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·305,·SHA:·52456d9ca9ca533074334df6a0bcf8b5a83cd093fb22dd41b4d0eb01fcd5022e·...·]-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="0545940006-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="0545940006-3">(</span><span·class="p"·data-group-id="0545940006-3">)</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·305,·SHA:·fc904def924b05c10d53c033490c61c679674fd48a894fd79cb10e08f1dcb3c2·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
152 </span><span·class="nf">cli</span><span·class="p"·data-group-id="7547923367-5">(</span><span·class="p"·data-group-id="7547923367-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="0545940006-5">(</span><span·class="p"·data-group-id="0545940006-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
153 ····</span><span·class="p"·data-group-id="7547923367-6">#{</span><span·class="w">153 ····</span><span·class="p"·data-group-id="0545940006-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="7547923367-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="0545940006-7">[</span><span·class="w">
155 ············</span><span·class="p"·data-group-id="7547923367-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:·194fb637e843924d545abbbdc7918b4487fac319a76e9cd6d1deaf2914e3652a·...·]-8">}</span><span·class="p">,</span><span·class="w">155 ············</span><span·class="p"·data-group-id="0545940006-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:·0f59fcc6ba031ce8c90200b935554abf743a214f8087471825636b17186460d2·...·]-8">}</span><span·class="p">,</span><span·class="w">
156 ············</span><span·class="p"·data-group-id="7547923367-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:·45208e8fdce31d689f6782a64d75f968e5008688f1a7cc80cdce0ebee1f6ba0d·...·]-9">}</span><span·class="w">156 ············</span><span·class="p"·data-group-id="0545940006-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:·3e44096860f568788c27ba2ff25cffa35273ce2e543e47deedd4a2c605dc5346·...·]-9">}</span><span·class="w">
157 ········</span><span·class="p"·data-group-id="7547923367-7">]</span><span·class="p">,</span><span·class="w">157 ········</span><span·class="p"·data-group-id="0545940006-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="7547923367-10">(</span><span·class="p"·data-group-id="7547923367-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:·0ff6ae3c685a73c288c9b27cd04f97678c1c865ac82e083317fe1d9c20c00577·...·]-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="0545940006-10">(</span><span·class="p"·data-group-id="0545940006-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:·53798f8c05791d921772689f8e983eab61b6f43fa482de88da92b14724fdd62e·...·]-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="7547923367-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="7547923367-13">[</span><span·class="n">Left<[·...·truncated·by·diffoscope;·len:·201,·SHA:·667c283ebd7dda81fe66d4af451070689d396c5f5e0888891523599cf26f8342·...·]-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="0545940006-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="0545940006-13">[</span><span·class="n">Left<[·...·truncated·by·diffoscope;·len:·201,·SHA:·18b108fa7ad5f0cf8c2dbe5b5a91606a07bf4e9814eb4cb6a30ee1f99c022308·...·]-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="7547923367-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="0545940006-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="5892487638-1">(</span><span·class="p"·data-group-id="5892487638-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="9483776941-1">(</span><span·class="p"·data-group-id="9483776941-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
177 ··</span><span·class="p"·data-group-id="5892487638-2">#{</span><span·class="w">177 ··</span><span·class="p"·data-group-id="9483776941-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="5892487638-3">[</span><span·class="p"·data-group-id="5892487638-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="5892487638-4">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·0b4ba4b26cb52259560c76d9c5403c3e63ca8fcc71e20d9d830cd7653daefdc0·...·]-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="9483776941-3">[</span><span·class="p"·data-group-id="9483776941-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="9483776941-4">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·56a3acaf13c7af2493f8005650796bf3894f08e11faae8a164757fd101240b84·...·]-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="5892487638-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="9483776941-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="5892487638-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="9483776941-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="5892487638-7">[</span><span·class="p"·data-group-id="5892487638-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="5892487638-8">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·0b4ba4b26cb52259560c76d9c5403c3e63ca8fcc71e20d9d830cd7653daefdc0·...·]-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="9483776941-7">[</span><span·class="p"·data-group-id="9483776941-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="9483776941-8">}</s[·...·truncated·by·diffoscope;·len:·45,·SHA:·56a3acaf13c7af2493f8005650796bf3894f08e11faae8a164757fd101240b84·...·]-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="5892487638-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="9483776941-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="5892487638-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="9483776941-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="5892487638-11">[</span><span·class="p"·data-group-id="5892487638-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="5892487638-12[·...·truncated·by·diffoscope;·len:·51,·SHA:·e2d8e3e86056cb74006bd1f12d4f599904bff9568ca9adf288988b4b44806daf·...·]-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="9483776941-11">[</span><span·class="p"·data-group-id="9483776941-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="9483776941-12[·...·truncated·by·diffoscope;·len:·51,·SHA:·18f40b62c9b3fb9496dfeb0e6861f628f6e641dbf33fbb80971ae6a4ab3ccc71·...·]-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="5892487638-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="5892487638-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:·7e7d59aff807452d4fb5298ce2c5cc889f84cb4007eea0e88efffe0d81ce21dc·...·]-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="9483776941-13">(</span><span·class="n">A</span><span·class="p"·data-group-id="9483776941-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:·85e3ebf40078fd152cec911ae06bf5b6edb11368705e25b18dbec6fd95d43758·...·]-14">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
190 ··········</span><span·class="p"·data-group-id="5892487638-10">}</span><span·class="w">190 ··········</span><span·class="p"·data-group-id="9483776941-10">}</span><span·class="w">
191 ········</span><span·class="p"·data-group-id="5892487638-9">}</span><span·class="w">191 ········</span><span·class="p"·data-group-id="9483776941-9">}</span><span·class="w">
192 ······</span><span·class="p"·data-group-id="5892487638-6">}</span><span·class="w">192 ······</span><span·class="p"·data-group-id="9483776941-6">}</span><span·class="w">
193 ····</span><span·class="p"·data-group-id="5892487638-5">}</span><span·class="w">193 ····</span><span·class="p"·data-group-id="9483776941-5">}</span><span·class="w">
194 ··</span><span·class="p"·data-group-id="5892487638-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="9483776941-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="1305827740-1">(</span><span·class="p"·data-group-id="1305827740-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="1214553084-1">(</span><span·class="p"·data-group-id="1214553084-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
214 ··</span><span·class="p"·data-group-id="1305827740-2">#{</span><span·class="w">214 ··</span><span·class="p"·data-group-id="1214553084-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="1305827740-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="1214553084-3">[</span><span·class="w">
216 ······</span><span·class="p"·data-group-id="1305827740-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><s[·...·truncated·by·diffoscope;·len:·131,·SHA:·361fc3ade036c13d3883ec8d799bbdb47f44fc22796aeec6f1eee9bb5b81323f·...·]-4">}</span><span·class="p">,</span><span·class="w">216 ······</span><span·class="p"·data-group-id="1214553084-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><s[·...·truncated·by·diffoscope;·len:·131,·SHA:·ad35e2590b225b56d8941252f2788147fd63b8658a5c95dbdf312ba7f07e8b1e·...·]-4">}</span><span·class="p">,</span><span·class="w">
217 ······</span><span·class="p"·data-group-id="1305827740-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:·119,·SHA:·1fba68a93542186baff50234aa6b59ad31ca731b7e07855de212faad6e2be57a·...·]-5">}</span><span·class="w">217 ······</span><span·class="p"·data-group-id="1214553084-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:·119,·SHA:·fa38d2c06cb55b696be4d8d1eb9b359c1f8f121f0083e2f1d9db1c65963d2393·...·]-5">}</span><span·class="w">
218 ····</span><span·class="p"·data-group-id="1305827740-3">]</span><span·class="p">,</span><span·class="w">218 ····</span><span·class="p"·data-group-id="1214553084-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="1305827740-6">(</span><span·class="n">Args</span><span·class="p"·data-group-id="1305827740-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</span[·...·truncated·by·diffoscope;·len:·386,·SHA:·75e080cd68865c4026d810663976172e8d21dbeef2e2284f9f2c853f3c76ad10·...·]-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="1214553084-6">(</span><span·class="n">Args</span><span·class="p"·data-group-id="1214553084-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</span[·...·truncated·by·diffoscope;·len:·386,·SHA:·39d8f4cca3af3ed356ae852e00dabcb062ca01a821c0da2549ad9ec11492cac4·...·]-7">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
220 ··</span><span·class="p"·data-group-id="1305827740-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="1214553084-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="5728485590-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="5728485590-2">[</span><span·class="p"·data-group-id="5728485590-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·442,·SHA:·059af0e1b553b1bb309b5d4eb7f7be76a4a382e7f2832d75221b4f6d5a84a4c5·...·]-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="2011546277-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="2011546277-2">[</span><span·class="p"·data-group-id="2011546277-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·442,·SHA:·739b4f347ee8372adc9afc6a2f07674d501966bba3bf5553a6343727027dfbcc·...·]-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="5728485590-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:·8f9163b2cf7d8284e430fefe496b0c9c971bbc68c321d7f50b784339aaae91ff·...·]-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="2011546277-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:·9b8150d927a4f36000de32b2960285493cf2118341352384d9efe5a3404b8cf4·...·]-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="5728485590-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="5728485590-7">}</span><span·class="w">608 </span><span·class="p"·data-group-id="2011546277-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="2011546277-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="5728485590-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:·09c6c5181f6a4bc0cac37727a0ffdde5fc2060133b5ddf387e5661cff168ad31·...·]-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="2011546277-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:·8646b5f1a9ddd5ea75929293720102fb46f9ca0cf8a3b57525647e34cde8fda3·...·]-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="5728485590-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="5728485590-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="2011546277-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="2011546277-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="9617684285-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="9617684285-2">[</span><span·class="p"·data-group-id="9617684285-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·454,·SHA:·78d4b889f4c02f41d017aebe3844557df334804eb67ae7e52711fd2e9e71364c·...·]-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="8165954660-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="8165954660-2">[</span><span·class="p"·data-group-id="8165954660-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·454,·SHA:·7fab4fe93527e2ea9f20fa13d197515a654b0fd2ba2db5ea32d64520deb70b18·...·]-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="9617684285-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:·626,·SHA:·5bf2763ebc55c3e81b3e32bc22ed9bc480bebd8344858bb49f3101659cf76d60·...·]-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="8165954660-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:·626,·SHA:·8ebe0703e8cf5d88d916b1aae5871ff34d7efd4843e02a5c6cd4e112677cbf42·...·]-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="9617684285-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="9617684285-7">}</span><span·class="w">615 </span><span·class="p"·data-group-id="8165954660-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="8165954660-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="9617684285-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:·546,·SHA:·e887b676337b18ec165c8ebc6f4ce62fd3b87a508b4cd987735f17ca0d172eb9·...·]-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="8165954660-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:·546,·SHA:·f51895e591e12f2390050f5ba58ba2ea7e2e392ada500740e5f4b0aabd0f4ba5·...·]-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="9617684285-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="9617684285-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="8165954660-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="8165954660-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="4821763691-1">(</span><span·class="p"·data-group-id="4821763691-2">[</span><span·class="p"·data-group-id="4821763691-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4821763691-3">#{</span><span·class="ss">arguments[·...·truncated·by·diffoscope;·len:·702,·SHA:·3f1a1d8a1d2a04d9fe1fc6fb081479f51c706433d449b6543a17c768aebfa5b1·...·]-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="8108310003-1">(</span><span·class="p"·data-group-id="8108310003-2">[</span><span·class="p"·data-group-id="8108310003-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8108310003-3">#{</span><span·class="ss">arguments[·...·truncated·by·diffoscope;·len:·702,·SHA:·804caac1d22148a18b1b757a29a99753363a8a8d68ca77f7ec69e92db81724de·...·]-1">)</span><span·class="p">.</span><span·class="w">
  
623 </span><span·class="p"·data-group-id="4821763691-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4821763691-7">#{</span><span·class="p"·data-group-id="4821763691-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="8108310003-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8108310003-7">#{</span><span·class="p"·data-group-id="8108310003-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="4821763691-8">(</span><span·class="p"·data-group-id="4821763691-9">[</span><span·class="p"·data-group-id="4821763691-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4821763691-10">#{</span><span·class="ss">argument[·...·truncated·by·diffoscope;·len:·901,·SHA:·93c8231cdb2add0a32133ffdd3d3d253c7d30d7046fc0a49e4c5f21edfb268eb·...·]-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="8108310003-8">(</span><span·class="p"·data-group-id="8108310003-9">[</span><span·class="p"·data-group-id="8108310003-9">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8108310003-10">#{</span><span·class="ss">argument[·...·truncated·by·diffoscope;·len:·901,·SHA:·1e602dbf9088773a72d6e1f27fd0c47c6fad0e4e7715344b513c97028e50444d·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
625 </span><span·class="p"·data-group-id="4821763691-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4821763691-14">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;d[·...·truncated·by·diffoscope;·len:·56,·SHA:·ab5eb2fcf668609a20801158544bae1d770f687119a4e6f0bbe9037725c26370·...·]-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="8108310003-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8108310003-14">#{</span><span·class="ss">myarg</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="s">&quot;d[·...·truncated·by·diffoscope;·len:·56,·SHA:·df90f3de1564c98dc849c92d3d1d704e44b05ab0e4388c048b9a19147eeb72e7·...·]-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.3/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.3/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="8039823593-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="8039823593-2">[</span><span·class="p"·data-group-id="8039823593-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·623,·SHA:·ffe162328f04412777d78b89517e0adb3335fffa14254dedfae865522bd38499·...·]-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="7131177508-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="7131177508-2">[</span><span·class="p"·data-group-id="7131177508-3">#{</span><span·class="ss">[·...·truncated·by·diffoscope;·len:·623,·SHA:·8081f55c0a6e250588ff557aa886ac6e83d13740ce59a6b62896dc84f70aeabd·...·]-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="8039823593-4">(</span><span·class="p"·data-group-id="8039823593-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="[·...·truncated·by·diffoscope;·len:·191,·SHA:·c95da9e4c8d1277be568b5bc2567bd95cbff29cce5eea393e30d0bf9dc709a1c·...·]-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="7131177508-4">(</span><span·class="p"·data-group-id="7131177508-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="[·...·truncated·by·diffoscope;·len:·191,·SHA:·92eb8d0fabafb95f6e1aabd0e78c7cf65d3415c606e2f29223285b34c223b236·...·]-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.1/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="9514839613-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="9514839613-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="0545669736-1">(</span><span·class="mi">10</span><span·class="p"·data-group-id="0545669736-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="9514839613-2">(</span><span·class="n">A0</span><span·class="p"·data-group-id="9514839613-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="0545669736-2">(</span><span·class="n">A0</span><span·class="p"·data-group-id="0545669736-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="5717297489-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:·58de43495d06142fbf3fca6f74df2bf2024c2a6f533f42cad6943c38afb4bc1f·...·]-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="9985232813-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:·940a0549a2500eb593013afa14884e982765667099252c0cb841bb46ec47d6e7·...·]-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="5717297489-3">(</span><span·class="n">A1</span><span·class="p"·data-group-id="5717297489-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:·26d60a0b5b2dfd1d97b567282209f23a989430a76030f882c28ceab59bcc02fa·...·]-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="9985232813-3">(</span><span·class="n">A1</span><span·class="p"·data-group-id="9985232813-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:·516f44b00f24a1a6c002b90bd7b10acce178c647f09f483dff1e7a2422c3bb34·...·]-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="6975855655-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="6975855655-1">)</span><span·class="p">.</span></code></pre><p>&quot;Sparse&quot;·functions·ignore·defaul[·...·truncated·by·diffoscope;·len:·515,·SHA:·d2ba27a7d522bd2378ea84ac4c198738e9d352b452b97b04815cc57d6441dd54·...·]-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="1682170937-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="1682170937-1">)</span><span·class="p">.</span></code></pre><p>&quot;Sparse&quot;·functions·ignore·defaul[·...·truncated·by·diffoscope;·len:·515,·SHA:·74cd536f347e4e05b1eb29f2371615af3b6793e17258b0bac28153f073a77ba9·...·]-1">)</span><span·class="p">.</span><span·class="w">
144 </span><span·class="p"·data-group-id="1594108032-2">[</span><span·class="p"·data-group-id="1594108032-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="1594108032-3">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·1017,·SHA:·88a73d49cda79c3660b89dca7d3632720951aa5529c84f5aa5b399f4acb30f7a·...·]-1">)</span><span·class="p">.</span></code></pre><p>A·fixed-size·array·does·not·grow·automatically·and·does·not·allow·accesses144 </span><span·class="p"·data-group-id="6836334435-2">[</span><span·class="p"·data-group-id="6836334435-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="6836334435-3">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·1017,·SHA:·9784cdbc74a0335dea5a9b7764614a34647ce627a9944b4ebc90ca60aeb049dc·...·]-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="1573465019-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1573465019-2">{</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="1573465019[·...·truncated·by·diffoscope;·len:·644,·SHA:·ca2ea8a7ab399a4f7b81fbcb33a188c81f61f90a0d3ec3150d18bee58d035246·...·]-3">)</span><span·class="p">.</span><span·class="w">145 beyond·the·last·set·entry:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8290186392-1">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8290186392-2">{</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="8290186392[·...·truncated·by·diffoscope;·len:·644,·SHA:·a38a924223edad7bcdd5bebdc4a1e1775bf3e98b782eb5a17c3631f5144168a2·...·]-3">)</span><span·class="p">.</span><span·class="w">
146 </span><span·class="p"·data-group-id="1573465019-5">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="1573465019-6">{</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="1573465019[·...·truncated·by·diffoscope;·len:·568,·SHA:·02eeef1a4367674ed4a274402dc41f073b8f8c0856d5d3e946e33416213d2522·...·]-7">)</span><span·class="p">.</span></code></pre>146 </span><span·class="p"·data-group-id="8290186392-5">{</span><span·class="ss">&#39;EXIT&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="8290186392-6">{</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="8290186392[·...·truncated·by·diffoscope;·len:·568,·SHA:·d14e93314aa5d6ba95eed8937894594b4f294d6bc265394f86615344f1f5f58c·...·]-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="2208943652-1">(</span><span·class="mi">100</span><span·class="p"·data-group-id="2208943652-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:·966109d203f5904344372fd44713fbe3faca2eb0035b04924dc10f46d9eb6847·...·]-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="8574786798-1">(</span><span·class="mi">100</span><span·class="p"·data-group-id="8574786798-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:·4c91264be4ee673eec8602983f508be6962af6a3f4738d696c6b6d43b83bf961·...·]-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="8575645091-1">(</span><span·class="mi">100</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8575645091-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:·53b563ead54ee38618bb3e6594305cbba07b58e0cfee29f141db9aef4ea7801c·...·]-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="1752185715-1">(</span><span·class="mi">100</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1752185715-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:·dd6629006a82872cab8e818d6c695a8f43020bd58a5cd9eac0907808376545bc·...·]-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.1/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="3941659121-1">(</span><span·class="s">&quot;stdlib/include/assert.hrl&quot;</span><span·class="p"·data-group-id="3941659121-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="4693986146-1">(</span><span·class="s">&quot;stdlib/include/assert.hrl&quot;</span><span·class="p"·data-group-id="4693986146-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="1407657892-1">(</span><span·class="p"·data-group-id="1407657892-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="1407657892-2">}</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·391,·SHA:·bbf440c2812449ce0fd3bad127003757fefc508c56553a4b2256581890b35298·...·]-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="4194046046-1">(</span><span·class="p"·data-group-id="4194046046-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="4194046046-2">}</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·391,·SHA:·ba653e4c934bfdda018e0df5414a46dceba1b6d8b3601b4f64ce2c52b1738c66·...·]-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.1/doc/html/base64.html
    
Offset 649, 24 lines modifiedOffset 649, 24 lines modified
649 ····················Data·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:binary/0">binary</a>().</pre>649 ····················Data·::·<a·href="../../../../erts-15.2.3/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="7179839250-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="7179839250-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="4300597047-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="4300597047-1">)</span><span·class="p">.</span><span·class="w">
655 </span><span·class="p"·data-group-id="7179839250-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="7179839250-2">&gt;&gt;</span><span·class="gp·unselectable">655 </span><span·class="p"·data-group-id="4300597047-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="4300597047-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="7179839250-3">(</span><span·class="s">&quot;AQ·ID·BA==&quot;</span><span·class="p"·data-group-id="7179839250-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="4300597047-3">(</span><span·class="s">&quot;AQ·ID·BA==&quot;</span><span·class="p"·data-group-id="4300597047-3">)</span><span·class="p">.</span><span·class="w">
657 </span><span·class="p"·data-group-id="7179839250-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="7179839250-4">&gt;&gt;</span><span·class="gp·unselectable">657 </span><span·class="p"·data-group-id="4300597047-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="4300597047-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="7179839250-5">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p"·data-group-id="7179839250-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="4300597047-5">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p"·data-group-id="4300597047-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="7179839250-6">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7179839250-7">#{</span><span·class="w">·</span><span·class="ss">padding</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·188,·SHA:·d1f9f08de1308de8217126f1219e657bc9ba0129c2dacb55a9b4f1a1e6e76e60·...·]-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="4300597047-6">(</span><span·class="s">&quot;AQIDBA=&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4300597047-7">#{</span><span·class="w">·</span><span·class="ss">padding</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·188,·SHA:·1f3c6ccaf0fdca80569ba43e6427a49b4b65feb4504f82cf5c45d007cea6694d·...·]-6">)</span><span·class="p">.</span><span·class="w">
663 </span><span·class="p"·data-group-id="7179839250-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="7179839250-8">&gt;&gt;</span></code></pre>663 </span><span·class="p"·data-group-id="4300597047-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="4300597047-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.3/doc/html/erlang.html#t:binary/0">binary</a>().</pre>896 ·························Data·::·<a·href="../../../../erts-15.2.3/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="9339153327-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="9339153327-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="0629882137-1">(</span><span·class="s">&quot;AQIDBA==&quot;</span><span·class="p"·data-group-id="0629882137-1">)</span><span·class="p">.</span><span·class="w">
902 </span><span·class="p"·data-group-id="9339153327-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="9339153327-2">&gt;&gt;</span><span·class="gp·unselectable">902 </span><span·class="p"·data-group-id="0629882137-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="0629882137-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="9339153327-3">(</span><span·class="s">&quot;AQIDB=A=&quot;</span><span·class="p"·data-group-id="9339153327-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="0629882137-3">(</span><span·class="s">&quot;AQIDB=A=&quot;</span><span·class="p"·data-group-id="0629882137-3">)</span><span·class="p">.</span><span·class="w">
904 </span><span·class="p"·data-group-id="9339153327-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="9339153327-4">&gt;&gt;</span></code></pre>904 </span><span·class="p"·data-group-id="0629882137-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="0629882137-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.1/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="9855213470-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9855213470-2">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p"·data-group-id="9855213470-3">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·921,·SHA:·631f788055d61008fef8848092a3bcfef4cc730f34fa6fb782c2e1f85c82e7d3·...·]-6">)</span><span·class="p">.</span><span·class="w">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="3021724677-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3021724677-2">{</span><span·class="p">_</span><span·class="p">,</span><span·class="p"·data-group-id="3021724677-3">[</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·921,·SHA:·ab672cae263342c6674d1aec1600ec5f521c86523bc9e613067a68a4d11a289f·...·]-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="9855213470-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="9855213470-9">[</span><span·class="nc">erl_pr[·...·truncated·by·diffoscope;·len:·493,·SHA:·f97edb080339f5ec62c4af9580a432208d552cd2e7257ce4cf64849b8d5725a2·...·]-8">)</span><span·class="p">.</span></code></pre><h2·id="module-encrypted-debug-information"·class="section-heading">155 </span><span·class="nc">io</span><span·class="p">:</span><span·class="nf">fwrite</span><span·class="p"·data-group-id="3021724677-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="3021724677-9">[</span><span·class="nc">erl_pr[·...·truncated·by·diffoscope;·len:·493,·SHA:·914c629029fbcd63dea2261bc5402ac52fde2fdec1ecb9eb664a7f4b71184ad2·...·]-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.3/doc/html/init.html#home">user's·home·directory</a>·and·then182 <a·href="../../../../erts-15.2.3/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="6336353298-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:·c6d340d88dc88106de8c1911cfdb21da2e9f8ca506a3fac02c394a3d5f5d62af·...·]-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="1071470534-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:·fc47190311fe363f11301205b52593483a83a8e570dba57390303e99494ee67b·...·]-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="7469251576-1">[</span><span·class="p"·data-group-id="7469251576-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:·37f6be1048d5121bde8e13bc6cdcf81e66e084d314da04ca1f8749c9f25002c2·...·]-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="5065084842-1">[</span><span·class="p"·data-group-id="5065084842-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:·45414a6e83713b2d809447a60b22f95dda4fbb4737c6d57f265ffc9c8f14d93a·...·]-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="2598842871-1">[</span><span·class="p"·data-group-id="2598842871-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:·21e49bbc3e41625b8511900156431b7c229ba8134f992f336dcf58f046176311·...·]-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="5668991488-1">[</span><span·class="p"·data-group-id="5668991488-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:·2d8862426726c142b4383e6884e3edad4a8e86d6f908058dec7b5ab8cb4ef418·...·]-2">}</span><span·class="p">,</span><span·class="w">
191 ·</span><span·class="p"·data-group-id="2598842871-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="2598842871-4">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·250,·SHA:·540e48a8dd7292c3de04be9056a42367574746c77f107433a12b905fe8a97904·...·]-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="5668991488-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="5668991488-4">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·250,·SHA:·31d1ac85cfa0b56baaf7e724854c0bc8eeda8baf931f68bd36436fcfbac8f007·...·]-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.3/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.3/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="3902982530-1">(</span><span·class="ss">init</span><span·class="p"·data-group-id="3902982530-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><sp[·...·truncated·by·diffoscope;·len:·509,·SHA:·8c7795b0f63e9f56e51ef88adb7f88c6e33c5de3fb08dbb63d97869d0576a1ef·...·]-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="9934340473-1">(</span><span·class="ss">init</span><span·class="p"·data-group-id="9934340473-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><sp[·...·truncated·by·diffoscope;·len:·509,·SHA:·c7e06c4bda898be707674359047d32477dc2edde7c8875de3ba442ab2a277052·...·]-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="4741919628-1">(</span><span·class="p"·data-group-id="4741919628-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:·5867272cb881fc5b3a58e0d50df749071174873899328f438ce608ee46a48c12·...·]-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="4033830425-1">(</span><span·class="p"·data-group-id="4033830425-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:·f21012e1830bdc379e3b65373108d928028a74ebe87c8558e566ff8ce6fffdc8·...·]-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="9888846452-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="9888846452-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="2262017486-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="2262017486-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="9888846452-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9888846452-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="9888846452-4">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·143,·SHA:·757ae3c8fbb03da937cf5704b2fc6a2fb3e7801b97c083906e6b3dc4feeffaf0·...·]-2">}</span><span·class="gp·unselectable">1849 </span><span·class="p"·data-group-id="2262017486-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2262017486-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="2262017486-4">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·143,·SHA:·b77a8e5878286547cc231335076c6fbeeca50e240c4db026c6fac38085a7f78d·...·]-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="9888846452-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="9888846452-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="2262017486-5">(</span><span·class="ss">b</span><span·class="p"·data-group-id="2262017486-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="9888846452-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9888846452-7">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="9888846452-8">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·143,·SHA:·3b2ddf1687cde83ca5bca6bba193b5dc9c53e4ea5ff799804a9a5baf8d95f77b·...·]-6">}</span><span·class="gp·unselectable">1851 </span><span·class="p"·data-group-id="2262017486-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2262017486-7">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="p"·data-group-id="2262017486-8">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·143,·SHA:·b86dc11e918837e7620c7e91442b819cadef5f34efcd229d61493ff5b2f06a6d·...·]-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="9888846452-9">(</span><span·class="ss">c</span><span·class="p"·data-group-id="9888846452-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="2262017486-9">(</span><span·class="ss">c</span><span·class="p"·data-group-id="2262017486-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="9888846452-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9888846452-11">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="p"·data-group-id="9888846452-12">[</span><span·class="mi">1</span><[·...·truncated·by·diffoscope;·len:·197,·SHA:·1bdf9e733caab1b13561d1053f9aa6ee7de0eade1974aa48b8a704a3a678fa2d·...·]-10">}</span><span·class="gp·unselectable">1853 </span><span·class="p"·data-group-id="2262017486-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2262017486-11">{</span><span·class="ss">c</span><span·class="p">,</span><span·class="p"·data-group-id="2262017486-12">[</span><span·class="mi">1</span><[·...·truncated·by·diffoscope;·len:·197,·SHA:·f6bd7ca869135609f10312241b5bb47ae440a866f895232e3c474e0881e22494·...·]-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="9888846452-13">(</span><span·class="ss">d</span><span·class="p"·data-group-id="9888846452-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="2262017486-13">(</span><span·class="ss">d</span><span·class="p"·data-group-id="2262017486-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="9888846452-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9888846452-15">{</span><span·class="ss">d</span><span·class="p">,</span><span·class="p"·data-group-id="9888846452-16">[</span><span·class="mi">275613208[·...·truncated·by·diffoscope;·len:·186,·SHA:·85f33602bd96c9af0f74f26c4555380628db359164ab51bafba8c15fad06bb58·...·]-14">}</span></code></pre>1855 </span><span·class="p"·data-group-id="2262017486-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2262017486-15">{</span><span·class="ss">d</span><span·class="p">,</span><span·class="p"·data-group-id="2262017486-16">[</span><span·class="mi">275613208[·...·truncated·by·diffoscope;·len:·186,·SHA:·221ab07df6b418fdc9612fe35516741cf27ecf94f7dfa8a1f127c2bf2a1050b8·...·]-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.1/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.3/doc/html/erlang.html#t:byte/0">byte</a>()]·when·Subject·::·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:byte/0">byte</a>()]·when·Subject·::·<a·href="../../../../erts-15.2.3/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.3/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="6047803481-1">(</span><span·class="p"·data-group-id="6047803481-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="6047803481-2">&gt;&gt;</span><span·class="p"·data-group-id="6047803481-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.3/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="1773503517-1">(</span><span·class="p"·data-group-id="1773503517-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="1773503517-2">&gt;&gt;</span><span·class="p"·data-group-id="1773503517-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.3/doc/html/erlang.html#t:binary/0">binary</a>(),·Pos·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Len·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:integer/0">integer</a>().</pre>693 ·····················when·Subject·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:binary/0">binary</a>(),·Pos·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Len·::·<a·href="../../../../erts-15.2.3/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.3/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.3/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="6471299858-1">(</span><span·class="p"·data-group-id="6471299858-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="6471299858-2">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·194,·SHA:·6677589d0bf683ce42fde45249c1857df506f9c68eb419f340fa4d68cf6f6771·...·]-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="6436915799-1">(</span><span·class="p"·data-group-id="6436915799-2">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="6436915799-2">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·194,·SHA:·c8cc33db7be7c2e06b21101a927756196a5bacf4727bbf5893aac1c9f5aa8436·...·]-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.3/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.3/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="5319363165-1">(</span><span·class="p"·data-group-id="5319363165-2">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="5319363165-2">&gt;&gt;</span><span·class="p"·data-group-id="5319363165-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="3926302639-1">(</span><span·class="p"·data-group-id="3926302639-2">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="3926302639-2">&gt;&gt;</span><span·class="p"·data-group-id="3926302639-1">)</span><span·class="p">.</span><span·class="w">
831 </span><span·class="p"·data-group-id="5319363165-3">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="5319363165-3">&gt;&gt;</span></code></pre>831 </span><span·class="p"·data-group-id="3926302639-3">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="3926302639-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.3/doc/html/erlang.html#t:binary/0">binary</a>(),889 ·····························Subject·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:binary/0">binary</a>(),
890 ·····························Endianness·::·big·|·little,890 ·····························Endianness·::·big·|·little,
891 ·····························Unsigned·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>891 ·····························Unsigned·::·<a·href="../../../../erts-15.2.3/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.3/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="4733036154-1">(</span><span·class="p"·data-group-id="4733036154-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="4733036154-2">[·...·truncated·by·diffoscope;·len:·56,·SHA:·fee7f35cc9f6902ca8c588edbbd605ef40c77148f310711f61be0f774d1b3660·...·]-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.3/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="7749352633-1">(</span><span·class="p"·data-group-id="7749352633-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="7749352633-2">[·...·truncated·by·diffoscope;·len:·56,·SHA:·9f303d290bb771651dbb4da18bb783c8d566021311a586bb0bb1428aecc949c5·...·]-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="4733036154-3">(</span><span·class="p"·data-group-id="4733036154-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="4733036154-4">[·...·truncated·by·diffoscope;·len:·131,·SHA:·d70c3ead2faf0df7e0ac95ddf52a842672daaba8d3d488730cb8faa995812521·...·]-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="7749352633-3">(</span><span·class="p"·data-group-id="7749352633-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="7749352633-4">[·...·truncated·by·diffoscope;·len:·131,·SHA:·db99b22fa667bd937703bbfe43ccf00cd379dc0631a5306302d99e91a7903e54·...·]-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="4733036154-5">(</span><span·class="p"·data-group-id="4733036154-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="4733036154-6">[·...·truncated·by·diffoscope;·len:·134,·SHA:·3a06f6608e87a8048a9e5aa230cc310edb574ab1137431841e69e029d9ec1004·...·]-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="7749352633-5">(</span><span·class="p"·data-group-id="7749352633-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="7749352633-6">[·...·truncated·by·diffoscope;·len:·134,·SHA:·8da22443fb127ec1709ac6e9ced7f18bb89c1aa8bfc4fdc638c8f347c19801fd·...·]-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.3/doc/html/erlang.html#t:binary/0">binary</a>(),·Case·::·lowercase·|·uppercase,·Bin2·::·<<_:_*16>>.</pre>953 ····················when·Bin·::·<a·href="../../../../erts-15.2.3/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="6201261861-1">(</span><span·class="p"·data-group-id="6201261861-2">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="6201261861-2">&gt;&gt;</span><span·class="p"·data-group-id="6201261861-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="3035951839-1">(</span><span·class="p"·data-group-id="3035951839-2">&lt;&lt;</span><span·class="s">&quot;f&quot;</span><span·class="p"·data-group-id="3035951839-2">&gt;&gt;</span><span·class="p"·data-group-id="3035951839-1">)</span><span·class="p">.</span><span·class="w">
957 </span><span·class="p"·data-group-id="6201261861-3">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="6201261861-3">&gt;&gt;</span><span·class="gp·unselectable">957 </span><span·class="p"·data-group-id="3035951839-3">&lt;&lt;</span><span·class="s">&quot;66&quot;</span><span·class="p"·data-group-id="3035951839-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="6201261861-4">(</span><span·class="p"·data-group-id="6201261861-5">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="6201261861-5">&gt;&gt;</span><span·class="p"·data-group-id="6201261861-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="3035951839-4">(</span><span·class="p"·data-group-id="3035951839-5">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="3035951839-5">&gt;&gt;</span><span·class="p"·data-group-id="3035951839-4">)</span><span·class="p">.</span><span·class="w">
959 </span><span·class="p"·data-group-id="6201261861-6">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="6201261861-6">&gt;&gt;</span><span·class="gp·unselectable">959 </span><span·class="p"·data-group-id="3035951839-6">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="3035951839-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="6201261861-7">(</span><span·class="p"·data-group-id="6201261861-8">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="6201261861-8">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">lowercase</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·f5b077481c5c58546212fa91582104da9ffe30f4ec3b2638b6f6631f5145d14c·...·]-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="3035951839-7">(</span><span·class="p"·data-group-id="3035951839-8">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="3035951839-8">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">lowercase</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·478e0ac6028553f6a1ce79859e754c98ef77b481172ddab9e54a7d9c93f1b74e·...·]-7">)</span><span·class="p">.</span><span·class="w">
961 </span><span·class="p"·data-group-id="6201261861-9">&lt;&lt;</span><span·class="s">&quot;2f&quot;</span><span·class="p"·data-group-id="6201261861-9">&gt;&gt;</span><span·class="gp·unselectable">961 </span><span·class="p"·data-group-id="3035951839-9">&lt;&lt;</span><span·class="s">&quot;2f&quot;</span><span·class="p"·data-group-id="3035951839-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="6201261861-10">(</span><span·class="p"·data-group-id="6201261861-11">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="6201261861-11">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">uppercase<[·...·truncated·by·diffoscope;·len:·47,·SHA:·140f41063432f0190c928333e9f13d8219e0975f0534b8d9863fbf20cba0b616·...·]-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="3035951839-10">(</span><span·class="p"·data-group-id="3035951839-11">&lt;&lt;</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="3035951839-11">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">uppercase<[·...·truncated·by·diffoscope;·len:·47,·SHA:·03041eb46918522e544380cad480870b196e9ef4998cce2dda6ee8e661d5bce4·...·]-10">)</span><span·class="p">.</span><span·class="w">
963 </span><span·class="p"·data-group-id="6201261861-12">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="6201261861-12">&gt;&gt;</span></code></pre>963 </span><span·class="p"·data-group-id="3035951839-12">&lt;&lt;</span><span·class="s">&quot;2F&quot;</span><span·class="p"·data-group-id="3035951839-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.3/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.3/doc/html/erlang.html#t:binary/0">binary</a>()
1018 ·························when·Unsigned·::·<a·href="../../../../erts-15.2.3/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.3/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="2110901042-1">(</span><span·class="mi">11111111</span><span·class="p"·data-group-id="2110901042-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="8822058540-1">(</span><span·class="mi">11111111</span><span·class="p"·data-group-id="8822058540-1">)</span><span·class="p">.</span><span·class="w">
1022 </span><span·class="p"·data-group-id="2110901042-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="2110901042-2">&gt;&gt;</span><span·class="gp·unselectable">1022 </span><span·class="p"·data-group-id="8822058540-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="8822058540-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="2110901042-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="2110901042-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="8822058540-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="8822058540-3">)</span><span·class="p">.</span><span·class="w">
1024 </span><span·class="p"·data-group-id="2110901042-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="2110901042-4">&gt;&gt;</span><span·class="gp·unselectable">1024 </span><span·class="p"·data-group-id="8822058540-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="8822058540-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="2110901042-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="2110901042-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="8822058540-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="8822058540-5">)</span><span·class="p">.</span><span·class="w">
1026 </span><span·class="p"·data-group-id="2110901042-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="2110901042-6">&gt;&gt;</span></code></pre>1026 </span><span·class="p"·data-group-id="8822058540-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="8822058540-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.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>()·when·Binaries·::·[<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>()·when·Binaries·::·[<a·href="../../../../erts-15.2.3/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="7705826320-1">(</span><span·class="p"·data-group-id="7705826320-2">[</span><span·class="p"·data-group-id="7705826320-3">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="7705826320-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·284,·SHA:·10ca0090c5d673c4f0864a127afcb2204c13a63fc8baa8809b7bed4bc069c43d·...·]0-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="1267856890-1">(</span><span·class="p"·data-group-id="1267856890-2">[</span><span·class="p"·data-group-id="1267856890-3">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="1267856890-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·284,·SHA:·01cd4b677b960ae936aa964ff28d9f92357140fb03ef450e5ffd773415f85b0e·...·]0-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="7705826320-5">(</span><span·class="p"·data-group-id="7705826320-6">[</span><span·class="p"·data-group-id="7705826320-7">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="7705826320-7">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·280,·SHA:·186a56f196f305682a4bb5f6b2727b4200a138e1c7069c2b93ab3fcbdfd1af3d·...·]0-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="1267856890-5">(</span><span·class="p"·data-group-id="1267856890-6">[</span><span·class="p"·data-group-id="1267856890-7">&lt;&lt;</span><span·class="s">&quot;erlang&quot;</span><span·class="p"·data-group-id="1267856890-7">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·280,·SHA:·203ad4139043c6485ea9844ae5eceacc4cdfb78f882a8eb0f327650adb8d52f4·...·]0-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.1/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.6/doc/html/compile.html#t:option/0">compile:option</a>(),1683 ················Option·::·<a·href="../../../../lib/compiler-8.6/doc/html/compile.html#t:option/0">compile:option</a>(),
1684 ················Module·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:module/0">module</a>().</pre>1684 ················Module·::·<a·href="../../../../erts-15.2.3/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="7760676739-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="7760676739-2">[</span><sp[·...·truncated·by·diffoscope;·len:·215,·SHA:·489b3ea4cd798b958c5a0a9b39f8f10c741260afdd39fb1abc3a112fb14d3801·...·]-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="2201622716-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="2201622716-2">[</span><sp[·...·truncated·by·diffoscope;·len:·215,·SHA:·94513d8d57cb690bbe2bf7ca082ce75aca2d92d5c5fe02408e241214d6e38e1c·...·]-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.3 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/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="3330619470-1">(</span><span·class="s">&quot;2018-02-01T16:17:58+01:00&quot;</span><span·class="p"·data-group-id="3330619470-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="3149245847-1">(</span><span·class="s">&quot;2018-02-01T16:17:58+01:00&quot;</span><span·class="p"·data-group-id="3149245847-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="3330619470-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="3149245847-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="3330619470-3">[</span><span·class="p"·data-group-id="3330619470-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="3330619470-4">}</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·7962527b4638a3cdd41bf4f5968f0758c015e2379230a272ab1b39ff7ccfbda1·...·]-2">)</span><span·class="p">.</span><span·class="w">1773 ···</span><span·class="p"·data-group-id="3149245847-3">[</span><span·class="p"·data-group-id="3149245847-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="3149245847-4">}</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·75,·SHA:·228ae8e68e2e76850c0601772e4916b491999cbcd9ed8ace85112de533487b85·...·]-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="3716900816-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="3716900816-2">(</span><span·class="ss">second</span><span·class="p"·data-group-id="3716900816-2">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·4cda7e46494b5fb6f0e29ab75350e0d71b5213fd5e545add2c31fbafcf5b654d·...·]-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="5036158311-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="5036158311-2">(</span><span·class="ss">second</span><span·class="p"·data-group-id="5036158311-2">)</span><span·cla[·...·truncated·by·diffoscope;·len:·32,·SHA:·220eaabc2c7e0144d5a2a4f005a7ca9aae07b28483b8e7eae086e84187b0fc51·...·]-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="3716900816-3">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="3716900816-4">(</span><span·class="ss">second</span><span·class="p"·data-group-id="3716900816-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="5036158311-3">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="5036158311-4">(</span><span·class="ss">second</span><span·class="p"·data-group-id="5036158311-4">)</span><span·class="p">,</span><span·class="w">
1938 ···</span><span·class="p"·data-group-id="3716900816-5">[</span><span·class="p"·data-group-id="3716900816-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="3716900816-6">}</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·b3882cca10c385a6fc09f8f98683cea1165e9c7c7189c9a4beb0b2d6b10237eb·...·]-3">)</span><span·class="p">.</span><span·class="w">1938 ···</span><span·class="p"·data-group-id="5036158311-5">[</span><span·class="p"·data-group-id="5036158311-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="5036158311-6">}</span><span·cla[·...·truncated·by·diffoscope;·len:·85,·SHA:·e296e98dfb701789e89619bec4baf8f6db5735ac24793c9324bea455536b392f·...·]-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="3716900816-7">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="3716900816-8">(</span><span·class="ss">second</span><span·class="p"·data-group-id="3716900816-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="5036158311-7">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="5036158311-8">(</span><span·class="ss">second</span><span·class="p"·data-group-id="5036158311-8">)</span><span·class="p">,</span><span·class="w">
1941 ···</span><span·class="p"·data-group-id="3716900816-9">[</span><span·class="p"·data-group-id="3716900816-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="3716900816-10">}</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·575c0f954a5112ecc8fba73c4a2ea61e9d59cd0417d40e0347cc106920b31bbb·...·]-7">)</span><span·class="p">.</span><span·class="w">1941 ···</span><span·class="p"·data-group-id="5036158311-9">[</span><span·class="p"·data-group-id="5036158311-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="5036158311-10">}</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·c2c55f88a1c518b57cb22131b23b22c6808aa4085e3384d926d76be99c038f38·...·]-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="3716900816-11">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="3716900816-12">(</span><span·class="ss">millisecond</span><span·class="p"·data-group-id="3716900816-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="5036158311-11">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_time</span><span·class="p"·data-group-id="5036158311-12">(</span><span·class="ss">millisecond</span><span·class="p"·data-group-id="5036158311-12">)</span><span·class="p">,</span><span·class="w">
1944 ···</span><span·class="p"·data-group-id="3716900816-13">[</span><span·class="p"·data-group-id="3716900816-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="3716900816-14">}</span><span·class="p[·...·truncated·by·diffoscope;·len:·621,·SHA:·0ce4974def2e72816d35dd4b2a1e66743e99b97f4f31253e9547741deb397376·...·]-11">)</span><span·class="p">.</span><span·class="w">1944 ···</span><span·class="p"·data-group-id="5036158311-13">[</span><span·class="p"·data-group-id="5036158311-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="5036158311-14">}</span><span·class="p[·...·truncated·by·diffoscope;·len:·621,·SHA:·6a89a27d5e48d9eb79959b768508dd8abb95be9b4b58d19ae9ff1ebb97f41e9a·...·]-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.1/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.3/doc/html/erlang.html#t:term/0">term</a>(),·Objects·::·[<a·href="#t:object/0">object</a>()],·Reason·::·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0">term</a>(),·Objects·::·[<a·href="#t:object/0">object</a>()],·Reason·::·<a·href="../../../../erts-15.2.3/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="4962503461-1">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4962503461-2">[</span><span·class="p"·data-group-id="4962503461-3">{</span><span·class="ss">type</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·197,·SHA:·ae145b0829c4e406cbbf26074081c41d52d7ef8cb66dde1b733c46e3fd28e8dd·...·]-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="2176384788-1">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2176384788-2">[</span><span·class="p"·data-group-id="2176384788-3">{</span><span·class="ss">type</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·197,·SHA:·db0be20975d99561a849f0229d3def4d1efd1f3e4dac2d959a886d8ca7c844b7·...·]-1">)</span><span·class="p">.</span><span·class="w">
1851 </span><span·class="p"·data-group-id="4962503461-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">abc</span><span·class="p"·data-group-id="4962503461-4">}</span><span·class="gp·unselectable">1851 </span><span·class="p"·data-group-id="2176384788-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">abc</span><span·class="p"·data-group-id="2176384788-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="4962503461-5">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4962503461-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:·e7fc62a0e2b93a249b710d6fb20a156c6bb6f8b826c6f13099b9f6eee4b1cf5b·...·]-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="2176384788-5">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2176384788-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:·5c29c1d729c1809a5dd494bec0841186bb981ebb3bf78f5888bcf2a60e35705e·...·]-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="4962503461-7">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4962503461-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:·1054b01b575d37496483d360d2bea7d832ca10af75701aa0b4df3644c77df2fc·...·]-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="2176384788-7">(</span><span·class="ss">abc</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2176384788-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:·b66fe9a6fc4fb6042f2f3a1539fa2bbc01cec40095c7ec6fc18f9638e233dea3·...·]-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="4962503461-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="4962503461-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="2176384788-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="2176384788-9">)</span><span·class="p">.</span><span·class="w">
1857 </span><span·class="p"·data-group-id="4962503461-10">[</span><span·class="p"·data-group-id="4962503461-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="4962503461-11">}</span><s[·...·truncated·by·diffoscope;·len:·294,·SHA:·470605e6b7d13785f2c6b5ceddf0b9ce10f2fab4e6e23b36557b24eb797aebc5·...·]-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="2176384788-10">[</span><span·class="p"·data-group-id="2176384788-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="2176384788-11">}</span><s[·...·truncated·by·diffoscope;·len:·294,·SHA:·6c7c9b9ea52780344a65d395cca8340d46898d5b39fe4e0bc2d05530f7c20a03·...·]-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="5901834402-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5901834402-2">[</span><span·class="p"·data-group-id="5901834402-2">]</span><span·class="p"·data-group-id="5901834402-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="0963016161-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0963016161-2">[</span><span·class="p"·data-group-id="0963016161-2">]</span><span·class="p"·data-group-id="0963016161-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="5901834402-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5901834402-4">[</span><span·class="p"·data-group-id="5901834402-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·778,·SHA:·b25300e428e305ba8c4e0fc25c97aaeb78a33852f285ec34a7ee1fd8b63e05df·...·]-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="0963016161-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0963016161-4">[</span><span·class="p"·data-group-id="0963016161-5">{</span><span·class="mi">1</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·778,·SHA:·06fdc243166d86b6cf91e4bdb8a9ead023461aa63695b5cd63601f814922edf3·...·]-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="5901834402-9">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5901834402-10">(</span><span·class="p"·data-group-id="5901834402-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:·ee1fe40ab0e0c0f44a602718650531fa3aeae1d580284384c8814f6cd12b982c·...·]-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="0963016161-9">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0963016161-10">(</span><span·class="p"·data-group-id="0963016161-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:·0e0ca9e0cba4739826c619c39378b0beae6c9aa38545ac2b0353b3c4af4d84c2·...·]-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="5901834402-15">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5901834402-16">[</span><span·class="p"·data-group-id="5901834402-17">{</span><span·class="ss">traverse</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·2206,·SHA:·cbbc65e32b26a06c6a468b1b35ec46438c3fadb3d8055da872e32080f1bb89a1·...·]-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="0963016161-15">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0963016161-16">[</span><span·class="p"·data-group-id="0963016161-17">{</span><span·class="ss">traverse</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·2206,·SHA:·39a0dd36fdecdca5c61161e30acfdd9c4baeafb2ed00e423342dc7a71980549d·...·]-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="4483104023-1">(</span><span·class="n">QH1</span><span·class="p"·data-group-id="4483104023-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:·69174445348fa52f665268bfc9bd467ab71743d69a98a1fc066969470d20c0bd·...·]-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="6105313525-1">(</span><span·class="n">QH1</span><span·class="p"·data-group-id="6105313525-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:·b44e43ff846e335e810d9db5ce062ff2ad35a6d755f7c97e352c17ec95499556·...·]-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.3/doc/html/erlang.html#t:term/0">term</a>().</pre>2740 ······················Reason·::·<a·href="../../../../erts-15.2.3/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="8376139184-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="8376139184-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:·f374e9d2203b877817d663adbb10ffda97829ce06a81cb1c815407e7f53fff38·...·]-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="4276411305-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="4276411305-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:·06598f563fbec3759ddf0eaf5b4ed3d32b580a68d926ae2188282f5d01e49115·...·]-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.1/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="1463023317-1">(</span><span·class="p"·data-group-id="1463023317-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="3127777872-1">(</span><span·class="p"·data-group-id="3127777872-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="1463023317-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1463023317-3">[</span><span·class="p"·data-group-id="1463023317-3">]</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·63,·SHA:·64bd4d67ec6e3e48c2951a86d6444a47bf9bfaf239a11a4aaa5e81af883649f2·...·]-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="3127777872-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3127777872-3">[</span><span·class="p"·data-group-id="3127777872-3">]</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·63,·SHA:·ff3ee29f566f54ac416b5d39def174e5d39534502ac6c7848fa8aba06abeeaf0·...·]-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="1463023317-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="1463023317-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="3127777872-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="3127777872-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="1463023317-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="1463023317-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="3127777872-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="3127777872-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="1463023317-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="1463023317-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="3127777872-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="3127777872-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="1463023317-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="1463023317-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="3127777872-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="3127777872-7">)</span><span·class="p">.</span><span·class="w">
147 </span><span·class="p"·data-group-id="1463023317-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="1463023317-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="3127777872-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="3127777872-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="7567061875-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="7567061875-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="8693769602-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="8693769602-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="7567061875-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7567061875-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:·a0c62e3bb5809842ecfab3b50ca138eb343ec98e4e87e089b9b1de4446db83fd·...·]-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="8693769602-2">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="8693769602-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:·e191d2734c5a61c7c03016d1e78df71a760a6a83cdb0ade0c71e60fe379914ea·...·]-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="7567061875-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="7567061875-5">(</span><span·class="n">V2</span><span·class="p"·data-group-id="75[·...·truncated·by·diffoscope;·len:·634,·SHA:·6211df02863ff0260ed9ad0d44be35f668c010c63f2795359e23ab1ffcc650b6·...·]-4">)</span><span·class="w">878 ·················</span><span·class="nf">update</span><span·class="p"·data-group-id="8693769602-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="8693769602-5">(</span><span·class="n">V2</span><span·class="p"·data-group-id="86[·...·truncated·by·diffoscope;·len:·634,·SHA:·56ea40a2dc9e2fa013228560be91b9d41543af22a0238ec20f52b1834acf478b·...·]-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="7567061875-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="8693769602-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="4193694783-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="4193694783-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="5651097486-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="5651097486-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="4193694783-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="4193694783-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·673,·SHA:·9032da2235003656672655735fd263142f93b8bda01563397d1b0a61f0158f15·...·]-2">)</span><span·class="p">.</span></code></pre>1079 ····</span><span·class="nf">update</span><span·class="p"·data-group-id="5651097486-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="5651097486-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·673,·SHA:·87882357c461b73d4840968e3298786ebb56c658ccb69c6e34c6590d4b900c4e·...·]-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.3/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.3/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="0402765069-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="0402765069-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="4146786156-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="4146786156-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="0402765069-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="0402765069-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·462,·SHA:·c31a0dbbae202c2bed55ba3f4c165a361645f76df82939237d3f61c9dfedb9cd·...·]-2">)</span><span·class="p">.</span></code></pre>1109 ····</span><span·class="nf">update</span><span·class="p"·data-group-id="4146786156-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="4146786156-3">(</span><span·class="n">Old</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·462,·SHA:·3a480a03e319114a59db5edabfbcb57471577ec524213d946edfc30fe17cc080·...·]-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.84 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/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="0979639163-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="09796391[·...·truncated·by·diffoscope;·len:·369,·SHA:·38d4de5c4a6d2efe53c33b0802080658916c79b716de69d91e8b3c1dde515e01·...·]-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="3144556620-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="31445566[·...·truncated·by·diffoscope;·len:·369,·SHA:·ce815885818120f97544248211c3f0fb17c29d56874a3d4819255dc7eb09ff2d·...·]-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.1/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.3/doc/html/erlang.html#t:term/0">term</a>(),·<a·href="#t:column/0">column</a>())·->·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0">term</a>(),·<a·href="#t:column/0">column</a>())·->·<a·href="../../../../erts-15.2.3/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="6494120980-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="6494120980-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·418,·SHA:·12be25bb5cf106b88a415099ace0dc429c9d54640e17051adf9f9bff4a21a874·...·]-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="8933797372-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="8933797372-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·418,·SHA:·92a1b35ba5a5566e097272a278a1113f5bccf90e060f5f53414e81c29adf05f3·...·]-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="2339217245-1">(</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="2339217245-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="3728375378-1">(</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="3728375378-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="2339217245-2">(</span><span·class="p"·data-group-id="2339217245-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·clas[·...·truncated·by·diffoscope;·len:·133,·SHA:·e90883d53f1543184acc068c23cde43268c324e7922d58d9d584e68feef4d19f·...·]-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="3728375378-2">(</span><span·class="p"·data-group-id="3728375378-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·clas[·...·truncated·by·diffoscope;·len:·133,·SHA:·de820ecfba588c08d44a474805d695b138faf8501432a4e403bd467c9f60466e·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
433 </span><span·class="nf">atom_to_string</span><span·class="p"·data-group-id="2339217245-4">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="2339217245-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="2339217245-5">(</s[·...·truncated·by·diffoscope;·len:·71,·SHA:·3020944d3f889a4654ea82ac9e4a73ac5a01cb5687f826cdbd15174bcba8b2eb·...·]-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="3728375378-4">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="3728375378-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="3728375378-5">(</s[·...·truncated·by·diffoscope;·len:·71,·SHA:·e9fbad220f48d74f01fef7885f3500a9f94a3ba3584b55134f9a499b78622a18·...·]-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="2339217245-6">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="2339217245-6">)</span><span·class="p">;</span><span·class="w">434 ··</span><span·class="nf">atom_to_list</span><span·class="p"·data-group-id="3728375378-6">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="3728375378-6">)</span><span·class="p">;</span><span·class="w">
435 </span><span·class="nf">atom_to_string</span><span·class="p"·data-group-id="2339217245-7">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="2339217245-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="3728375378-7">(</span><span·class="n">Arg</span><span·class="p"·data-group-id="3728375378-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="2339217245-8">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="2339217245-9">[</span><span·class="n">Arg</span><span·class="p"·data-group-id="2339217245-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="3728375378-8">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="3728375378-9">[</span><span·class="n">Arg</span><span·class="p"·data-group-id="3728375378-9">]</span><span·class="p">,</span><span·class="w">
437 ···············</span><span·class="p"·data-group-id="2339217245-10">[</span><span·class="p"·data-group-id="2339217245-11">{</span><span·class="ss">error_info</span><span·class="p">,</span><span·class="p"·data-group-id="2339217245-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="3728375378-10">[</span><span·class="p"·data-group-id="3728375378-11">{</span><span·class="ss">error_info</span><span·class="p">,</span><span·class="p"·data-group-id="3728375378-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="2339217245-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="[·...·truncated·by·diffoscope;·len:·226,·SHA:·261021adcab40b7dc60376a2b1c445d35c9e503d08bb1be6c7cc3fe51fd027fe·...·]-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="3728375378-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="[·...·truncated·by·diffoscope;·len:·226,·SHA:·816842f459d162122f08ecfe5a0c99e57c2fcc4f034827b966b6427c4e054be6·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
439 </span><span·class="nf">format_error</span><span·class="p"·data-group-id="2339217245-14">(</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2339217245-15">[</span><span·class="p"·data-group-id="2339217245-16">{</span><span·class="p">_</span><span·class="n">M</span>[·...·truncated·by·diffoscope;·len:·393,·SHA:·56fea26a23606011492294becf4b7c622bd45f515ecdb5270b4b37cbf6f544e5·...·]-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="3728375378-14">(</span><span·class="n">Reason</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3728375378-15">[</span><span·class="p"·data-group-id="3728375378-16">{</span><span·class="p">_</span><span·class="n">M</span>[·...·truncated·by·diffoscope;·len:·393,·SHA:·94b8723f87f7349d568fa3da589844aa7862f670ccfb62bfd16c4241ab90e0a4·...·]-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="2339217245-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="2339217245-18">#{</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·74,·SHA:·ebb2008477994fde4f804f19a7f2823646a84cf3c2852e41231f23448b74bf18·...·]-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="3728375378-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="3728375378-18">#{</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·74,·SHA:·63b4d54121157de2785cceeaf2416e3c16c600bc1016ad43f6735cb7d5464ccb·...·]-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="2339217245-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="2339217245-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="3728375378-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="3728375378-19">)</span><span·class="p">,</span><span·class="w">
442 ··</span><span·class="n">ErrorMap</span><span·class="p"·data-group-id="2339217245-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="3728375378-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="2339217245-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="2339217245-22">[</span><span·class="o">?</s[·...·truncated·by·diffoscope;·len:·582,·SHA:·a9a4ef8ee88d976860cf65dcfa46cc0da7af148debd5c9ffc3adda47931f5367·...·]-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="3728375378-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="3728375378-22">[</span><span·class="o">?</s[·...·truncated·by·diffoscope;·len:·582,·SHA:·0a5e257b4b79a3ed3edfa6c42f67bb11faecadcd6e4e8045445208377a7ef162·...·]-1">)</span><span·class="p">.</span><span·class="w">
444 </span><span·class="p"·data-group-id="7019715055-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="7019715055-2">}</span><span·class="gp·unselectable">444 </span><span·class="p"·data-group-id="5584451003-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">my_error_module</span><span·class="p"·data-group-id="5584451003-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="7019715055-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="7019715055-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="5584451003-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="5584451003-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.3/doc/html/erlang.html#t:stacktrace/0">erlang:stacktrace</a>(),524 ······························StackTrace·::·<a·href="../../../../erts-15.2.3/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="7054655451-1">(</span><span·class="p"·data-group-id="7054655451-1">)</span><span·class="w">529 ····</span><span·class="nf">do_something</span><span·class="p"·data-group-id="5655259617-1">(</span><span·class="p"·data-group-id="5655259617-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="7054655451-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="7054655451-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="5655259617-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="5655259617-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="7054655451-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="7054655451-4">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·707bc129b2dc00939efe6088c399d44c83f60bef1f3cbf42a62ddc6e8cad79bb·...·]-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="5655259617-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="5655259617-4">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·aed2747fc01e7f9e2d35f258715a6241e1d1a2ed926b486b6d566606458d8340·...·]-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="6759808110-1">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="6759808110-2">[</span><span·class="p"·data-group-id="6759808110-2">]</span><span·class="p">,</span><span·class="p"·data-group-id="6759808110-3">[</sp[·...·truncated·by·diffoscope;·len:·368,·SHA:·cd2e88edc1bfd2e202bc7cd2acb1b2fbdd4fa0a55688276bf6ea6f03b778c6cd·...·]-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="1704191111-1">(</span><span·class="ss">badarg</span><span·class="p">,</span><span·class="p"·data-group-id="1704191111-2">[</span><span·class="p"·data-group-id="1704191111-2">]</span><span·class="p">,</span><span·class="p"·data-group-id="1704191111-3">[</sp[·...·truncated·by·diffoscope;·len:·368,·SHA:·e831ebbf66866198ce81cbbe95a574bfa694bbc737dca70c98f493e723f93dd5·...·]-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="6759808110-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="6759808110-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="1704191111-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="1704191111-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="6759808110-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="6759808110-8">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·5936e16323ca48dc636bfcc9dec674c3b40096cdc8cb7c082eca9dd1d2ba01d2·...·]-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="1704191111-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="1704191111-8">[</span><span·class="n"[·...·truncated·by·diffoscope;·len:·109,·SHA:·1a1a68b5d2e1f72aa20c4f89d16faf39f6fa275791fd0a645dfaee1bd10d4237·...·]-7">)</span><span·class="w">
541 </span><span·class="k">end</span></code></pre><p>See·<a·href="../../../../erts-15.2.3/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.3/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.1/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="0410351738-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="0410351738-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="3378273403-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="3378273403-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.3/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.3/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="6655082754-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="6655082754-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="3867083665-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="3867083665-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="1884555769-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="1884555769-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="2754442251-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="2754442251-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.3/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.3/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="8307505402-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="8307505402-1">)</span></code></pre><p>or·three·arguments:</p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·324,·SHA:·3599e66b18fe03307dd78ba61a067289d6a0399d979c0d0d4c268e2def9fb9e1·...·]-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="9691199759-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="9691199759-1">)</span></code></pre><p>or·three·arguments:</p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·324,·SHA:·2c6e65ef8cc504ef885f58932c6bdffeffb89dbb02004b2a1275b8b6642ac98d·...·]-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.3/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.3/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.44 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/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="2592006596-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="25920065[·...·truncated·by·diffoscope;·len:·369,·SHA:·1737b78cdb15e3d68f403e40709f1cb6e28fe5cabc58a87b5b2de06d85adbac1·...·]-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="9345821405-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="93458214[·...·truncated·by·diffoscope;·len:·369,·SHA:·7363ce6f9ec458ab2daac2c7926444f052cd2538ff810a95bb5cd1b8f2932fae·...·]-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.1/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="6470040009-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="64700400[·...·truncated·by·diffoscope;·len:·369,·SHA:·0922c3bcb40a3cee5811bfc7ad4ebc7407db72d033e09b0600d1706312fa26bb·...·]-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="5899271342-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="58992713[·...·truncated·by·diffoscope;·len:·369,·SHA:·ed68828e32a9cf592c4b99f66fe5d3842f825ae31745a2669f886326d0798b7e·...·]-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.3/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.3/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.46 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/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="1337730919-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="1337[·...·truncated·by·diffoscope;·len:·373,·SHA:·62b7d9453b41ee9ee1bd170241112034df3b548901c00bdd899bc2d40e5c50ca·...·]-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="4213663534-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="4213[·...·truncated·by·diffoscope;·len:·373,·SHA:·beabd3fbd4401b8f82a560352706f531a55a78ba8be18278fe51064821df4217·...·]-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.1/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.3/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.3/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.3/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.3/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="1990982290-1">(</span><span·class="ss">write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1990982290-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:·318ba017ed0a05d605985a5fb8b6949526396eca65df5e0f2780fd1f2cd776e4·...·]-3">)</span><span·class="p">;</span><span·class="w">1246 ···</span><span·class="nf">fun</span><span·class="p"·data-group-id="7186908807-1">(</span><span·class="ss">write</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7186908807-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:·00dd3067f8e56c7062a9fec00052e903cf5952c0084ebd20469edcf184e51c70·...·]-3">)</span><span·class="p">;</span><span·class="w">
1247 ······</span><span·class="p"·data-group-id="1990982290-4">(</span><span·class="ss">position</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1990982290-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:·f6c4f2dd9c8edab6df6323e2c798729bafe86eac15871b8bebf15477041b7d88·...·]-6">)</span><span·class="p">;</span><span·class="w">1247 ······</span><span·class="p"·data-group-id="7186908807-4">(</span><span·class="ss">position</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7186908807-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:·5729ff4ec9c987c4cafc449d6092762b732db4891a63d5bca95b5dee16cee00e·...·]-6">)</span><span·class="p">;</span><span·class="w">
1248 ······</span><span·class="p"·data-group-id="1990982290-7">(</span><span·class="ss">read2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1990982290-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:·262b02f50e48fac14d83eb3213fade50794f5787cd76cf15f5a0a4f409ea16dc·...·]-9">)</span><span·class="p">;</span><span·class="w">1248 ······</span><span·class="p"·data-group-id="7186908807-7">(</span><span·class="ss">read2</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7186908807-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:·151ee75f8d75e51ad693853417e926d169c9546f5b52263b84c036711559601b·...·]-9">)</span><span·class="p">;</span><span·class="w">
1249 ······</span><span·class="p"·data-group-id="1990982290-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="1990982290-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·200,·SHA:·f9d359f180a63cd94e8465032733022e5e745f68fe7f7e04db93f5a5aae99fa5·...·]-11">)</span><span·class="w">1249 ······</span><span·class="p"·data-group-id="7186908807-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="7186908807-10">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·200,·SHA:·2b59aa8876ba67948cb0245310b77731aa7b1c04f543502101fb1a2e6ca83e8e·...·]-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="5498452632-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Fd</span><span·class="p"·data-group-id="5498452632-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="5498452632-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="5498452632-2">)</span><span·class="p">.</span><span·class="w"> 
1251 </span><span·class="p"·data-group-id="5498452632-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="5498452632-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w"[·...·truncated·by·diffoscope;·len:·1041,·SHA:·ff5a731defc42498024aa50dfcb48637390fba86de46fa0f22f10666111fc510·...·]</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:·680c03615e314e3ae225806480e4d98c5c4e76e33950b26b82d9e8ad4661325e·...·]</span><span·class="w">
 1251 </span><span·class="p"·data-group-id="7941595398-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="7941595398-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="7941595398-4">(</span><span·class="n">Fd</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7941595398-5">[</span><span·class="ss">write</span><span·class="p"·data-group-id="7941595398-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">ExampleFun</span><span·class="p"·data-group-id="7941595398-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="9180583045-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="9180583045-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="8198231205-2">(</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="8198231205-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="9180583045-2">(</span><span·class="n">TarDesc</span><span·class="p"·data-group-id="9180583045-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.1/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="6865194308-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="6865194308-2">[</span><span·class="n">Source</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·76,·SHA:·54a0c518f35eba7f632c2183cca0e9a929bd261687dac1ab33e03a15539d0042·...·]-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="5186034661-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="5186034661-2">[</span><span·class="n">Source</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·76,·SHA:·f9c77dc129636b442e3694ecb7448566b84318c19b95da9582617d6cf139f701·...·]-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="6865194308-3">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="6865194308-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="5186034661-3">(</span><span·class="p">_</span><span·class="n">Args</span><span·class="p"·data-group-id="5186034661-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="6865194308-4">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="6865194308-5">(</span><span·class="ss">schedulers</span><span·class="p"·data-group-id="6865194308-5">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·34c3f1aa0eab1f3b6fffbb7304093e376191bc49002d9150fe83021d2e35cd57·...·]-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="5186034661-4">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">system_info</span><span·class="p"·data-group-id="5186034661-5">(</span><span·class="ss">schedulers</span><span·class="p"·data-group-id="5186034661-5">)</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·96f121653507098d55b200e903d0670fab835e26a772097a646a93b26af688ab·...·]-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="6865194308-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="6865194308-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·630,·SHA:·efcba5f84cba4836350df89d51681de4162bacb6679c4f752159c206d5b7cdfc·...·]-9">}</span><span·class="p">,</span><span·class="w">514 &gt;·</span><span·class="p"·data-group-id="5186034661-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="5186034661-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·630,·SHA:·ec5bb02fcbaf989cb0b7b261a5acf6f1aafc75621c1ecd3654ee0b64dca21847·...·]-9">}</span><span·class="p">,</span><span·class="w">
515 ······································</span><span·class="p"·data-group-id="6865194308-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="6865194308-11">(</span><span·class="n">Source</span><span·class="p"·data-group-id="6865194308-11">)</span><span·class="p"·data-group-id="6865194308-10">}</span><span·class="p"·data-group-id="6865194308-8">]</span><span·class="p"·data-group-id="6865194308-7">)</span><span·class="p">.</span><span·class="w"> 
516 </span><span·class="p"·data-group-id="6865194308-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6865194308-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:·fc1b2a55c701faa0fffffda672cb544588a0cbd21d59e0cdbd7784a937c9c714·...·]">515 ······································</span><span·class="p"·data-group-id="5186034661-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="5186034661[·...·truncated·by·diffoscope;·len:·294,·SHA:·d4ecead916e41d133630a87fa343498f658b1365871cbf0afddc2597e95cc0a5·...·]">
 516 </span><span·class="p"·data-group-id="5186034661-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5186034661-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="5186034661-13">&gt;&gt;</span><span·class="p"·data-group-id="5186034661-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="6865194308-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="6865194308-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="5186034661-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="5186034661-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="6865194308-15">(</span><span·class="s">&quot;escript·demo.escript&quot;</span><span·class="p"·data-group-id="6865194308-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="5186034661-15">(</span><span·class="s">&quot;escript·demo.escript&quot;</span><span·class="p"·data-group-id="5186034661-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="6865194308-16">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6865194308-17">[</span><span·class="p"·data-group-id="6865194308-17">]</span><span·class="p"·data-group-id="6865194308-16">)</span><span·class="p">.</span><span·class="w"> 
522 </span><span·class="p"·data-group-id="6865194308-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6865194308-19">[</span><span·class="p"·data-group-id="6865194308-20">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="6865194308-20">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6865194308-21">{</span><span·class="ss">comment</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="6865194308-21">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6865194308-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="6865194308-22">}</span><span·class="p">,</span><span·class="w"> 
523 ·····</span><span·class="p"·data-group-id="6865194308-23">{</span><span·class="ss">source</span><span·class="p">,</span><span·class="p"·data-group-id="6865194308-24">&lt;&lt;</span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(erlang:syst[·...·truncated·by·diffoscope;·len:·683,·SHA:·aabe5cd6bd80312f0988054b1de0fb918a349782845ffa916ec95d6ce5164298·...·]</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="5186034661-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:·281d1d2f30c0904e3756c8109473195965ec4eec9cdf4073ab0c5fc0bd5e529c·...·]</span><span·class="w">
 522 </span><span·class="p"·data-group-id="5186034661-18">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5186034661-19">[</span><span·class="p"·data-group-id="5186034661-20">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="5186034661-20">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5186034661-21">{</span><span·class="ss">comment</span><span·class="p">,</span><span·class="ss">default</span><span·class="p"·data-group-id="5186034661-21">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5186034661-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="5186034661-22">}</span><span·class="p">,</span><span·class="w">
 523 ·····</span><span·class="p"·data-group-id="5186034661-23">{</span><span·class="ss">source</span><span·class="p">,</span><span·class="p"·data-group-id="5186034661-24">&lt;&lt;</span><span·class="s">&quot;%%·Demo\nmain(_Args)·-&gt;\n····io:format(erlang:system_info(schedu&quot;</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="5186034661-24">&gt;&gt;</span><span·class="p"·data-group-id="5186034661-23">}</span><span·class="p"·data-group-id="5186034661-19">]</span><span·class="p"·data-group-id="5186034661-18">}</span></code></pre><p>An·escript·without·header·can·be·created·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="nc">file</span><span·class="p">:</span><span·class="nf">write_file</span><span·class="p"·data-group-id="9488177360-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="2935591598-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="2935591598-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·428bd370ffe5abdb7f31e964d757cc593473d1b1b75686c2e924b4e770adff24·...·]-1">)</span><span·class="p">.</span><span·class="w">524 ··················</span><span·class="p"·data-group-id="9488177360-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="9488177360-2">]</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·23,·SHA:·50dd3a399493cb0e5fbc243939dd4f0359fe2a0d8b0d880c0c99a42f3f8b9bb6·...·]-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="2935591598-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="2935591598-3">}</span><spa[·...·truncated·by·diffoscope;·len:·554,·SHA:·4aa960be458576fc0fead0e45dfd76d0c1b5376c26735760357fd96872ecd2f0·...·]-4">)</span><span·class="p">.</span><span·class="w">526 &gt;·</span><span·class="p"·data-group-id="9488177360-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="9488177360-3">}</span><spa[·...·truncated·by·diffoscope;·len:·554,·SHA:·2842b4c1954619793e654fcbd216732430a2ad3b656025aaccb229c4a5779056·...·]-4">)</span><span·class="p">.</span><span·class="w">
527 </span><span·class="p"·data-group-id="2935591598-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="9488177360-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="2935591598-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="9488177360-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="2935591598-7">&gt;&gt;</span><span·class="p"·data-group-id="2935591598-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="9488177360-7">&gt;&gt;</span><span·class="p"·data-group-id="9488177360-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="2935591598-8">(</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2935591598-9">[</span><span·class="p"·data-group-id="2935591598-10">{</span><span·class="ss">beam</span><span·c[·...·truncated·by·diffoscope;·len:·220,·SHA:·84902f2217a1b52206bf064401001424465bc2968fb0e62507ce84e370a1b0ea·...·]-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="9488177360-8">(</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9488177360-9">[</span><span·class="p"·data-group-id="9488177360-10">{</span><span·class="ss">beam</span><span·c[·...·truncated·by·diffoscope;·len:·220,·SHA:·962e60a0021d5d4d4b786af2a121c2fc5ae6c54d3724221fa85114db05227b96·...·]-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="2935591598-11">(</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2935591598-12">[</span><span·class="p"·data-group-id="2935591598-12">]</span><span·class="p"·data-group-id="2935591598-11">)</span><span·class="p">.</span><span·class="w"> 
533 </span><span·class="p"·data-group-id="2935591598-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2935591598-14">[</span><span·class="p"·data-group-id="2935591598-15">{</span><span·class="ss">shebang</span><span·[·...·truncated·by·diffoscope;·len:·611,·SHA:·7448c6d3d925da20700a9582d44470ec2be84d55377b61edd05fcef666f817d4·...·]</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="9488177360-11">(</span><span·class="s">&quot;demo.beam&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·167,·SHA:·bbb663a00dc61014d38bfd32a7684a14252b97e0678d8538db31fc08f5f0c8a7·...·]</span><span·class="w">
 533 </span><span·class="p"·data-group-id="9488177360-13">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9488177360-14">[</span><span·class="p"·data-group-id="9488177360-15">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="9488177360-15">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9488177360-16">{</span><span·class="ss">comment</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="9488177360-16">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9488177360-17">{</span><span·class="ss">emu_args</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="9488177360-17">}</span><span·class="p">,</span><span·class="w">
534 ·····</span><span·class="p"·data-group-id="2935591598-18">{</span><span·class="ss">beam</span><span·class="p">,</span><span·class="p"·data-group-id="2935591598-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="9488177360-18">{</span><span·class="ss">beam</span><span·class="p">,</span><span·class="p"·data-group-id="9488177360-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="2935591598-19">&gt;&gt;</span><span·class="p"·data-group-id="2935591598-18">}</span><span·class="p"·data-group-id="2935591598-14">]</span><span·class="p"·data-group-id="2935591598-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="9488177360-19">&gt;&gt;</span><span·class="p"·data-group-id="9488177360-18">}</span><span·class="p"·data-group-id="9488177360-14">]</span><span·class="p"·data-group-id="9488177360-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="2935591598-20">(</span><span·class="s">&quot;escript·demo.beam&quot;</span><span·class="p"·data-group-id="2935591598-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="9488177360-20">(</span><span·class="s">&quot;escript·demo.beam&quot;</span><span·class="p"·data-group-id="9488177360-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="0635475092-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="0635475092-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="0635475092-2">(</span><span·class="s">&quot;demo.erl&quot;</span><span·class="p"·data-group-id="0635475092-2">)</span><span·class="p">.</span><span·class="w"> 
540 </span><span·class="p"·data-group-id="0635475092-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0635475092-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:·83af9e8e82cf24ec65623835bf6f394f73868f7e58624e1498489b1b47ab95a8·...·]">539 information·about·them:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="gp·unselectable">&gt;·</span><span·class="p"·data-group-id="1541084910-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class=[·...·truncated·by·diffoscope;·len:·418,·SHA:·03aa86c75e37b7ca42760a15b8967ddd541bac0549ff52de5428b780b13420b1·...·]">
 540 </span><span·class="p"·data-group-id="1541084910-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1541084910-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="1541084910-4">&gt;&gt;</span><span·class="p"·data-group-id="1541084910-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="0635475092-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="1541084910-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="0635475092-6">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">542 ·················</span><span·class="p"·data-group-id="1541084910-6">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">
543 ··················</span><span·class="p"·data-group-id="0635475092-7">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0635475092-8">[</span><span·class="p"·data-group-id="0635475092-9">{</span><span·class="s">&quot;demo.erl&quot;</span><span·[·...·truncated·by·diffoscope;·len:·116,·SHA:·6abf37ad7c3e0e379ef26b12785902058c1775a112f65c93355431140f21b8f8·...·]-9">}</span><span·class="p">,</span><span·class="w">543 ··················</span><span·class="p"·data-group-id="1541084910-7">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1541084910-8">[</span><span·class="p"·data-group-id="1541084910-9">{</span><span·class="s">&quot;demo.erl&quot;</span><span·[·...·truncated·by·diffoscope;·len:·116,·SHA:·cc778b014058b56469e8a67145193f96bfac959c709febed8cf7efe4677c9346·...·]-9">}</span><span·class="p">,</span><span·class="w">
544 ·····························</span><span·class="p"·data-group-id="0635475092-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="0635475092-10">}</span><span·class="p"·data-group-id="0635475092-8">]</span><sp[·...·truncated·by·diffoscope;·len:·300,·SHA:·6702abeaae2e80bff7f2933a673676c3a6f0ab22100e464e41ec06be6e29b645·...·]-5">)</span><span·class="p">.</span><span·class="w">544 ·····························</span><span·class="p"·data-group-id="1541084910-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="1541084910-10">}</span><span·class="p"·data-group-id="1541084910-8">]</span><sp[·...·truncated·by·diffoscope;·len:·300,·SHA:·d013afdbaaf7e58add8c7a520947a169f6fa8842f13a0c01f035df7f0395daeb·...·]-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="0635475092-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0635475092-13">[</span><span·class="p"·data-group-id="0635475092-14">{</span><span·class="ss">shebang</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·565,·SHA:·d048f9d3cba2ef848cdc96efc78c8e136e04fb5397bc00643ef9adcc3ca38f83·...·]-16">}</span><span·class="p">,</span><span·class="w">546 &gt;·</span><span·class="p"·data-group-id="1541084910-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1541084910-13">[</span><span·class="p"·data-group-id="1541084910-14">{</span><span·class="ss">shebang</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·565,·SHA:·e83084f4154800b50b90c969dd8e7ac83b22a75e8bd981a4328b75fe32464b2a·...·]-16">}</span><span·class="p">,</span><span·class="w">
547 ·····</span><span·class="p"·data-group-id="0635475092-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="0635475092-17">}</span><span·class="p"·data-group-id="0635475092-13">]</span><span·class="[·...·truncated·by·diffoscope;·len:·497,·SHA:·a88d05655fc8f8dcc02e7e374d9507b355e78b5a799a5fa3ec3df28637b3dd45·...·]-18">)</span><span·class="p">.</span><span·class="w">547 ·····</span><span·class="p"·data-group-id="1541084910-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="1541084910-17">}</span><span·class="p"·data-group-id="1541084910-13">]</span><span·class="[·...·truncated·by·diffoscope;·len:·497,·SHA:·0d2b45b39edce1bebcd4294f322fc67a0ddf77547cb40634434157bd62d29e5d·...·]-18">)</span><span·class="p">.</span><span·class="w">
548 </span><span·class="p"·data-group-id="0635475092-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0635475092-21">[</span><span·class="p"·data-group-id="0635475092-22">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">def[·...·truncated·by·diffoscope;·len:·541,·SHA:·ba370a94cef7352dcba977a07ca94471055e3538efdf92a85c5baed21d76de82·...·]-24">}</span><span·class="p">,</span><span·class="w">548 </span><span·class="p"·data-group-id="1541084910-20">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1541084910-21">[</span><span·class="p"·data-group-id="1541084910-22">{</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="ss">def[·...·truncated·by·diffoscope;·len:·541,·SHA:·33459d564902aaee5ffc61bb678a21426d9bf7e3251c0881c7693d1d15f2041d·...·]-24">}</span><span·class="p">,</span><span·class="w">
549 ·····</span><span·class="p"·data-group-id="0635475092-25">{</span><span·class="p"·data-group-id="0635475092-26">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="p"·data-group-id="0635475092-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="1541084910-25">{</span><span·class="p"·data-group-id="1541084910-26">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="p"·data-group-id="1541084910-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="0635475092-27">&gt;&gt;</span><span·class="p"·data-group-id="0635475092-26">}</span><span·class="p">]</span><span·class="p"·data-group-id="0635475092-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="1541084910-27">&gt;&gt;</span><span·class="p"·data-group-id="1541084910-26">}</span><span·class="p">]</span><span·class="p"·data-group-id="1541084910-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="0635475092-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="0635475092-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="1541084910-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="1541084910-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="0635475092-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0635475092-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·cl[·...·truncated·by·diffoscope;·len:·1252,·SHA:·2bb30284059ff05e76319d0c2bbfc73ed2fdb4011447d91d616f2d5307381f9f·...·]-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="1541084910-29">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1541084910-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·cl[·...·truncated·by·diffoscope;·len:·1252,·SHA:·afb68b340450dd8712352b44beab4370526f5f99ae91a73ba1265dd7cdf20048·...·]-29">)</span><span·class="p">.</span><span·class="w">
554 </span><span·class="p"·data-group-id="0635475092-36">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0635475092-37">[</span><span·class="p"·data-group-id="0635475092-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="1541084910-36">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1541084910-37">[</span><span·class="p"·data-group-id="1541084910-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="0635475092-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="1541084910-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="0635475092-40">{</span><span·class="p"·data-group-id="0635475092-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="0635475092-41">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·cf10f3c76182d98ffa86ae8b7985f79eb8f7bd4c204d2094188184754223d948·...·]-40">}</span><span·class="p">,</span><span·class="w">556 ·················</span><span·class="p"·data-group-id="1541084910-40">{</span><span·class="p"·data-group-id="1541084910-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="1541084910-41">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·abc3f16f4f2adfe9009a1fec9ba9104da2e34b685129eff3dfb1fe8aa720e4b9·...·]-40">}</span><span·class="p">,</span><span·class="w">
557 ·················</span><span·class="p"·data-group-id="0635475092-43">{</span><span·class="p"·data-group-id="0635475092-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="0635475092-44">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·c7d25f661fdbd62d6fe5dd209234996c5d84515a28773db13cc1d63ffc72f70d·...·]-43">}</span><span·class="p">,</span><span·class="w">557 ·················</span><span·class="p"·data-group-id="1541084910-43">{</span><span·class="p"·data-group-id="1541084910-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="1541084910-44">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·95398dcebced3ab86c7a04aaa700ea1ebfbc4d79f1a27bef39e4ae364089caa5·...·]-43">}</span><span·class="p">,</span><span·class="w">
558 ·················</span><span·class="p"·data-group-id="0635475092-46">{</span><span·class="p"·data-group-id="0635475092-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="0635475092-47">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·f13c0d3fb6f9297e94f47e2b90a085284d6ab2e2f320d653febb185db9f70f12·...·]-46">}</span><span·class="p">,</span><span·class="w">558 ·················</span><span·class="p"·data-group-id="1541084910-46">{</span><span·class="p"·data-group-id="1541084910-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="1541084910-47">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·3e10a6e385fe17ea3555e2bb120a886e8e6a0c1501d1b0a4c7b377db23e8c910·...·]-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="0635475092-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="1541084910-39">}</span><span·class="p">,</span><span·class="w">
560 ······</span><span·class="p"·data-group-id="0635475092-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="1541084910-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="0635475092-49">&gt;&gt;</span><span·class="p"·data-group-id="0635475092-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="1541084910-49">&gt;&gt;</span><span·class="p"·data-group-id="1541084910-38">}</span><span·class="p">,</span><span·class="w">
562 ·····</span><span·class="p"·data-group-id="0635475092-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="1541084910-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="0635475092-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="1541084910-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="0635475092-52">{</span><span·class="p"·data-group-id="0635475092-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="0635475092-53">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·99e0269883740e836375ee0e8db072a9cfd42818622fc2e0e9c927c246e17172·...·]-52">}</span><span·class="p">,</span><span·class="w">564 ·················</span><span·class="p"·data-group-id="1541084910-52">{</span><span·class="p"·data-group-id="1541084910-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="1541084910-53">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·efbc294dd2475e1df91092c5447510e859816ca4bfc73176b11d85193ae393a0·...·]-52">}</span><span·class="p">,</span><span·class="w">
565 ·················</span><span·class="p"·data-group-id="0635475092-55">{</span><span·class="p"·data-group-id="0635475092-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="0635475092-56">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·f3c6a3f4abb382ddc9b6a6c7e76f773ac44ee794d64edb1bf2b46dc8287b2e6e·...·]-55">}</span><span·class="p">,</span><span·class="w">565 ·················</span><span·class="p"·data-group-id="1541084910-55">{</span><span·class="p"·data-group-id="1541084910-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="1541084910-56">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·2187bdac77352ecdd2d670e01095158fa86f125b85cbe38239618e01503404a4·...·]-55">}</span><span·class="p">,</span><span·class="w">
566 ·················</span><span·class="p"·data-group-id="0635475092-58">{</span><span·class="p"·data-group-id="0635475092-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="0635475092-59">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·8cc5bf1d2fdb52db1b559fb61e02872bd0aeb3b2e3d35cee16d5a2aff4dec2b6·...·]-58">}</span><span·class="p">,</span><span·class="w">566 ·················</span><span·class="p"·data-group-id="1541084910-58">{</span><span·class="p"·data-group-id="1541084910-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="1541084910-59">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·938387687147ceef6695d7bc2dd991852a1dfe1f9733f50dd42b3ccd92c9f533·...·]-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="0635475092-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="1541084910-51">}</span><span·class="p">,</span><span·class="w">
568 ······</span><span·class="p"·data-group-id="0635475092-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="0635475092-61">&gt;[·...·truncated·by·diffoscope;·len:·160,·SHA:·c7a0dcb048e773107a5e0a1fc5a85832be65ffcf090e48d41aa719549be471e4·...·]-36">}</span></code></pre>568 ······</span><span·class="p"·data-group-id="1541084910-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="1541084910-61">&gt;[·...·truncated·by·diffoscope;·len:·160,·SHA:·71f686e0c912fa7a488dd41941a633d444a205034ee1d2bf92a430d1a1306dfa·...·]-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="4614640006-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="2571238601-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="4614640006-2">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4614640006-3">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·248,·SHA:·b81a87495ba3900483a6f87f78801170d310e8b2717e9c035315a0f9dc5deb0c·...·]-5">}</span><span·class="p">,</span><span·class="w">600 ·················</span><span·class="p"·data-group-id="2571238601-2">[</span><span·class="ss">shebang</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2571238601-3">{</span><span·class="ss">archive</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·248,·SHA:·bbdc788c360cdac423a836670f22d03b6bced8c5b5e5fe42b0889f590804cdcf·...·]-5">}</span><span·class="p">,</span><span·class="w">
601 ······································</span><span·class="p"·data-group-id="4614640006-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="4614640006-6">}</span><span·class="p"·data-group-id="4614640006-4">]</span><span[·...·truncated·by·diffoscope;·len:·296,·SHA:·c8d40228b6f2f16cb5fad37de3cb90412e1757471eab55ad62402e0ce3906648·...·]-1">)</span><span·class="p">.</span><span·class="w">601 ······································</span><span·class="p"·data-group-id="2571238601-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="2571238601-6">}</span><span·class="p"·data-group-id="2571238601-4">]</span><span[·...·truncated·by·diffoscope;·len:·296,·SHA:·a0e07da21363aa51b7d2689ff627dc1de23c58dc9309edc515d7dbb32d0a2b99·...·]-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="4614640006-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4614640006-9">[</span><span·class="p"·data-group-id="4614640006-10">{</span><span·class="ss">shebang</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·563,·SHA:·50e2e9fb84c58c72d846b45e440069738b7237ba39cc032d06afbd81fae9615c·...·]-12">}</span><span·class="p">,</span><span·class="w">603 &gt;·</span><span·class="p"·data-group-id="2571238601-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2571238601-9">[</span><span·class="p"·data-group-id="2571238601-10">{</span><span·class="ss">shebang</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·563,·SHA:·d8f90e224addce6d83a793b551db05147ec4e75b41f746d2e90cc571ad7100a9·...·]-12">}</span><span·class="p">,</span><span·class="w">
604 ·····</span><span·class="p"·data-group-id="4614640006-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="4614640006-13">}</span><span·class="p"·data-group-id="4614640006-9">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·ba454dbb4292ffc46fd87132d3a2602c9b84ac7044dd89a515d8d95bfbe9576d·...·]-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">604 ·····</span><span·class="p"·data-group-id="2571238601-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="2571238601-13">}</span><span·class="p"·data-group-id="2571238601-9">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·e40577e9a462d429e5a1227ba6de583d225e37d6ab10dd8b4d4f00d4f0f83572·...·]-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="4614640006-14">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4614640006-15">[</span><span·class="p"·data-group-id="4614640006-15">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·7bd9085fa2bfdd04fb505192fd5230d3e83d16faf7c6ca80f41e7d2401241c06·...·]-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="2571238601-14">(</span><span·class="s">&quot;demo.escript&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2571238601-15">[</span><span·class="p"·data-group-id="2571238601-15">]</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·99b8696edee97972e901097890c9e2adfe160bcbc9279d47ccff2cee70cfb98c·...·]-14">)</span><span·class="p">.</span><span·class="w">
606 </span><span·class="p"·data-group-id="4614640006-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4614640006-17">[</span><span·class="p"·data-group-id="4614640006-18">{</span><span·class="p"·data-group-id="4614640006-19">{</span><span·class="ss">arch[·...·truncated·by·diffoscope;·len:·75,·SHA:·3bdcae982289e90482f7b050bed5f49aebead60b23c2eecc7ba87446dae36f62·...·]-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="2571238601-16">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2571238601-17">[</span><span·class="p"·data-group-id="2571238601-18">{</span><span·class="p"·data-group-id="2571238601-19">{</span><span·class="ss">arch[·...·truncated·by·diffoscope;·len:·75,·SHA:·201b70dbeeb1dedaeeb2c6440ae0d8c563e3847484dac7a1584c8bb1c5572611·...·]-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="4614640006-20">&gt;&gt;</span><span·class="p"·data-group-id="4614640006-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="2571238601-20">&gt;&gt;</span><span·class="p"·data-group-id="2571238601-19">}</span><span·class="w">
608 ·····</span><span·class="p"·data-group-id="4614640006-21">{</span><span·class="ss">emu_args</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="4614640006-21">}</span><span·class="p">]</span><span·class="p"·data-group-id="4614640006-18">}</span></code></pre>608 ·····</span><span·class="p"·data-group-id="2571238601-21">{</span><span·class="ss">emu_args</span><span·class="p">,</span><span·class="ss">undefined</span><span·class="p"·data-group-id="2571238601-21">}</span><span·class="p">]</span><span·class="p"·data-group-id="2571238601-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.1/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="1409064321-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1409064321-2">[</span><span·class="ss">ordered_set</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">named_ta[·...·truncated·by·diffoscope;·len:·104,·SHA:·070fcf0b9c0ef9e4ce1300c5931059868c15ef48fd359e4e2182be1fd99527b2·...·]-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="5872873750-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5872873750-2">[</span><span·class="ss">ordered_set</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">named_ta[·...·truncated·by·diffoscope;·len:·104,·SHA:·a2a19c471968e5202818c7cd8ec64639574d48f6d8af20670c4fe9c60101a5bf·...·]-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="1409064321-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1409064321-4">{</span><span·class="mi">1</span><span·class="p"·data-group-id="1409064321-4">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·068f0176c6eb7ccfd1c8712d8cc4835479481b11c25f7adc82a22c890467501e·...·]-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="5872873750-3">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5872873750-4">{</span><span·class="mi">1</span><span·class="p"·data-group-id="5872873750-4">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·8acee11560f8bbd044a5fc17b00b3cccda64008869ada88549533e820014bda4·...·]-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="1409064321-5">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1409064321-6">{</span><span·class="mi">2</span><span·class="p"·data-group-id="1409064321-6">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·068f0176c6eb7ccfd1c8712d8cc4835479481b11c25f7adc82a22c890467501e·...·]-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="5872873750-5">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5872873750-6">{</span><span·class="mi">2</span><span·class="p"·data-group-id="5872873750-6">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·8acee11560f8bbd044a5fc17b00b3cccda64008869ada88549533e820014bda4·...·]-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="1409064321-7">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1409064321-8">{</span><span·class="mi">3</span><span·class="p"·data-group-id="1409064321-8">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·068f0176c6eb7ccfd1c8712d8cc4835479481b11c25f7adc82a22c890467501e·...·]-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="5872873750-7">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5872873750-8">{</span><span·class="mi">3</span><span·class="p"·data-group-id="5872873750-8">}</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·11,·SHA:·8acee11560f8bbd044a5fc17b00b3cccda64008869ada88549533e820014bda4·...·]-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="1593854651-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="p"·data-group-id="1593854651-2">[</span><span·class="ss">ordered_set</span><span·class="p"·data-group-id="1593854651-2">]</span><span·class="p"·data-group-id="1593854651-1"[·...·truncated·by·diffoscope;·len:·546,·SHA:·5a964b4b29e9dc167b296d3898e3cf0eee6729cf08f6355506a4f6eab209b70f·...·]-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="3128050793-1">(</span><span·class="ss">t</span><span·class="p">,</span><span·class="p"·data-group-id="3128050793-2">[</span><span·class="ss">ordered_set</span><span·class="p"·data-group-id="3128050793-2">]</span><span·class="p"·data-group-id="3128050793-1"[·...·truncated·by·diffoscope;·len:·546,·SHA:·a0b1ddf90fc8e698d5ddd73bb916c96b8e3a2ab9385c4f5b57403ee40fea2d12·...·]-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="1593854651-5">(</span><span·class="n">T</span><span·class="p">,</span><span·class="p"·data-group-id="1593854651-6">{</span><span·class="p"·data-group-id="1593854651-7">[</span><span·class="sc">$5</span><span·class="p">,</span><span·class="sc">$5</span><spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·b59b245e64f2fa3a2fb1b731acfcd1435b1ff9e276edee8d0b23c84f0ade4e05·...·]-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="3128050793-5">(</span><span·class="n">T</span><span·class="p">,</span><span·class="p"·data-group-id="3128050793-6">{</span><span·class="p"·data-group-id="3128050793-7">[</span><span·class="sc">$5</span><span·class="p">,</span><span·class="sc">$5</span><spa[·...·truncated·by·diffoscope;·len:·387,·SHA:·12294a7f1a9dfaf4dadc8cc02a3fcc5117915a3bf99790b8bbd92f7368fd3c12·...·]-5">)</span><span·class="p">.</span><span·class="w">
243 </span><span·class="p"·data-group-id="1593854651-8">[</span><span·class="p"·data-group-id="1593854651-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="1593854651-9">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·1dbc2ea7d708be965d20ce9972bc53184a55f96bcc3636a27da883d4a9e8dc69·...·]-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="3128050793-8">[</span><span·class="p"·data-group-id="3128050793-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="3128050793-9">]</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·e37c43887c7514ea4fa0667b10620a016baa153af82da46d0e2a331eab7fe0e5·...·]-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="0214835293-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0214835293-2">(</span><span·class="p"·data-group-id="0214835293-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:·35581c0e7fab607de923d14459186fd9a90ec9e4eb16fbe88e6bdc5b68e8e196·...·]-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="8300836210-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8300836210-2">(</span><span·class="p"·data-group-id="8300836210-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:·a625600533e28dfd1fd6d61f5393b0e068b4d7ecf14543384c290086b712d90e·...·]-1">)</span><span·class="p">.</span><span·class="w">
1894 </span><span·class="p"·data-group-id="0214835293-4">[</span><span·class="p"·data-group-id="0214835293-5">{</span><span·class="p"·data-group-id="0214835293-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="0[·...·truncated·by·diffoscope;·len:·664,·SHA:·878ac66e0082ef8d3de8f6a3003e37aa8a140ef43b457e45b23b2b7061d605ed·...·]-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="8300836210-4">[</span><span·class="p"·data-group-id="8300836210-5">{</span><span·class="p"·data-group-id="8300836210-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="8[·...·truncated·by·diffoscope;·len:·664,·SHA:·0bad16c57a5ae2e6a09cdccdd335ad50a08828be8ec183ec0e691d04400af88e·...·]-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="6876134504-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="6876134504-2">(</span><span·class="p"·data-group-id="6876134504-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:·fcf6792f407b3a46b553272406a120eb44b8b3d09f170eea597598c340db86b3·...·]-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="2311359659-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2311359659-2">(</span><span·class="p"·data-group-id="2311359659-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:·a539131395c08e09721cee61f4969647aa6088d6ebf9b70e77881f7a4b1c84f2·...·]-1">)</span><span·class="p">.</span><span·class="w">
1897 </span><span·class="p"·data-group-id="6876134504-4">[</span><span·class="p"·data-group-id="6876134504-5">{</span><span·class="p"·data-group-id="6876134504-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="6[·...·truncated·by·diffoscope;·len:·825,·SHA:·2f0003b002ecebc259e576eff8d13e7483e5408049791676ef37c1bd0ddb89f7·...·]-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="2311359659-4">[</span><span·class="p"·data-group-id="2311359659-5">{</span><span·class="p"·data-group-id="2311359659-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="2[·...·truncated·by·diffoscope;·len:·825,·SHA:·da77d32d20bcbb55b59ab4fcec947c98250da86768b8890d7dfde8676da0a795·...·]-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="2260678189-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2260678189-2">(</span><span·class="p"·data-group-id="2260678189-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:·3a4c6b899ac7f33d30237a841cc82c50c8dc84b6f51f7804ae926f44a864852c·...·]-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="8531301673-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8531301673-2">(</span><span·class="p"·data-group-id="8531301673-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:·46ff09c4ccafa2db638c6f6ffab6d7bf07d53139fa6bb6428986836ed986ba78·...·]-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="2260678189-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="226067[·...·truncated·by·diffoscope;·len:·4,·SHA:·3011be4c1d6f6f1a7de65a585c70be01495eb92377268d6cd5ec02e801c36509·...·]-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="8531301673-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="853130[·...·truncated·by·diffoscope;·len:·4,·SHA:·5514a9f709310b22ee9bddd4e6da1b2b8b04d1ad5c3dcb47ed945c356b9b852d·...·]-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="2260678189-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">transform_error</span><span·class="p"·data-group-id="2260678189-6">}</span><span·class="gp·unselectable">1903 </span><span·class="p"·data-group-id="8531301673-6">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="ss">transform_error</span><span·class="p"·data-group-id="8531301673-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="2260678189-7">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2260678189-8">(</span><span·class="p"·data-group-id="2260678189-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:·b8f07b24c43bb63f185c0f0cead62b7edae4fcfce6cac90366c007e8009c6aca·...·]-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="8531301673-7">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8531301673-8">(</span><span·class="p"·data-group-id="8531301673-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:·91f5cbd6a369cb471f0a36561f75abe38dccfcf00b19e5aa6ae00febd7c9ba61·...·]-7">)</span><span·class="p">.</span><span·class="w">
1905 </span><span·class="p"·data-group-id="2260678189-11">[</span><span·class="p"·data-group-id="2260678189-12">{</span><span·class="p"·data-group-id="2260678189-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:·667e8104c37748136f078a98f914784545e4992d1b7bba5d43a20177a0ac5745·...·]-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="8531301673-11">[</span><span·class="p"·data-group-id="8531301673-12">{</span><span·class="p"·data-group-id="8531301673-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:·68a27929d9fde5e6990b88295d14342888ebb1e3689b3b323d34ea6ce5fad073·...·]-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.3/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.3/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="7965885508-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="7965885508-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="6204249459-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="6204249459-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="7965885508-2">[</span><span·class="p"·data-group-id="7965885508-3">[</span><span·class="p"·data-group-id="7965885508-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:·8982ef675101dd4e815e71d85e19dfce09e85b38c61a7dc6407ee19da92fb301·...·]-2">]</span><span·class="gp·unselectable">2496 </span><span·class="p"·data-group-id="6204249459-2">[</span><span·class="p"·data-group-id="6204249459-3">[</span><span·class="p"·data-group-id="6204249459-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:·e7ff5fd8174fe5dc90ec4491f02e55edeee695face612ac113d9905ba8d96ea2·...·]-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="7965885508-9">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7965885508-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:·04378ab22ac4966383e25453b299a3a20d33041783e08934d3f1581e7f5a17b1·...·]-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="6204249459-9">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6204249459-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:·cd028ad5a3fcfe2cfc120eb383c0938378bbfc3a807e6abbd56c9d3c8b16c907·...·]-9">)</span><span·class="p">.</span><span·class="w">
2498 </span><span·class="p"·data-group-id="7965885508-11">[</span><span·class="p"·data-group-id="7965885508-12">[</span><span·class="mi">7</span><span·class="p"·data-group-id="7965885508-12">]</span><span·class="p">,</span><span·class="p"·data-group-id="7965885508-13">[</span><span·class="mi">5</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·d868e13862b3e265633b57197427eef4bbca1efe31e9b599af3df265942f2607·...·]-11">]</span><span·class="gp·unselectable">2498 </span><span·class="p"·data-group-id="6204249459-11">[</span><span·class="p"·data-group-id="6204249459-12">[</span><span·class="mi">7</span><span·class="p"·data-group-id="6204249459-12">]</span><span·class="p">,</span><span·class="p"·data-group-id="6204249459-13">[</span><span·class="mi">5</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·a3f1277e50631605256fa7f5dff09e767a5481532a6ec1ddcfe212613bf7675a·...·]-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="7965885508-14">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7965885508-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:·041bc9cce577d05a2ea1ca9bedd9eeb908ead3cedb1b6331f8175e32b1e7f698·...·]-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="6204249459-14">(</span><span·class="n">T</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6204249459-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:·3140667ed68cb4b1af752ed181a94f791072290a616cd3f7e794805b223f1d2f·...·]-14">)</span><span·class="p">.</span><span·class="w">
2500 </span><span·class="p"·data-group-id="7965885508-16">[</span><span·class="p"·data-group-id="7965885508-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="6204249459-16">[</span><span·class="p"·data-group-id="6204249459-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="5682507507-1">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">tab2list</span><span·class="p"·data-group-id="5682507507-2">(</span><span·class="n">Table</span><span·class="p"·data-group-id="5682507507-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="1540699495-1">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">tab2list</span><span·class="p"·data-group-id="1540699495-2">(</span><span·class="n">Table</span><span·class="p"·data-group-id="1540699495-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="5682507507-3">(</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="5682507507-3">)</span><span·class="p"·data-group-id="5682507507-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="1540699495-3">(</span><span·class="n">MatchSpec</span><span·class="p"·data-group-id="1540699495-3">)</span><span·class="p"·data-group-id="1540699495-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="5682507507-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="5682507507-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="1540699495-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="1540699495-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="3778999015-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3778999015-2">[</span><span·class="p"·data-group-id="3778999015-2">]</span><span·class="p"·data-group-id="3778999015-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="4577198718-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="4577198718-2">[</span><span·class="p"·data-group-id="4577198718-2">]</span><span·class="p"·data-group-id="4577198718-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="3778999015-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3778999015-4">(</span><span·class="p"·data-group-id="3778999015-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:·d44e4ef7d2011b6fe52aae8458900f870ce2b89de80922dedbeb58cbcbf4b400·...·]-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="4577198718-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4577198718-4">(</span><span·class="p"·data-group-id="4577198718-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:·2d79659e4e59fff5a09d77c3e47e32651d568ecc39e4a4a21bc95ae247da4085·...·]-3">)</span><span·class="p">,</span><span·class="w">
3094 </span><span·class="p"·data-group-id="3778999015-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="3778999015-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:·3bf5943d4302089c19fdbdf1cb8444d2a340bbf73228dafd8683285abeae2691·...·]-8">)</span><span·class="p">,</span><span·class="w">3094 </span><span·class="p"·data-group-id="4577198718-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="4577198718-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:·2be9ac5b18a3b3c61b783d3c50d48e21c1738a4bf56bbc81ca99d357f49f9ba3·...·]-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="3778999015-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="3778999015-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="3778999015-10">)</span><span·class="p"·data-group-id="3778999015-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="4577198718-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="4577198718-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="4577198718-10">)</span><span·class="p"·data-group-id="4577198718-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="3778999015-11">(</span><span·class="n">MaybeBroken</span><span·class="p"·data-group-id="3778999015-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="4577198718-11">(</span><span·class="n">MaybeBroken</span><span·class="p"·data-group-id="4577198718-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="8842255228-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="8842255228-2">[</span><span·class="p"·data-group-id="8842255228-2">]</span><span·class="p"·data-group-id="8842255228-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="3023274654-1">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="3023274654-2">[</span><span·class="p"·data-group-id="3023274654-2">]</span><span·class="p"·data-group-id="3023274654-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="8842255228-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8842255228-4">(</span><span·class="p"·data-group-id="8842255228-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:·fb9921918809cdc498428818fa2fe3507589ab0ccbb5b7dd53dbd33af8284190·...·]-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="3023274654-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3023274654-4">(</span><span·class="p"·data-group-id="3023274654-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:·2e978a6986da5f7b557864c9118af0e159ea50a50866493808e43d9f847f8c7f·...·]-3">)</span><span·class="p">,</span><span·class="w">
3101 </span><span·class="p"·data-group-id="8842255228-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="8842255228-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:·88c70f3bcb850ab3fe7c0c4bfac519fb62597ae65d48ed63e9b1366a08a1ac40·...·]-8">)</span><span·class="p">,</span><span·class="w">3101 </span><span·class="p"·data-group-id="3023274654-7">{</span><span·class="p">_</span><span·class="p">,</span><span·class="n">C</span><span·class="p"·data-group-id="3023274654-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:·6f4480ac6bcb0a57a63aa95f8606a783ee7df6891e7f9128045238f438a9d6cf·...·]-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="8842255228-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="8842255228-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="8842255228-10">)</span><span·class="p"·data-group-id="8842255228-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="3023274654-9">(</span><span·class="nf">term_to_binary</span><span·class="p"·data-group-id="3023274654-10">(</span><span·class="n">C</span><span·class="p"·data-group-id="3023274654-10">)</span><span·class="p"·data-group-id="3023274654-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="8842255228-11">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">repair_continuation</span><span·class="p"·data-group-id="8842255228-12">(</span><span·class="n">MaybeBroken</span><span·class="p">,</span><span·class="n">MS</span><s[·...·truncated·by·diffoscope;·len:·93,·SHA:·f77bca53b41ee3f27fa9168fd1c6770f92973db5ba3e00c442ef4de39702d6d1·...·]-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="3023274654-11">(</span><span·class="nc">ets</span><span·class="p">:</span><span·class="nf">repair_continuation</span><span·class="p"·data-group-id="3023274654-12">(</span><span·class="n">MaybeBroken</span><span·class="p">,</span><span·class="n">MS</span><s[·...·truncated·by·diffoscope;·len:·93,·SHA:·0df2217afcba62029772e4debeec3f5628018ca0cf83257888e41e449aa4e9f7·...·]-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.1/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="3884539670-1">(</span><span·class="n">Log</span><span·class="p"·data-group-id="3884539670-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w"> 
199 ····</span><span·class="p"·data-group-id="3884539670-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="3884539670-2">}</span><span·class="w">·</span><span·class="o">=[·...·truncated·by·diffoscope;·len:·767,·SHA:·e910e0b96294850958d9c0c846143bd394ca97f1d937b08ad17151be0b1f680d·...·]</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="5038557481-1">(</span><span·class="n">Log</span><span·class="p"·data-group-id="5038557481-1">)</span[·...·truncated·by·diffoscope;·len:·46,·SHA:·1097a0bea68d65a431edcb4038943364caa12d307d0cd39d47cedc89a660f4e0·...·]</span><span·class="w">
 199 ····</span><span·class="p"·data-group-id="5038557481-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="5038557481-2">}</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">open</span><span·class="p"·data-group-id="5038557481-3">(</span><span·class="p"·data-group-id="5038557481-4">[</span><span·class="p"·data-group-id="5038557481-5">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="n">Log</span><span·class="p"·data-group-id="5038557481-5">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5038557481-6">{</span><span·class="ss">mode</span><span·class="p">,</span><span·class="ss">read_only</span><span·class="p"·data-group-id="5038557481-6">}</span><span·class="p"·data-group-id="5038557481-4">]</span><span·class="p"·data-group-id="5038557481-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="3884539670-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="3884539670-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="5038557481-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="5038557481-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="3884539670-8">(</span><span·class="p"·data-group-id="3884539670-9">[</span><span·class="p"·data-group-id="3884539670-9">]</span><span·class="p"·data-group-id="3884539670-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="5038557481-8">(</span><span·class="p"·data-group-id="5038557481-9">[</span><span·class="p"·data-group-id="5038557481-9">]</span><span·class="p"·data-group-id="5038557481-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="3884539670-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="3884539670-11">{</span><span·class="ss">format</s[·...·truncated·by·diffoscope;·len:·151,·SHA:·7415bfcff0b2cf89b3fb607a7d8c627ef9e9146c7131a0befbf59fa613fc1341·...·]-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="5038557481-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="5038557481-11">{</span><span·class="ss">format</s[·...·truncated·by·diffoscope;·len:·151,·SHA:·5c4893184ddb83270c208d861cf831865ca51fd49634e1531e1578e3c2065fbd·...·]-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="3884539670-12">(</span><span·class="n">Log</span><span·class="p"·data-group-id="3884539670-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="5038557481-12">(</span><span·class="n">Log</span><span·class="p"·data-group-id="5038557481-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="3884539670-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="3884539670-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="5038557481-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="5038557481-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="3884539670-14">(</span><span·class="ss">close</span><span·class="p"·data-group-id="3884539670-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="5038557481-14">(</span><span·class="ss">close</span><span·class="p"·data-group-id="5038557481-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="3884539670-15">(</span><span·class="ss">read</span><span·class="p"·data-group-id="3884539670-15">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">208 ·······</span><span·class="p"·data-group-id="5038557481-15">(</span><span·class="ss">read</span><span·class="p"·data-group-id="5038557481-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="3884539670-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="3884539670-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="5038557481-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="5038557481-16">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
210 ················</span><span·class="p"·data-group-id="3884539670-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="3884539670-17">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">210 ················</span><span·class="p"·data-group-id="5038557481-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="5038557481-17">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
211 ····················</span><span·class="p"·data-group-id="3884539670-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="3884539670-18">}</span><span·class="p">;</span><span·class="w">211 ····················</span><span·class="p"·data-group-id="5038557481-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="5038557481-18">}</span><span·class="p">;</span><span·class="w">
212 ················</span><span·class="p"·data-group-id="3884539670-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="3884539670-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 ················</span><span·class="p"·data-group-id="5038557481-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="5038557481-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
213 ····················</span><span·class="p"·data-group-id="3884539670-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="3884539670-21">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·123,·SHA:·b5a2ad37a546b1a800db3363c43b95e747758a0e0c5cb89679f58219c1c5e4a0·...·]-20">}</span><span·class="p">;</span><span·class="w">213 ····················</span><span·class="p"·data-group-id="5038557481-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="5038557481-21">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·123,·SHA:·661a8b64440b2c3a5f47c3c5d8e552d14799117949bdb21b1153ab407eba6308·...·]-20">}</span><span·class="p">;</span><span·class="w">
214 ················</span><span·class="p"·data-group-id="3884539670-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:·38a98ce86fb25e5af205940df6a6db3808aa5799b91481fd6e70f8eb85715f4d·...·]-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 ················</span><span·class="p"·data-group-id="5038557481-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:·0f591343fac1b9af8cc0b265bc6b953c19a251c2ef80b4f4c2c6d21004f1dec9·...·]-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ····················</span><span·class="p"·data-group-id="3884539670-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="3884539670-24">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·123,·SHA:·f0681e5bbdce597a2a3367cb9a18bb41b1fa091cd7b89c5201255085796c94e8·...·]-23">}</span><span·class="p">;</span><span·class="w">215 ····················</span><span·class="p"·data-group-id="5038557481-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="5038557481-24">(</span><span·class="n">Log</span><span·class="p">,</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·123,·SHA:·5ac1b138e5e4b8573f1bc6cc5ab56228f487317e4565148715ccb97364761c12·...·]-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="3884539670-25">(</span><span·class="n">L</span><span·class="p"·data-group-id="3884539670-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="5038557481-25">(</span><span·class="n">L</span><span·class="p"·data-group-id="5038557481-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="3884539670-26">(</span><span·class="ss">close</span><span·class="p"·data-group-id="3884539670-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="5038557481-26">(</span><span·class="ss">close</span><span·class="p"·data-group-id="5038557481-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="3884539670-27">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="3884539670-28">(</span><span·class="n">L</span><span·class="p"·data-group-id="3884539670-28">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·109f2c4b8d45ffbadb6e9be0b130ccf262743199d25544c38e9ab05578815954·...·]-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="5038557481-27">(</span><span·class="nc">lists</span><span·class="p">:</span><span·class="nf">reverse</span><span·class="p"·data-group-id="5038557481-28">(</span><span·class="n">L</span><span·class="p"·data-group-id="5038557481-28">)</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·6754968d44ade8498403fa69287a261a15605d0d4772eba7769658410cb2b34b·...·]-27">)</span><span·class="p">;</span><span·class="w">
223 ·······</span><span·class="p"·data-group-id="3884539670-29">(</span><span·class="n">Terms</span><span·class="p"·data-group-id="3884539670-29">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">223 ·······</span><span·class="p"·data-group-id="5038557481-29">(</span><span·class="n">Terms</span><span·class="p"·data-group-id="5038557481-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="3884539670-30">(</span><span·class="p"·data-group-id="3884539670-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="3884539670-31">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·1b795fb7cb55b6425dae60a886e38fd693de55dd44c3959798d415ae7309d68a·...·]-30">)</span><span·class="w">224 ············</span><span·class="nf">output</span><span·class="p"·data-group-id="5038557481-30">(</span><span·class="p"·data-group-id="5038557481-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="5038557481-31">]</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·4294ae4ebe816410f816abc5f11fb6dac00b464a0739a8bdf77bbfe9d15254ea·...·]-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.3/doc/html/file.html#t:posix/0"><code·class="inline">file:posix()</code></a>,·see·<a·href="../../../../lib/kernel-10.2.3/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.3/doc/html/file.html#t:posix/0"><code·class="inline">file:posix()</code></a>,·see·<a·href="../../../../lib/kernel-10.2.3/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.1/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="9668299101-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="9668299101-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·168,·SHA:·0e41a3fdcd88c590a670f856e2beb209d6776e0a0b9d6b3747b34c2795f8d319·...·]-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="6920820449-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="6920820449-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·168,·SHA:·ef28011e6e3c91f629a647f687793256b6be756474029890f15739f2f9798c6b·...·]-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="9668299101-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="9668299101-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="6920820449-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="6920820449-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="9668299101-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="9668299101-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="6920820449-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="6920820449-4">)</span><span·class="p">.</span><span·class="w">
996 </span><span·class="p"·data-group-id="9668299101-5">[</span><span·class="p"·data-group-id="9668299101-5">]</span><span·class="gp·unselectable">996 </span><span·class="p"·data-group-id="6920820449-5">[</span><span·class="p"·data-group-id="6920820449-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="9668299101-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="9668299101-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="6920820449-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="6920820449-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="9668299101-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="9668299101-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="6920820449-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="6920820449-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.1/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.3/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.3/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.3/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.3/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="2008512619-1">(</span><span·class="p"·data-group-id="2008512619-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="8396523184-1">(</span><span·class="p"·data-group-id="8396523184-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="2008512619-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="2008512619-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="8396523184-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="8396523184-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="2008512619-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="2008512619-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="8396523184-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="8396523184-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="2008512619-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="2008512619-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="8396523184-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="8396523184-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="8020743768-1">(</span><span·class="p"·data-group-id="8020743768-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="5865535215-1">(</span><span·class="p"·data-group-id="5865535215-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="8020743768-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="8020743768-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="5865535215-2">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="5865535215-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="8020743768-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="8020743768-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="5865535215-3">(</span><span·class="s">&quot;../x&quot;</span><span·class="p"·data-group-id="5865535215-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="8020743768-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="8020743768-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="5865535215-4">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="5865535215-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.3/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.3/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="1185480188-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="1185480188-2">#{</span><[·...·truncated·by·diffoscope;·len:·176,·SHA:·85d59b7e78042ea8ebe24a0ed4143136c66d70d1308d0dafbc13aa6a967bca5c·...·]-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="9043351173-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="9043351173-2">#{</span><[·...·truncated·by·diffoscope;·len:·176,·SHA:·bbedc0f137e92247898082ab511f10ff9833bb509a9472e8d463682a8a7c7e1a·...·]-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="1628174680-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="1628174680-2">#{</span><[·...·truncated·by·diffoscope;·len:·177,·SHA:·81d5a3bac7f360d27ec8548004fa940df544f7e6ecae152b98748aae293707ec·...·]-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="2809802807-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="2809802807-2">#{</span><[·...·truncated·by·diffoscope;·len:·177,·SHA:·35712af79fd25cc13230882da2683dab41723e8c63b5b2efb7954e5b23183be9·...·]-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="7896187191-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="7896187191-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="4091789821-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="4091789821-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="7896187191-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="7896187191-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="4091789821-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="4091789821-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="7896187191-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="7896187191-4">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·183,·SHA:·3049e9e051b49538afb5e3b545ee95ba9c88048f38839cc6c4c3868a124cc48b·...·]1-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="4091789821-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="4091789821-4">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·183,·SHA:·fc82f2bbe9b364d8a00502cdbd58032867b2b7208ccfbe93d3805e1b176ac90c·...·]1-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="7896187191-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="7896187191-6">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·181,·SHA:·1afb94a9ba1cff53346a06723970cb7fd749a3a745525e3ebd76aa7619ca6ac8·...·]1-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="4091789821-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="4091789821-6">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·181,·SHA:·325a4907de280d9e354bced8668b75c8e46a8872283f1e3fb0de46f1a650536b·...·]1-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="7896187191-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="7896187191-8">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·304,·SHA:·4ee01448ee879d0b401dbb3284d25688ef151291a5f701daf5e216757be4d933·...·]1-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="4091789821-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="4091789821-8">#{</span><span·cla[·...·truncated·by·diffoscope;·len:·304,·SHA:·a3b6d2a05069be9ea6a7a18b556e17d93d59147e8abf25716624f37bd50e6e34·...·]1-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="3348417991-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="3348417991-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·d1720d0f504b0cd378a0562d4e1e1f213f753142d92941e6f7f683270890f327·...·]-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="4347087585-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="4347087585-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·a475c972dd221ad07c06d8fe1b52a22a144025ed593da4b3a071b4e490029dbb·...·]-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="0579620279-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="0579620279-2">#{</span>[·...·truncated·by·diffoscope;·len:·178,·SHA:·e783c24c24f923072a2f001ee95b5bc685913f531a15471e278b4d1519778cb0·...·]-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="3763511572-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="3763511572-2">#{</span>[·...·truncated·by·diffoscope;·len:·178,·SHA:·a3fc7d8b75a411fe1bddfe01481a726cb20ae04ae75320bb55fdf5a00ff1f1d3·...·]-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="6224997133-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="6224997133-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="3790659228-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="3790659228-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="6224997133-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="6224997133-3">#{</span><span·cl[·...·truncated·by·diffoscope;·len:·330,·SHA:·848dcacb8db73783cf11707fa34bc963d6553276cc31b438c57346e0bf464636·...·]-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="3790659228-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="3790659228-3">#{</span><span·cl[·...·truncated·by·diffoscope;·len:·330,·SHA:·ebcf3a3519f2eaedf6d46f747ae05abaf65105bafeb556f0245c1a7205ebe930·...·]-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="4572959965-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="4572959965-2">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·24f12e70f7a259604f9a3d7190824d19486a5f59c68b1be2940b915f721af3e3·...·]-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="3330350581-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="3330350581-2">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·5e86dc216dceb7c26b29ad6deeab097e8f8e179624bcd723927cc34a3aa724df·...·]-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="6809041660-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="6809041660-2">#{</span><s[·...·truncated·by·diffoscope;·len:·176,·SHA:·a11cf4fe5479f534b7eb19f677bccb8c7400913f885372d2c17c91081a23de76·...·]-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="8571788299-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="8571788299-2">#{</span><s[·...·truncated·by·diffoscope;·len:·176,·SHA:·8fa74655b8022e51d0b53e9f47df1616367757a5dbd337ccde958a3c29701161·...·]-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="7382710150-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="7382710150-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="2062989795-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="2062989795-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="7382710150-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="7382710150-3">#{</span><span·class="ss">author</span><spa[·...·truncated·by·diffoscope;·len:·280,·SHA:·6eb4bd78bb43ddb9c2442248d953f1bdb213502fe1eca1a4187716ccd6201b2b·...·]-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="2062989795-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="2062989795-3">#{</span><span·class="ss">author</span><spa[·...·truncated·by·diffoscope;·len:·280,·SHA:·99eaab058f5e41e7093e0d6b34debbc6ead5c1ed44d5943353a353482f9d086b·...·]-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="9437838332-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="9437838332-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·174,·SHA:·aa1d9062391b2e0503a050fc3c575187c5f618c0a840018e27c31722abfe70bb·...·]-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="5398516883-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="5398516883-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·174,·SHA:·27e78719d166bc40207de475445bf9ec423f8184ddda18d50958fda59205cfc7·...·]-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="6055501400-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="6055501400-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·4c91c4ede08dec8362d05e7fd9508bea66e651941c089050288fa8df96bc22a2·...·]-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="7352434473-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="7352434473-2">#{</span><sp[·...·truncated·by·diffoscope;·len:·175,·SHA:·4f22c1af90b1ab175d183ea8cd660ada5eb1cd3dcadc7140b29af116916e6c9b·...·]-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="0622891660-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="0622891660-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="5829920254-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="5829920254-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="0622891660-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="0622891660-3">#{</span><span·class="ss">author</span><span[·...·truncated·by·diffoscope;·len:·279,·SHA:·922d5acefe3a929fae039e6118a996b7e2c27ee1220affecc6beb61d58fd7e83·...·]-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="5829920254-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="5829920254-3">#{</span><span·class="ss">author</span><span[·...·truncated·by·diffoscope;·len:·279,·SHA:·9faf31b3ec9e109e1451d95a4b7c0937c84f71f7e9fdc0af6982336c56a48c47·...·]-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="0351169977-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="0351169977-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·e14fb07f45ce175ed3797b4f72d57d12698ad58a15ff248c3726adf685e91a1e·...·]-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="6820718182-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="6820718182-2">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·5d6196846449bfb3353ecba0db19d5f7c7056dd0ac870a3431ba014bac43c18f·...·]-1">)</span><span·class="p">.</span><span·class="w">
691 </span><span·class="p"·data-group-id="0351169977-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="6820718182-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="0351169977-3">]</span><span·class="gp·unselectable">692 ·</span><span·class="s">&quot;/usr/share/my_application&quot;</span><span·class="p"·data-group-id="6820718182-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="0351169977-4">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="0351169977-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="6820718182-4">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="6820718182-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="0351169977-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="0351169977-6">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·46859d017fabeddee4592c1ef7b8088e8baae178387c79c293a29e7680f17364·...·]-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="6820718182-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="6820718182-6">#{</span>[·...·truncated·by·diffoscope;·len:·177,·SHA:·69be88bbc02a3218b3a7b6bc7753538f49bdff92e6add4693cf46be8a6ed3533·...·]-5">)</span><span·class="p">.</span><span·class="w">
696 </span><span·class="p"·data-group-id="0351169977-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="6820718182-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="0351169977-7">]</span><span·class="gp·unselectable">698 ·</span><span·class="s">&quot;/etc/xdg/my_application&quot;</span><span·class="p"·data-group-id="6820718182-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="0351169977-8">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="0351169977-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="6820718182-8">(</span><span·class="s">&quot;XDG_CONFIG_DIRS&quot;</span><span·class="p"·data-group-id="6820718182-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="0351169977-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="0351169977-10">#{</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·c86103b22e7c7cf7c310bf6cd4b9d6eea855775f758f808b7d4c45dd199ace83·...·]-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="6820718182-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="6820718182-10">#{</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·f37eccccdc1c4acc118352c30b276aae2135df87f14112292ef210cef03081b4·...·]-9">)</span><span·class="p">.</span><span·class="w">
702 </span><span·class="p"·data-group-id="0351169977-11">[</span><span·class="s">&quot;/etc/xdg/my_application&quot;</span><span·class="p"·data-group-id="0351169977-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:·699497530bbfe5ea5c07565f136f74a6719544a69841ece434a1ea9fadb08291·...·]-1">)</span><span·class="p">.</span><span·class="w">702 </span><span·class="p"·data-group-id="6820718182-11">[</span><span·class="s">&quot;/etc/xdg/my_application&quot;</span><span·class="p"·data-group-id="6820718182-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:·093f5dcc38fdd98ed1a2881128e328c4d514fad4ff64a42dab6c1794965eb0c5·...·]-1">)</span><span·class="p">.</span><span·class="w">
703 </span><span·class="p"·data-group-id="1090095968-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="1090095968-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:·c9c44fb92b117d1d6c77429d0379e419d6ffb6277eec99d7a858336fd6efe0e4·...·]-1">)</span><span·class="p">.</span><span·class="w">703 </span><span·class="p"·data-group-id="2994911756-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="2994911756-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:·6b8080cb1d1aa0fc242d403bf00b8bfd30376029634bb7438a54ff56d5d81b72·...·]-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="2328736175-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="2328736175-3">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·717ccb959ef77627cd3fefe7fa6e79f4fc587ea4085fc5722f33e3d69e639f49·...·]-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="8673074853-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="8673074853-3">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·25ea7fad80eb6c969122d9bd994f1a93adcfa6e971aed93fc116854054f56c44·...·]-2">)</span><span·class="p">.</span><span·class="w">
706 </span><span·class="p"·data-group-id="2328736175-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="8673074853-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="2328736175-4">]</span><span·class="gp·unselectable">709 ·</span><span·class="s">&quot;/usr/share/my_application&quot;</span><span·class="p"·data-group-id="8673074853-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="2328736175-5">(</span><span·class="s">&quot;XDG_DATA_DIRS&quot;</span><span·class="p"·data-group-id="2328736175-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="8673074853-5">(</span><span·class="s">&quot;XDG_DATA_DIRS&quot;</span><span·class="p"·data-group-id="8673074853-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="2328736175-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="2328736175-7">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·c5b00dd587b2a3fbe8b30263f5dc37d8757f7b6be456df1246f63eea81c215b6·...·]-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="8673074853-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="8673074853-7">#{</span><s[·...·truncated·by·diffoscope;·len:·175,·SHA:·faad23e08694cc25dd9c3686b326dc194537f4b55e552e6b1ed522cddd1a9ad5·...·]-6">)</span><span·class="p">.</span><span·class="w">
713 </span><span·class="p"·data-group-id="2328736175-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="8673074853-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="2328736175-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:·500ef356fe967af7185d20d22a820c39a9671bdf5ee3502d76968219bd9c98c4·...·]-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="8673074853-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:·cf057c60d31413f77f5ea2e5913e6bf44c1503e2899c3c25a13b0bba69aabca4·...·]-1">)</span><span·class="p">.</span><span·class="w">
715 </span><span·class="p"·data-group-id="9189840866-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="9189840866-3">]</span></code></pre></li></ul>715 </span><span·class="p"·data-group-id="0256369063-3">[</span><span·class="s">&quot;/Library/Application·Support/my_application&quot;</span><span·class="p"·data-group-id="0256369063-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.3/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.3/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.3/doc/html/file.html#t:filename_all/0">file:filename_all</a>()·when·Filename·::·<a·href="../../../../lib/kernel-10.2.3/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="0016672630-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="0016672630-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="1061925119-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="1061925119-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="0016672630-2">(</span><span·class="s">&quot;/usr/foo&quot;</span><span·class="p"·data-group-id="0016672630-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="1061925119-2">(</span><span·class="s">&quot;/usr/foo&quot;</span><span·class="p"·data-group-id="1061925119-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="0016672630-3">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="0016672630-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="1061925119-3">(</span><span·class="s">&quot;/&quot;</span><span·class="p"·data-group-id="1061925119-3">)</span><span·class="p">.</span><span·class="w">
746 </span><span·class="p"·data-group-id="0016672630-4">[</span><span·class="p"·data-group-id="0016672630-4">]</span></code></pre>746 </span><span·class="p"·data-group-id="1061925119-4">[</span><span·class="p"·data-group-id="1061925119-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.3/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.3/doc/html/file.html#t:filename_all/0">file:filename_all</a>()
772 ··················when·Filename·::·<a·href="../../../../lib/kernel-10.2.3/doc/html/file.html#t:name_all/0">file:name_all</a>(),·Ext·::·<a·href="../../../../lib/kernel-10.2.3/doc/html/file.html#t:name_all/0">file:name_all</a>().</pre>772 ··················when·Filename·::·<a·href="../../../../lib/kernel-10.2.3/doc/html/file.html#t:name_all/0">file:name_all</a>(),·Ext·::·<a·href="../../../../lib/kernel-10.2.3/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="6407929454-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="6407929454-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="3361466562-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="3361466562-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="6407929454-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="6407929454-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="3361466562-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="3361466562-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.1/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.3/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.3/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="1639662876-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="1639662876-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="7097523908-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="7097523908-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="1639662876-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="7097523908-2">(</span><span·class="w">
1276 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="1639662876-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="1639662876-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="7097523908-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="7097523908-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="1639662876-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="1639662876-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="7097523908-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="7097523908-4">)</span><span·class="p">;</span><span·class="w">
1278 ·······</span><span·class="p"·data-group-id="1639662876-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="1639662876-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:·cb13029c0276f3f9f574c1b1f64fc54148782ee825416939230a11dfdef2303e·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1278 ·······</span><span·class="p"·data-group-id="7097523908-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="7097523908-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:·302c81aa7fcd947b5947c9313a85e2c8eded5651b695775fbf8443115c0ba303·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1279 ············</span><span·class="p"·data-group-id="1639662876-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="1639662876-7">}</span><span·class="p">;</span><span·class="w">1279 ············</span><span·class="p"·data-group-id="7097523908-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="7097523908-7">}</span><span·class="p">;</span><span·class="w">
1280 ·······</span><span·class="p"·data-group-id="1639662876-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="1639662876-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1280 ·······</span><span·class="p"·data-group-id="7097523908-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="7097523908-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="1639662876-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="7097523908-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.1/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="9096823226-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="9096823226-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="0160457650-1">(</span><span·class="ss">code_lock</span><span·class="p"·data-group-id="0160457650-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="9096823226-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="9096823226-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="0160457650-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="0160457650-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="9096823226-3">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="9096823226-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="0160457650-3">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="0160457650-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="9096823226-4">(</span><span·class="ss">gen_fsm</span><span·class="p"·data-group-id="9096823226-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="0160457650-4">(</span><span·class="ss">gen_fsm</span><span·class="p"·data-group-id="0160457650-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="9096823226-5">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="9096823226-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="0160457650-5">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="0160457650-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="9096823226-6">(</span><span·class="p"·data-group-id="9096823226-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:·930f9f5a59129efc001af86cfa95d2f7a5864fed87dced3e76fd0c4597b0695f·...·]-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="0160457650-6">(</span><span·class="p"·data-group-id="0160457650-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:·e7ec18450e9848139dd9348d8a7ba745d396046b1db92cb9c96862da65210fd0·...·]-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="9096823226-8">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="9096823226-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="0160457650-8">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="0160457650-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="9096823226-9">(</span><span·class="p"·data-group-id="9096823226-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="0160457650-9">(</span><span·class="p"·data-group-id="0160457650-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="9096823226-10">]</span><span·class="p"·data-group-id="9096823226-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="0160457650-10">]</span><span·class="p"·data-group-id="0160457650-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="9096823226-11">(</span><span·class="p"·data-group-id="9096823226-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="0160457650-11">(</span><span·class="p"·data-group-id="0160457650-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="9096823226-12">]</span><span·class="p"·data-group-id="9096823226-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="0160457650-12">]</span><span·class="p"·data-group-id="0160457650-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="9096823226-13">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="9096823226-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="0160457650-13">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="0160457650-13">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="9096823226-14">(</span><span·class="n">Code</span><span·class="p"·data-group-id="9096823226-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="0160457650-14">(</span><span·class="n">Code</span><span·class="p"·data-group-id="0160457650-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="9096823226-15">(</span><span·class="p"·data-group-id="9096823226-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="9096823226-16">}</sp[·...·truncated·by·diffoscope;·len:·376,·SHA:·2ff6088a0fdc1a088ecc5698a945ee709fa78a9cec9e69b0a98851580092c87e·...·]-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="0160457650-15">(</span><span·class="p"·data-group-id="0160457650-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="0160457650-16">}</sp[·...·truncated·by·diffoscope;·len:·376,·SHA:·e2ff425c202246bea51b3af4df8382acd4cf151f0c8702356628d7d847adbf7a·...·]-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="9096823226-18">(</span><span·class="n">Code</span><span·class="p"·data-group-id="9096823226-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="0160457650-18">(</span><span·class="n">Code</span><span·class="p"·data-group-id="0160457650-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="9096823226-19">(</span><span·class="p"·data-group-id="9096823226-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="9096823226-20">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·6efbab2343602b3e813bec689ece36ce71f0953ed3b9c3a07e566bda6dc760d3·...·]-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="0160457650-19">(</span><span·class="p"·data-group-id="0160457650-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="0160457650-20">}</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·352,·SHA:·d6238fcdfee2abdcaa1b007bf63d63f767a7c2bc7a3a8af7120cd3eff317c9c6·...·]-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="9096823226-22">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="9096823226-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="0160457650-22">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="0160457650-22">)</span><span·class="p">.</span><span·class="w">
170 </span><span·class="nf">button</span><span·class="p"·data-group-id="9096823226-23">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="9096823226-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="0160457650-23">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="0160457650-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="9096823226-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="9096823226-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·121,·SHA:·43299e70408cd369d5070cac43e2fd02cb4dce9b2dd60de708b430ee7cabf0eb·...·]-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="0160457650-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="0160457650-25">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·121,·SHA:·55ae5dfc67327668b2a2fc7d1b985eac8a2d006752d08e1664eebdcb51f604d4·...·]-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="9096823226-26">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="9096823226-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="0160457650-26">(</span><span·class="n">Digit</span><span·class="p"·data-group-id="0160457650-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="9096823226-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="9096823226-28">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Digit</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·328e2007840334149a01638e1398c96d8541110551a3fa41d718e8f891f5e39a·...·]-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="0160457650-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="0160457650-28">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="n">Digit</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·069271d547881716f46a11f3f0f2ed838e18082261689197729b860fd945984f·...·]-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="9096823226-29">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="9096823226-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="0160457650-29">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="0160457650-29">)</span><span·class="p">.</span><span·class="w">
179 </span><span·class="nf">stop</span><span·class="p"·data-group-id="9096823226-30">(</span><span·class="p"·data-group-id="9096823226-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="0160457650-30">(</span><span·class="p"·data-group-id="0160457650-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="9096823226-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="9096823226-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="0160457650-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="0160457650-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="9096823226-32">(</span><span·class="p"·data-group-id="9096823226-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="0160457650-32">(</span><span·class="p"·data-group-id="0160457650-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="9096823226-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="9096823226-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="0160457650-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="0160457650-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="9096823226-34">(</span><span·class="n">Code</span><span·class="p"·data-group-id="9096823226-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="0160457650-34">(</span><span·class="n">Code</span><span·class="p"·data-group-id="0160457650-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="9096823226-35">(</span><span·class="p"·data-group-id="9096823226-35">)</span><span·class="p">,</span><span·class="w">188 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="0160457650-35">(</span><span·class="p"·data-group-id="0160457650-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="9096823226-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:·ab9d114b38ee661c17c8498764e286ef02f23dd6e79b1065cf8d90e313ce870f·...·]-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="0160457650-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:·4bde5a3d0bba706417c2a21327bc1250aecfa1c19dfd65f4f4d2d68da4906608·...·]-36">}</span><span·class="p">,</span><span·class="w">
190 ····</span><span·class="p"·data-group-id="9096823226-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="9096823226-37">}</span><span·class="p">.</span><span·class="w">190 ····</span><span·class="p"·data-group-id="0160457650-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="0160457650-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="9096823226-38">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="9096823226-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="0160457650-38">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="0160457650-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="9096823226-39">(</span><span·class="p"·data-group-id="9096823226-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="0160457650-39">(</span><span·class="p"·data-group-id="0160457650-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="9096823226-40">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="9096823226-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="0160457650-40">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="0160457650-40">)</span><span·class="p">.</span><span·class="w">
202 </span><span·class="nf">locked</span><span·class="p"·data-group-id="9096823226-41">(</span><span·class="p"·data-group-id="9096823226-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="9096823226-42">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·98,·SHA:·2db95ccf5468fa73a734052bdc5dc37b4f1b9657505d2003feac0ef99f253e5f·...·]-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="0160457650-41">(</span><span·class="p"·data-group-id="0160457650-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="0160457650-42">}</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·98,·SHA:·8f8326c4bfbd965275c1c4afeae7b6661ef2218339c01e88ee645612540fa79d·...·]-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="9096823226-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="9096823226-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="0160457650-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="0160457650-43">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
204 ····</span><span·class="p"·data-group-id="9096823226-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:·1a05d22e3bd440a559b9a7bc5f4cf1845d51a116a4de35044587be4a0de1306b·...·]-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">204 ····</span><span·class="p"·data-group-id="0160457650-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:·24a5dfc558b4b730941b8b8ccc0f9a0765f7b8caaf8f0037ac6353f016724d51·...·]-44">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
205 ········</span><span·class="p"·data-group-id="9096823226-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:·277563dc48028bf166867336588a79ff3ae47bd0083934cb7766aa5b4af6c37f·...·]-45">}</span><span·class="p">;</span><span·class="w">205 ········</span><span·class="p"·data-group-id="0160457650-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:·f67741118c7ca8dacb40da84b4801f6dff9ae9f438265b11629d1aedec4fc0ee·...·]-45">}</span><span·class="p">;</span><span·class="w">
206 ····</span><span·class="p"·data-group-id="9096823226-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="9096823226-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">206 ····</span><span·class="p"·data-group-id="0160457650-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="0160457650-46">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
207 ········</span><span·class="p"·data-group-id="9096823226-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="9096823226-47">}</span><span·class="w">207 ········</span><span·class="p"·data-group-id="0160457650-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="0160457650-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="9096823226-48">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9096823226-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:·d1c1b460df0dfd4fe957e9ff34085c0ba9ac79ff76eec747e4516d06cf405202·...·]-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="0160457650-48">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0160457650-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:·c0cd44259955a7a6b454c0fd130bf59e43d604b5eefda41cc743e28986b9627e·...·]-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="9096823226-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="9096823226-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="0160457650-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="0160457650-50">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
212 ····</span><span·class="p"·data-group-id="9096823226-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:·1a05d22e3bd440a559b9a7bc5f4cf1845d51a116a4de35044587be4a0de1306b·...·]-51">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">212 ····</span><span·class="p"·data-group-id="0160457650-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:·24a5dfc558b4b730941b8b8ccc0f9a0765f7b8caaf8f0037ac6353f016724d51·...·]-51">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
213 ········</span><span·class="p"·data-group-id="9096823226-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:·277563dc48028bf166867336588a79ff3ae47bd0083934cb7766aa5b4af6c37f·...·]-52">}</span><span·class="p">;</span><span·class="w">213 ········</span><span·class="p"·data-group-id="0160457650-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:·f67741118c7ca8dacb40da84b4801f6dff9ae9f438265b11629d1aedec4fc0ee·...·]-52">}</span><span·class="p">;</span><span·class="w">
214 ····</span><span·class="p"·data-group-id="9096823226-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="9096823226-53">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">214 ····</span><span·class="p"·data-group-id="0160457650-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="0160457650-53">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
215 ········</span><span·class="p"·data-group-id="9096823226-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="9096823226-54">}</span><span·class="w">215 ········</span><span·class="p"·data-group-id="0160457650-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="0160457650-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="9096823226-55">(</span><span·class="p"·data-group-id="9096823226-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="9096823226-56">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·1972a6d2f9d816b1e8f71b8cacde70c4437597a8352e820022b1b1c13b8951ab·...·]-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="0160457650-55">(</span><span·class="p"·data-group-id="0160457650-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="0160457650-56">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·cd28efe26f623b18448cff6afe40bca6c2cca675b60d90f43444662f46ecdce7·...·]-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="9096823226-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="9096823226-57">)</span><span·class="p">;</span><span·class="w">218 ····</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="0160457650-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="0160457650-57">)</span><span·class="p">;</span><span·class="w">
219 </span><span·class="nf">locked</span><span·class="p"·data-group-id="9096823226-58">(</span><span·class="p"·data-group-id="9096823226-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="9096823226-59">}</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·173,·SHA:·6ea79c90f6bc73d478f1c741c54f4f3246de13f16f8df230d63ea23eecc860bc·...·]-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="0160457650-58">(</span><span·class="p"·data-group-id="0160457650-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="0160457650-59">}</span><span·class="p">,</span[·...·truncated·by·diffoscope;·len:·173,·SHA:·fdf34b3a494c82754629596a823435d111e49dfb64566d77217072c24459d98f·...·]-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="9096823226-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="9096823226-60">)</span><span·class="p">.</span><span·class="w">220 ····</span><span·class="nf">handle_info</span><span·class="p"·data-group-id="0160457650-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="0160457650-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="9096823226-61">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="9096823226-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="0160457650-61">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="0160457650-61">)</span><span·class="p">.</span><span·class="w">
228 </span><span·class="nf">open</span><span·class="p"·data-group-id="9096823226-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="9096823226-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="0160457650-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="0160457650-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="9096823226-63">(</span><span·class="p"·data-group-id="9096823226-63">)</span><span·class="p">,</span><span·class="w">229 ·····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="0160457650-63">(</span><span·class="p"·data-group-id="0160457650-63">)</span><span·class="p">,</span><span·class="w">
230 ····</span><span·class="p"·data-group-id="9096823226-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="9096823226-64">}</span><span·class="p">;</span><span·class="w">230 ····</span><span·class="p"·data-group-id="0160457650-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="0160457650-64">}</span><span·class="p">;</span><span·class="w">
231 </span><span·class="nf">open</span><span·class="p"·data-group-id="9096823226-65">(</span><span·class="p"·data-group-id="9096823226-66">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="9096823226-66">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·69,·SHA:·128a0ba94d5af428bdfd64137325bdbb4a689d4e26fd25233a4df4c469609bb1·...·]-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="0160457650-65">(</span><span·class="p"·data-group-id="0160457650-66">{</span><span·class="ss">button</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="0160457650-66">}</span><span·class="p">,</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·69,·SHA:·449fed33ce86b4dc54a19f4630e61cde95387ca8cd2bbe5f5c2c62ee67e05306·...·]-65">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="p"·data-group-id="9096823226-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="9096823226-67">}</span><span·class="p">.</span><span·class="w">232 ····</span><span·class="p"·data-group-id="0160457650-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="0160457650-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="9096823226-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="9096823226-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="0160457650-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="0160457650-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="9096823226-69">(</span><span·class="p"·data-group-id="9096823226-69">)</span><span·class="p">,</span><span·class="w">235 ····</span><span·class="nf">do_lock</span><span·class="p"·data-group-id="0160457650-69">(</span><span·class="p"·data-group-id="0160457650-69">)</span><span·class="p">,</span><span·class="w">
236 ····</span><span·class="p"·data-group-id="9096823226-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="9096823226-70">}</span><span·class="p">;</span><span·class="w">236 ····</span><span·class="p"·data-group-id="0160457650-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="0160457650-70">}</span><span·class="p">;</span><span·class="w">
237 </span><span·class="nf">open</span><span·class="p"·data-group-id="9096823226-71">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9096823226-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:·76a003d217857bc0bd9a9aa2d388bea518ba303e469a83b98230064911681538·...·]-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="0160457650-71">(</span><span·class="ss">cast</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0160457650-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:·69960316edc30f6382648b5d225df951e5e51f1ab500f48f3d6e3ec04a41ec01·...·]-71">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
238 ····</span><span·class="p"·data-group-id="9096823226-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="9096823226-73">}</span><span·class="p">;</span><span·class="w">238 ····</span><span·class="p"·data-group-id="0160457650-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="0160457650-73">}</span><span·class="p">;</span><span·class="w">
239 </span><span·class="nf">open</span><span·class="p"·data-group-id="9096823226-74">(</span><span·class="p"·data-group-id="9096823226-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="9096823226-75">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·1972a6d2f9d816b1e8f71b8cacde70c4437597a8352e820022b1b1c13b8951ab·...·]-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="0160457650-74">(</span><span·class="p"·data-group-id="0160457650-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="0160457650-75">}</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·168,·SHA:·cd28efe26f623b18448cff6afe40bca6c2cca675b60d90f43444662f46ecdce7·...·]-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="9096823226-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="9096823226-76">)</span><span·class="p">;</span><span·class="w">240 ····</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="0160457650-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="0160457650-76">)</span><span·class="p">;</span><span·class="w">
241 </span><span·class="nf">open</span><span·class="p"·data-group-id="9096823226-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="9096823226-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="0160457650-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="0160457650-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="9096823226-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="9096823226-78">)</span><span·class="p">.</span><span·class="w">242 ····</span><span·class="nf">handle_info</span><span·class="p"·data-group-id="0160457650-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="0160457650-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="9096823226-79">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="9096823226-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="0160457650-79">(</span><span·class="n">BEFORE_REWRITE</span><span·class="p"·data-group-id="0160457650-79">)</span><span·class="p">.</span><span·class="w">
250 </span><span·class="nf">handle_sync_event</span><span·class="p"·data-group-id="9096823226-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:·763281b70d35aec7609d9144df5b48a7b354f03f836ba945ba69c08faf5798cf·...·]-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="0160457650-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:·01a3e11bdf68155bddf0747f123bdaac68472c5d333cc0629d5a4e43d49d89d7·...·]-80">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
251 ····</span><span·class="p"·data-group-id="9096823226-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:·b074de5e2a55fe8163b6d57a45e287adee991cd64b2d54a82100a7652b5163d9·...·]-81">}</span><span·class="p">.</span><span·class="w">251 ····</span><span·class="p"·data-group-id="0160457650-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:·33f1015687a7a47aaf8a0efb491bf21b2fd4f14242a32cf96601dca7b92750c9·...·]-81">}</span><span·class="p">.</span><span·class="w">
  
252 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="9096823226-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="9096823226-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="0160457650-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="0160457650-82">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
253 ····</span><span·class="p"·data-group-id="9096823226-83">{</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9096823226-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:·262e0261073f2191cd0aa4a3e15f639c32128b755b1b4273f386d85d5643715d·...·]-83">}</span><span·class="p">.</span><span·class="w">253 ····</span><span·class="p"·data-group-id="0160457650-83">{</span><span·class="ss">stop</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0160457650-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:·f55265298fa6636147bf1f14c83b7433964d4ecbbaa9bc30ea4af927e38d4f3c·...·]-83">}</span><span·class="p">.</span><span·class="w">
  
254 </span><span·class="nf">handle_info</span><span·class="p"·data-group-id="9096823226-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="9096823226-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="0160457650-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="0160457650-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.1/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.3/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.3/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="5057066996-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="5057066996-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="5881599369-1">(</span><span·class="n">Status</span><span·class="p"·data-group-id="5881599369-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="5057066996-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="5881599369-2">(</span><span·class="w">
1256 ····</span><span·class="nf">fun</span><span·class="p"·data-group-id="5057066996-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="5057066996-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="5881599369-3">(</span><span·class="ss">state</span><span·class="p">,</span><span·class="n">State</span><span·class="p"·data-group-id="5881599369-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="5057066996-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="5057066996-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="5881599369-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="5881599369-4">)</span><span·class="p">;</span><span·class="w">
1258 ·······</span><span·class="p"·data-group-id="5057066996-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="5057066996-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Pass</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·ac54b1c3904c11990cd568638be0f85af0c30c689d01c687366a70ae29df53bc·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1258 ·······</span><span·class="p"·data-group-id="5881599369-5">(</span><span·class="ss">message</span><span·class="p">,</span><span·class="p"·data-group-id="5881599369-6">{</span><span·class="ss">password</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="n">Pass</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·21dd1a26778407ce6d5aa2c5eae22fc87870706054171467aefef3d3da627448·...·]-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1259 ············</span><span·class="p"·data-group-id="5057066996-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="5057066996-7">}</span><span·class="p">;</span><span·class="w">1259 ············</span><span·class="p"·data-group-id="5881599369-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="5881599369-7">}</span><span·class="p">;</span><span·class="w">
1260 ·······</span><span·class="p"·data-group-id="5057066996-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="5057066996-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1260 ·······</span><span·class="p"·data-group-id="5881599369-8">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="5881599369-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="5057066996-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="5881599369-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.1/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="4855372977-1">(</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">change</span><span·class="p"·data-group-id="4855372977-1">)</span><span·class="w">178 </span><span·class="p"·data-group-id="2159454252-1">(</span><span·class="ss">code</span><span·class="w">·</span><span·class="ss">change</span><span·class="p"·data-group-id="2159454252-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="7489321254-1">(</span><span·class="ss">pushbutton</span><span·class="p"·data-group-id="7489321254-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="6808193703-1">(</span><span·class="ss">pushbutton</span><span·class="p"·data-group-id="6808193703-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="7489321254-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="7489321254-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="6808193703-2">(</span><span·class="ss">gen_statem</span><span·class="p"·data-group-id="6808193703-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="7489321254-3">(</span><span·class="p"·data-group-id="7489321254-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><s[·...·truncated·by·diffoscope;·len:·299,·SHA:·016c78103f5adc01664cb55adccb6352366fc024d1132efcfc34571769d95439·...·]-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="6808193703-3">(</span><span·class="p"·data-group-id="6808193703-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><s[·...·truncated·by·diffoscope;·len:·299,·SHA:·8d8f275ffe3d654c8d4eda620afdb6e6e34e04ed2dc7687ca547b019b25438c9·...·]-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="7489321254-5">(</span><span·class="p"·data-group-id="7489321254-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:·314,·SHA:·bf6fb2bd9daab5d624c05d1a1a0727a05d4619c28b6052ef6cdf635c02584edb·...·]-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="6808193703-5">(</span><span·class="p"·data-group-id="6808193703-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:·314,·SHA:·03335ff1659f5e708d610a7b7aa17c6c0d0373a38731bc6a891f36e09173c1dd·...·]-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="7489321254-7">(</span><span·class="p"·data-group-id="7489321254-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·[·...·truncated·by·diffoscope;·len:·88,·SHA:·374fd7124e3c278617fa0d6de1c404a91bd55450b1074d19ff6e4c4798ac3a8e·...·]-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="6808193703-7">(</span><span·class="p"·data-group-id="6808193703-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·[·...·truncated·by·diffoscope;·len:·88,·SHA:·f6708c683b44bdd15d53aa0e4e18cb492c52226a50252b9a7dcc2516753232ef·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
311 </span><span·class="nf">name</span><span·class="p"·data-group-id="7489321254-9">(</span><span·class="p"·data-group-id="7489321254-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="6808193703-9">(</span><span·class="p"·data-group-id="6808193703-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="7489321254-10">(</span><span·class="p"·data-group-id="7489321254-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="6808193703-10">(</span><span·class="p"·data-group-id="6808193703-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="7489321254-11">(</span><span·class="p"·data-group-id="7489321254-12">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="nf">name</span><span·class="p"·data-group-id="7489321254-13">(</span><span·class="p"·data-group-id="7489321254-13[·...·truncated·by·diffoscope;·len:·518,·SHA:·2ec46bc9a804f10927a34f95c0f7235346926ebceb141faa5bc54f0c8e03906d·...·]-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="6808193703-11">(</span><span·class="p"·data-group-id="6808193703-12">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="nf">name</span><span·class="p"·data-group-id="6808193703-13">(</span><span·class="p"·data-group-id="6808193703-13[·...·truncated·by·diffoscope;·len:·518,·SHA:·428004bb6d0357fa3092909ad2dea21e831a5affb7077240ad5ad0e25023b861·...·]-11">)</span><span·class="p">.</span><span·class="w">
316 </span><span·class="nf">push</span><span·class="p"·data-group-id="7489321254-16">(</span><span·class="p"·data-group-id="7489321254-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="6808193703-16">(</span><span·class="p"·data-group-id="6808193703-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="7489321254-17">(</span><span·class="nf">name</span><span·class="p"·data-group-id="7489321254-18">(</span><span·class="p"·data-group-id="7489321254-18">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">push</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·9f75e74e56a1ff82bcbbdbb9074c119594f2ea757a914932fd10d916000893f7·...·]-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="6808193703-17">(</span><span·class="nf">name</span><span·class="p"·data-group-id="6808193703-18">(</span><span·class="p"·data-group-id="6808193703-18">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">push</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·ee14e4bd60aee30525d82e70e910e55d0f10bf04ae83d7d5df5fb1629edf8234·...·]-17">)</span><span·class="p">.</span><span·class="w">
318 </span><span·class="nf">get_count</span><span·class="p"·data-group-id="7489321254-19">(</span><span·class="p"·data-group-id="7489321254-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="6808193703-19">(</span><span·class="p"·data-group-id="6808193703-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="7489321254-20">(</span><span·class="nf">name</span><span·class="p"·data-group-id="7489321254-21">(</span><span·class="p"·data-group-id="7489321254-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_count</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·4f509d62de7370ed84fb07ee52b43829f52236447e266c562e1160f64700987a·...·]-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="6808193703-20">(</span><span·class="nf">name</span><span·class="p"·data-group-id="6808193703-21">(</span><span·class="p"·data-group-id="6808193703-21">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">get_count</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·25,·SHA:·87400d5aea366f3056332613e6e7cff6a22a6637b6da274ea4045b8d3998b7d7·...·]-20">)</span><span·class="p">.</span><span·class="w">
320 </span><span·class="nf">stop</span><span·class="p"·data-group-id="7489321254-22">(</span><span·class="p"·data-group-id="7489321254-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="6808193703-22">(</span><span·class="p"·data-group-id="6808193703-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="7489321254-23">(</span><span·class="nf">name</span><span·class="p"·data-group-id="7489321254-24">(</span><span·class="p"·data-group-id="7489321254-24">)</span><span·class="p"·data-group-id="7489321254-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="6808193703-23">(</span><span·class="nf">name</span><span·class="p"·data-group-id="6808193703-24">(</span><span·class="p"·data-group-id="6808193703-24">)</span><span·class="p"·data-group-id="6808193703-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="7489321254-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·cl[·...·truncated·by·diffoscope;·len:·60,·SHA:·a3004813d04e3a635c95849b876b3a4fabd54646608413b1dc50d9748d82b54a·...·]-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="6808193703-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·cl[·...·truncated·by·diffoscope;·len:·60,·SHA:·564f0f65420ec7aaa729e0f5614f713bda3187ac93ff92f5694e08fabbe95d8e·...·]-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="7489321254-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·cl[·...·truncated·by·diffoscope;·len:·109,·SHA:·f370801a2fd59a6a6f8cd4d9b358630516478f7169c1184dc9fe29eeb16ed8c4·...·]-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="6808193703-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·cl[·...·truncated·by·diffoscope;·len:·109,·SHA:·1e7bd77bd90031f73be8e2033fec2036d998ebdef51d304e74e02e3b496c4be0·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
326 ····</span><span·class="p"·data-group-id="7489321254-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="7489321254-27">}</span><span·class="p">.</span><span·class="w">326 ····</span><span·class="p"·data-group-id="6808193703-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="6808193703-27">}</span><span·class="p">.</span><span·class="w">
327 </span><span·class="nf">init</span><span·class="p"·data-group-id="7489321254-28">(</span><span·class="p"·data-group-id="7489321254-29">[</span><span·class="p"·data-group-id="7489321254-29">]</span><span·class="p"·data-group-id="7489321254-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="6808193703-28">(</span><span·class="p"·data-group-id="6808193703-29">[</span><span·class="p"·data-group-id="6808193703-29">]</span><span·class="p"·data-group-id="6808193703-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="7489321254-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="7489321254-30">}</span><span·class="p">.</span><span·class="w">330 ····</span><span·class="p"·data-group-id="6808193703-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="6808193703-30">}</span><span·class="p">.</span><span·class="w">
331 </span><span·class="nf">callback_mode</span><span·class="p"·data-group-id="7489321254-31">(</span><span·class="p"·data-group-id="7489321254-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="6808193703-31">(</span><span·class="p"·data-group-id="6808193703-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="7489321254-32">(</span><span·class="p"·data-group-id="7489321254-33">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="7489321254-33">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·146,·SHA:·e6f5095907bb65d8f8b2dc21cd1aab3018cc55d15d295653a79ffdaf81a90e49·...·]-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="6808193703-32">(</span><span·class="p"·data-group-id="6808193703-33">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="6808193703-33">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·146,·SHA:·a316557a1f24c07975595ba5500fec4bf98b9d4d115f9059dc1aca2b73b4cbee·...·]-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="7489321254-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-grou[·...·truncated·by·diffoscope;·len:·362,·SHA:·5721e86a38555aa0713cdff3a11220c382af7fa9913869e2341c792772b7ff06·...·]-34">}</span><span·class="p">;</span><span·class="w">336 ····</span><span·class="p"·data-group-id="6808193703-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-grou[·...·truncated·by·diffoscope;·len:·362,·SHA:·336ac799609802fa01243b6d9f205b39f9f10c8e7ac0fdd7de9f0c358d40d1e8·...·]-34">}</span><span·class="p">;</span><span·class="w">
337 </span><span·class="nf">off</span><span·class="p"·data-group-id="7489321254-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="7489321254-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="6808193703-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="6808193703-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="7489321254-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="7489321254-38">)</span><span·class="p">.</span><span·class="w">338 ····</span><span·class="nf">handle_event</span><span·class="p"·data-group-id="6808193703-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="6808193703-38">)</span><span·class="p">.</span><span·class="w">
  
339 </span><span·class="nf">on</span><span·class="p"·data-group-id="7489321254-39">(</span><span·class="p"·data-group-id="7489321254-40">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="7489321254-40">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·146,·SHA:·e6f5095907bb65d8f8b2dc21cd1aab3018cc55d15d295653a79ffdaf81a90e49·...·]-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="6808193703-39">(</span><span·class="p"·data-group-id="6808193703-40">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="6808193703-40">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·146,·SHA:·a316557a1f24c07975595ba5500fec4bf98b9d4d115f9059dc1aca2b73b4cbee·...·]-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="7489321254-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="7489321254-42">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·315,·SHA:·cca4a345248c86a6d7e21ef69799f1dcd13f285465e642602bbdcb8465f4c6fc·...·]-41">}</span><span·class="p">;</span><span·class="w">341 ····</span><span·class="p"·data-group-id="6808193703-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="6808193703-42">[</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·315,·SHA:·d63acd37c7aa28364ca681198109f6418382eac2a8d3422865b8ee45250bffcb·...·]-41">}</span><span·class="p">;</span><span·class="w">
342 </span><span·class="nf">on</span><span·class="p"·data-group-id="7489321254-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="7489321254-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="6808193703-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="6808193703-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="7489321254-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="7489321254-45">)</span><span·class="p">.</span><span·class="w">343 ····</span><span·class="nf">handle_event</span><span·class="p"·data-group-id="6808193703-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="6808193703-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="7489321254-46">(</span><span·class="p"·data-group-id="7489321254-47">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="7489321254-47">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·151,·SHA:·f8a28bba7a21583ec1583973d4fef5907769d6227178aa410e2c059b6708dc9d·...·]-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="6808193703-46">(</span><span·class="p"·data-group-id="6808193703-47">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="6808193703-47">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·151,·SHA:·e35350f8d76a3482953650085b14e518878fd6f6da8f78ac269cfcf19fa94e3b·...·]-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="7489321254-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="7489321254-49">[</span><span·class="p"·data-group-id="7489321254-50">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·264,·SHA:·34d14e752e35919df68ab44aa08eb0ca19fba9f1d3282893ad00b1ecfe4a2b43·...·]-48">}</span><span·class="p">;</span><span·class="w">347 ····</span><span·class="p"·data-group-id="6808193703-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="6808193703-49">[</span><span·class="p"·data-group-id="6808193703-50">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·264,·SHA:·2f4d2fa441649453b3d31d0d7077e6c662240857fa905b1736280d4a3863adc4·...·]-48">}</span><span·class="p">;</span><span·class="w">
348 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="7489321254-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="7489321254-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="6808193703-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="6808193703-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="7489321254-52">{</span><span·class="ss">keep_state</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="7489321254-52">}</span><span·class="p">.</span></code></pre><p>The·following·is·a·shell·session·when·running·it:</p><[·...·truncated·by·diffoscope;·len:·271,·SHA:·6003e5a1bf3bb009df3dbbad905cc71423c5926f7b65650a701f3ed952ba30eb·...·]-1">)</span><span·class="p">.</span><span·class="w">350 ····</span><span·class="p"·data-group-id="6808193703-52">{</span><span·class="ss">keep_state</span><span·class="p">,</span><span·class="n">Data</span><span·class="p"·data-group-id="6808193703-52">}</span><span·class="p">.</span></code></pre><p>The·following·is·a·shell·session·when·running·it:</p><[·...·truncated·by·diffoscope;·len:·271,·SHA:·a80fbdedb7b769bb82dd04d571f20d8542473537fd030bedf0f0d2dc922e9d46·...·]-1">)</span><span·class="p">.</span><span·class="w">
351 </span><span·class="p"·data-group-id="3214241273-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="3214241273-2">}</span><span·class="gp·unselectable">351 </span><span·class="p"·data-group-id="5666810768-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="5666810768-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="3214241273-3">(</span><span·class="p"·data-group-id="3214241273-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="5666810768-3">(</span><span·class="p"·data-group-id="5666810768-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="3214241273-4">(</span><span·class="p"·data-group-id="3214241273-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="5666810768-4">(</span><span·class="p"·data-group-id="5666810768-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="3214241273-5">(</span><span·class="p"·data-group-id="3214241273-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="5666810768-5">(</span><span·class="p"·data-group-id="5666810768-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="3214241273-6">(</span><span·class="p"·data-group-id="3214241273-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="5666810768-6">(</span><span·class="p"·data-group-id="5666810768-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="3214241273-7">(</span><span·class="p"·data-group-id="3214241273-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="5666810768-7">(</span><span·class="p"·data-group-id="5666810768-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="3214241273-8">(</span><span·class="p"·data-group-id="3214241273-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="5666810768-8">(</span><span·class="p"·data-group-id="5666810768-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="3214241273-9">(</span><span·class="p"·data-group-id="3214241273-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="5666810768-9">(</span><span·class="p"·data-group-id="5666810768-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="0460115341-1">(</span><span·class="p"·data-group-id="0460115341-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="1493942172-1">(</span><span·class="p"·data-group-id="1493942172-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="0460115341-2">(</span><span·class="p"·data-group-id="0460115341-3">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="0460115341-3">}</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·218,·SHA:·f3b3e09950ed998a59a3088150473cb6b851cba90887b5b676023b3c98b7f662·...·]-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="1493942172-2">(</span><span·class="p"·data-group-id="1493942172-3">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="1493942172-3">}</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·218,·SHA:·ce38fe4fe040c20a302e5084d8eeb12aa80910ed826dbb408e2a5f38c665b1ff·...·]-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="0460115341-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:·06ba5738ba7d22773f8c376e4418e373502bb024250386435765410ad2f706c7·...·]-4">}</span><span·class="p">;</span><span·class="w">375 ····</span><span·class="p"·data-group-id="1493942172-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:·3b13760c11b55be7441ab813318fb7c3a93a3b37b28eb4bcecbd55d9b14386e3·...·]-4">}</span><span·class="p">;</span><span·class="w">
376 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="0460115341-7">(</span><span·class="p"·data-group-id="0460115341-8">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="0460115341-8">}</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·217,·SHA:·719f4db9c5a22faf22052166cdd5ff0cdfe75dc1051cf21a62bc38d6e3de372c·...·]-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="1493942172-7">(</span><span·class="p"·data-group-id="1493942172-8">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="1493942172-8">}</span><span·class="p">,</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·217,·SHA:·2291fd58a7d35852d292153970581196254af17c31b34d460f3c972588a14642·...·]-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="0460115341-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="0460115341-10">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·314,·SHA:·e8d54e5c083af624b82d499a25f187c1569cc032052309531058659c52172381·...·]-9">}</span><span·class="p">;</span><span·class="w">378 ····</span><span·class="p"·data-group-id="1493942172-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="1493942172-10">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·314,·SHA:·10756fd8d04bdae7bc7ee6e18c1614f46c7b34e2cfcdf0f55fed5af6e5edd72f·...·]-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="0460115341-12">(</span><span·class="p"·data-group-id="0460115341-13">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="0460115341-13">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·227,·SHA:·c46761d69b5eeca8da9081073b1b90d8c6eff66068703cd7703e3ccbe4e947e1·...·]-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="1493942172-12">(</span><span·class="p"·data-group-id="1493942172-13">{</span><span·class="ss">call</span><span·class="p">,</span><span·class="n">From</span><span·class="p"·data-group-id="1493942172-13">}</span><span·class="p">,</span><span·class="w">·</spa[·...·truncated·by·diffoscope;·len:·227,·SHA:·e28dea40aa665994fc2d129e5c44c4728468ac312aabb700a12ff52de1d424cd·...·]-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="0460115341-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="0460115341-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·316,·SHA:·e90058ea5aba1bf25b34bc60fa1e5dbb02c1dd9b7ebb5212cbb35a975f66f4ce·...·]-14">}</span><span·class="p">;</span><span·class="w">383 ····</span><span·class="p"·data-group-id="1493942172-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="1493942172-15">[</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·316,·SHA:·fbe718d1037b9bfb44330d7eeedf0ee90a74e5ae70495709304aee2e2be5215c·...·]-14">}</span><span·class="p">;</span><span·class="w">
384 </span><span·class="nf">handle_event</span><span·class="p"·data-group-id="0460115341-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:·7cf2c0b1697dc293c88058a85dd48404d249443047bd50061cef36e8ca19c64b·...·]-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="1493942172-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:·f2638c88a3b34584c73d3b4ccecc085df27fa3595c78e2112ba2edba9cf567dc·...·]-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="0460115341-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="0460115341-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="1493942172-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="1493942172-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.1/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="4910269637-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="4910[·...·truncated·by·diffoscope;·len:·377,·SHA:·95c52b5f9789a3df5bb4cbfa960a9f3ba96d9d3a0d52b4302633b04d14c39340·...·]-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="1537902850-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="1537[·...·truncated·by·diffoscope;·len:·377,·SHA:·7d059fca72a4ead46f0e06c8b0601d6c259950acad255f79b8227a602fdd8879·...·]-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="9335744043-1">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p"·data-group-id="9335744043-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="8410119055-1">(</span><span·class="ss">&#39;enter&gt;&#39;</span><span·class="p"·data-group-id="8410119055-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="9335744043-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="9335744043-2">}</span><span·class="gp·unselectable">1166 </span><span·class="p"·data-group-id="8410119055-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="8410119055-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="9335744043-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="9335744043-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="8410119055-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="8410119055-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="9335744043-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">bar</span><span·class="p"·data-group-id="9335744043-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="8410119055-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">bar</span><span·class="p"·data-group-id="8410119055-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.3/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.3/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.3/doc/html/erlang.html#group_leader/2"><code·class="inline">group_leader(NewGroupLeader,·self())</code></a>.</p>1173 <a·href="../../../../erts-15.2.3/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="8293558661-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="8293558661-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="3924929787-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="3924929787-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="8293558661-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="8293558661-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="8293558661-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·2a95cae06b5319ebfcd98c48e51334b25de1d34c921b9e2f5b8841aa3e9a7368·...·]-2">}</span><span·class="gp·unselectable">1432 </span><span·class="p"·data-group-id="3924929787-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="3924929787-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="3924929787-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·e4a41f5673c2df5d09b0c4f21eef0c264f8cea0bb4e82eb5a8c51dc042eb2e58·...·]-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="8293558661-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="8293558661-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="3924929787-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="3924929787-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="8293558661-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8293558661-6">[</span><span·class="p"·data-group-id="8293558661-7">[</span><span·class="mi">1091</span><span·class="p">,</span><span·class="mi">1085</spa[·...·truncated·by·diffoscope;·len:·409,·SHA:·7329aeeab86b4c61328241c80e831179142e17c03221bc483ec5808660f6f0d4·...·]-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="3924929787-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3924929787-6">[</span><span·class="p"·data-group-id="3924929787-7">[</span><span·class="mi">1091</span><span·class="p">,</span><span·class="mi">1085</spa[·...·truncated·by·diffoscope;·len:·409,·SHA:·70ab68b609795f83541e0c45389be7cf990859ab09681a41b00721e1ec8d2cfa·...·]-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="5040347272-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="5040347272-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="0248737255-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="0248737255-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="5040347272-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="5040347272-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="5040347272-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·fb2cb45987df0b2b43a240584ff49af5e9809667016b389becd41d2b8fc4d108·...·]-2">}</span><span·class="gp·unselectable">1441 </span><span·class="p"·data-group-id="0248737255-2">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="0248737255-3">{</span><span·class="ss">fread</span><span·class="p">,</span><span·class="ss">string</span><span·class="p"·data-group-id="0248737255-3">[·...·truncated·by·diffoscope;·len:·49,·SHA:·8be84874d2a73b0e675e7448dfedce2c3491eba912cebe3c93a038cff919a987·...·]-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="5040347272-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="5040347272-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="0248737255-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="0248737255-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="5040347272-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5040347272-6">[</span><span·class="p"·data-group-id="5040347272-7">[</span><span·class="mi">1091</span><span·class="p"·data-group-id="5040347272-7">]</sp[·...·truncated·by·diffoscope;·len:·97,·SHA:·28089e48071bd45170108bf59e880764ab3a4c32a8b4c7e04b2b4827743552fb·...·]-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="0248737255-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0248737255-6">[</span><span·class="p"·data-group-id="0248737255-7">[</span><span·class="mi">1091</span><span·class="p"·data-group-id="0248737255-7">]</sp[·...·truncated·by·diffoscope;·len:·97,·SHA:·4a2ee2587f61b0143f78cdbdc831845e34b5fa050c1b910ac963fb29a37fded9·...·]-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="7448821026-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="7448821026-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="5449138122-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="5449138122-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="7448821026-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7448821026-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:·7e483e8b69d96e48a89509bd02b20d1fa635c3565d2fe83942ac6a663632bf41·...·]-2">}</span><span·class="gp·unselectable">1450 </span><span·class="p"·data-group-id="5449138122-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5449138122-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:·8c236ef7616021566870fc4091890c8865f3241bf031b2d2d07fc01b3ba5f368·...·]-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="7448821026-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="7448821026-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="5449138122-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="5449138122-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="7448821026-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7448821026-6">[</span><span·class="mf">5.678</span><span·class="p">,</span><span·class="mi">99</span><span·class="p"·data-group-id="7448821026-6">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·be9a7b72106b7b67c598532b34e2f19b1cf33ed671c7feaecb810bb5c481a188·...·]-5">}</span><span·class="gp·unselectable">1453 </span><span·class="p"·data-group-id="5449138122-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="5449138122-6">[</span><span·class="mf">5.678</span><span·class="p">,</span><span·class="mi">99</span><span·class="p"·data-group-id="5449138122-6">]</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·fdf1e4e82e856fd61979dd21b16d7288162dba5d261fb462664de74d84e45c17·...·]-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="7448821026-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="7448821026-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="5449138122-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="5449138122-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="7448821026-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7448821026-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:·92ed7b072cb76e7e731b8f6f6a06d028337a38741bf2dd48c4a746112ef85b18·...·]-8">}</span></code></pre>1456 </span><span·class="p"·data-group-id="5449138122-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5449138122-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:·7bc1dd7722f0832b032c7386c1674470535a53b5e625d47e0fc14dbd049d79a7·...·]-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.3/doc/html/erlang.html#atom_to_list/1"><code·class="inline">atom_to_list/1</code></a>·or1536 <a·href="../../../../erts-15.2.3/doc/html/erlang.html#atom_to_list/1"><code·class="inline">atom_to_list/1</code></a>·or
1537 <a·href="../../../../erts-15.2.3/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="5816551777-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="5816551777-2">[</span><span·class="p"·data-group-id="581655[·...·truncated·by·diffoscope;·len:·57,·SHA:·f6ba65a984dae26d06d5aca29474f804c1ee027998e1eeeacbced2992d05e6b0·...·]-1">)</span><span·class="p">.</span><span·class="w">1537 <a·href="../../../../erts-15.2.3/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="4434727660-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="4434727660-2">[</span><span·class="p"·data-group-id="443472[·...·truncated·by·diffoscope;·len:·57,·SHA:·107a428202c45f5f12c5061bb7378577bc17caff8a04878945d405bd7d2df532·...·]-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="9328742632-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:·c3d665f4d29414b291d4fa1aac1b6a8d88e5c5bffae138f9d6fc1901f2512332·...·]-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="1308600170-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:·6299be36ab14a592c6b2beb9e4d5c1bce23a6895b986e6802a7307b18762c91e·...·]-1">}</span><span·class="p">.</span><span·class="w">
1558 </span><span·class="p"·data-group-id="9328742632-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:·1f82123a51f1b016012203e728c762fc1749c80094e31993fcac55446fe0dbed·...·]-2">}</span><span·class="gp·unselectable">1558 </span><span·class="p"·data-group-id="1308600170-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:·c0b93b853e40d76f3f1c520316c935724d5608647279d649e64a24d7e2badc4a·...·]-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="9328742632-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="9328742632-4">[</span><span·class="ss">reversed</span><span·class="p[·...·truncated·by·diffoscope;·len:·152,·SHA:·0eed6eade8415f30127995155c35093b872f9f86a942432b1fef66d1e3622856·...·]-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="1308600170-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="1308600170-4">[</span><span·class="ss">reversed</span><span·class="p[·...·truncated·by·diffoscope;·len:·152,·SHA:·1a0e603ff713f7183068e9e43ce96a363d86a35a2167a3fc195f25178044cab2·...·]-3">)</span><span·class="p">.</span><span·class="w">
1560 </span><span·class="p"·data-group-id="9328742632-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:·b472f19ce053fad85278656bdcb6d1664204037bc9871c1df86062ed74c0bb1f·...·]-5">}</span><span·class="w">1560 </span><span·class="p"·data-group-id="1308600170-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:·fb1cf14825a5e7c8f46b74e73bddf53a6df0c1c1b9abbb11a77dff5caac78774·...·]-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="8658326830-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="8658326830-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·208,·SHA:·fb723c8cd4c846a4843c85eccd2aaf740c38ece374fe46683ebfbf74e2b66021·...·]-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="7348377774-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="7348377774-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·208,·SHA:·6a41e75aad1a068f79c68e65dada25585b53517e4a60f7059acb823d721e3229·...·]-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="4575406437-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="4575406437-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·282,·SHA:·b2418c1c92c4b1611d4a3f00c07b077f7719fa1f9ac920ae0767abd432c41514·...·]-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="0462724731-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="0462724731-2">[</span><span·class="mi">9</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·282,·SHA:·a014a8a5e9d3b445a7846ec1dfb672e334d86166145a61944ada1d4feb87695c·...·]-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="1353406710-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="13534[·...·truncated·by·diffoscope;·len:·285,·SHA:·01515fd4d07a2f3b0c67a5e1abecb84b57bf13ccdfafafda34ca83e526eb4bbf·...·]-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="1858129905-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="18581[·...·truncated·by·diffoscope;·len:·285,·SHA:·a553692725f235d56a9d4ff6a36f7cbfa5616510f8134c7bd254e26317da58db·...·]-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="2013747265-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="2013747265-2">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="2013747265-[·...·truncated·by·diffoscope;·len:·52,·SHA:·77701da4216b3d1328e18d5708763eac2d72ce88da84f5b427cc2634c11d07df·...·]-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="5015950053-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="5015950053-2">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="5015950053-[·...·truncated·by·diffoscope;·len:·52,·SHA:·5f6ea05701df6bc9f95797eea55e7df4480eada280bdc623f2ec8097b3b31dbf·...·]-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="2013747265-3">{</span><span·class="mi">400</span><span·class="p"·data-group-id="2013747265-3">}</span><span·class="w">1573 </span><span·class="err">\</span><span·class="ss">x</span><span·class="p"·data-group-id="5015950053-3">{</span><span·class="mi">400</span><span·class="p"·data-group-id="5015950053-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="2013747265-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="2013747265-5">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="2013747265-5[·...·truncated·by·diffoscope;·len:·51,·SHA:·4d01c0a5ad9473275ebb470f04e5d94f0fb4b356868241d50d02f67bce83644c·...·]-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="5015950053-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="5015950053-5">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="5015950053-5[·...·truncated·by·diffoscope;·len:·51,·SHA:·253edcce438b0b32ae05529f4a928881b0195479d25ce1c6a7c610cba90923d9·...·]-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.1/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="9854534527-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="9854534527-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="4732334525-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="4732334525-1">)</span><span·class="p">.</span><span·class="w">
1006 </span><span·class="p"·data-group-id="9854534527-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9854534527-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:·fde3cd8719fc8cea4ce3df79aa224eaae7bf849f7b8b36faf4b884dc2adda4d1·...·]-2">}</span></code></pre>1006 </span><span·class="p"·data-group-id="4732334525-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4732334525-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:·2e0b8b61421fa743b08c7059e49af2ba6258a97830bdfe7dbf7124adf6d020cf·...·]-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="5262333167-1">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="5262333167-2">(</span><span·class="p"·data-group-id="5262333167-3">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·837,·SHA:·490571150a80a28cb2f77ceed82105f221433d25a13b500dec1203c9c8808379·...·]-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="4517000961-1">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="4517000961-2">(</span><span·class="p"·data-group-id="4517000961-3">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·837,·SHA:·433a40b010ecb43f3fa7e922050ec51d4e81c910d554a4457ab389258acf78b5·...·]-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="5262333167-7">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="5262333167-8">(</span><span·class="p"·data-group-id="5262333167-9">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·916,·SHA:·bbfb911c74f795965050ccee43b1b9081aad393a9ce0b25472d54e83fda5237c·...·]-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="4517000961-7">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="4517000961-8">(</span><span·class="p"·data-group-id="4517000961-9">{</span><span·class="mi">1</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·916,·SHA:·3aee6ad8e1da78f419dd62d1d8784495e4cd9a2edd5f8ccebcbadb55bbd92483·...·]-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="5262333167-13">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="5262333167-14">(</span><span·class="p"·data-group-id="5262333167-15">{</span><span·class="p"·data-group-id="5262333167-[·...·truncated·by·diffoscope;·len:·1089,·SHA:·455816a9c20b709e793cbcb290ccde0a88a6a2da0ba73c176c63d4c6a42ce0f5·...·]-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="4517000961-13">(</span><span·class="nc">io_lib</span><span·class="p">:</span><span·class="nf">write</span><span·class="p"·data-group-id="4517000961-14">(</span><span·class="p"·data-group-id="4517000961-15">{</span><span·class="p"·data-group-id="4517000961-[·...·truncated·by·diffoscope;·len:·1089,·SHA:·59ce0a3f8cd6f6dbffb95817ffd67cfd33ef3df1073fbd80c0ee1d76b537373f·...·]-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.1/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="4602838972-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:·b158aff31af5ddbec3bdd06154040a39b9a7de0e34c483514bc0107ae5ae83a8·...·]-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="9788208961-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:·47f11d271c5c57b9663740edebea69167546340319bd37692f183a20723b9103·...·]-1">}</span><span·class="w">
150 </span><span·class="p"·data-group-id="4602838972-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="4602838972-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="9788208961-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="9788208961-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.3/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.3/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.3/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.3/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="3732718755-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="3732718755-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="0505147271-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="0505147271-1">}</span><span·class="w">
168 </span><span·class="p"·data-group-id="3732718755-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:·a8b2e9f77302f96267652b0ac1aaa2bfc2d0ad876a066640d374657a9b3ede64·...·]-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="0505147271-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:·39fe1ca9e7f699c6bfc030c7d8bf321fdfb0e8fb7ce38d055b3f8d63599a0830·...·]-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="5518016060-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:·5221b8d3c3f0fc308ccff6905c98ae3fe6e0633cd3da88888a42027be0f17d30·...·]-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="8164355036-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:·d172e76693acfdde69e1678b75529df066f1d2da0df0e9c6dfb8a6fb12704abb·...·]-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="2899690293-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="2899690293-1">}</span><span·class="w">210 one·of:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="8566388521-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="8566388521-1">}</span><span·class="w">
211 </span><span·class="p"·data-group-id="2899690293-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="2899690293-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.3/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="8566388521-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="8566388521-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.3/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.3/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.3/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="9796347083-1">(</span><span·class="ss">demo</span><span·class="p"·data-group-id="9796347083-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="0895303048-1">(</span><span·class="ss">demo</span><span·class="p"·data-group-id="0895303048-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="9796347083-2">(</span><span·class="p"·data-group-id="9796347083-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:·283eab0f6e1662c8485f1ad8b8cce9aeda5d27cc9e2969b88d58105ec7b16e28·...·]-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="0895303048-2">(</span><span·class="p"·data-group-id="0895303048-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:·46cbe60db265c1533396949afdb681ef13cfa5771cd07cacd607fb37f5855192·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">until_newline</span><span·class="p"·data-group-id="9796347083-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="9796347083-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="0895303048-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="0895303048-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="9796347083-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="9796347083-6">[</span><span·class="p"·data-group-id="9796347083-6">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·f6273a333782d3b931f13ca165f4c52bd5f30b34f64e4f093c9398da9ccb2b57·...·]-5">}</span><span·class="p">;</span><span·class="w">224 ····</span><span·class="p"·data-group-id="0895303048-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="0895303048-6">[</span><span·class="p"·data-group-id="0895303048-6">]</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·08fed52cdea58a95e308acedef550d4f5b0c82c0bbea9c057f97eb56a7a451e6·...·]-5">}</span><span·class="p">;</span><span·class="w">
225 </span><span·class="nf">until_newline</span><span·class="p"·data-group-id="9796347083-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="9796347083-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="0895303048-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="0895303048-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="9796347083-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9796347083-9">(</span><span·class="n">X</span><span·class="p"·data-group-id="9796347083-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·306,·SHA:·0e7daadc2970807cde361907a9da7a3f03ac8e8cc52b0253dc86c8c4eaf71b45·...·]-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="0895303048-8">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="0895303048-9">(</span><span·class="n">X</span><span·class="p"·data-group-id="0895303048-9">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·306,·SHA:·8b2fa2cd9efc7eb040281a398076eb87f3007ceaa2eed9846deeedf0e6420b27·...·]-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="9796347083-10">{</span><span·class="n">L</span><span·class="p">,</span><span·class="p"·data-group-id="9796347083-11">[</span><span·class="p"·data-group-id="9796347083-11">]</span><span·class="p"·data-group-id="9796347083-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">229 ··</span><span·class="p"·data-group-id="0895303048-10">{</span><span·class="n">L</span><span·class="p">,</span><span·class="p"·data-group-id="0895303048-11">[</span><span·class="p"·data-group-id="0895303048-11">]</span><span·class="p"·data-group-id="0895303048-10">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
230 ············</span><span·class="p"·data-group-id="9796347083-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="9796347083-12">}</span><span·class="p">;</span><span·class="w">230 ············</span><span·class="p"·data-group-id="0895303048-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="0895303048-12">}</span><span·class="p">;</span><span·class="w">
231 ··</span><span·class="p"·data-group-id="9796347083-13">{</span><span·class="n">L2</span><span·class="p">,</span><span·class="p"·data-group-id="9796347083-14">[</span><span·class="n">MyStopCharacter</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="9796347083[·...·truncated·by·diffoscope;·len:·54,·SHA:·e7c353ab7c295c54aae307533c07a86961046829be4e5b5b996114d918e30aa7·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">231 ··</span><span·class="p"·data-group-id="0895303048-13">{</span><span·class="n">L2</span><span·class="p">,</span><span·class="p"·data-group-id="0895303048-14">[</span><span·class="n">MyStopCharacter</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="0895303048[·...·truncated·by·diffoscope;·len:·54,·SHA:·106cce0781c32674c724f5710596282ea88a018f373ff8447419fc9bdb06ba23·...·]-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ······</span><span·class="p"·data-group-id="9796347083-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="9796347083-16">[</span><span·class="n">MyStop[·...·truncated·by·diffoscope;·len:·162,·SHA:·71475a8ca2892789881f2dae271a1c30156e983d8fa33450960660f259309279·...·]-15">}</span><span·class="w">232 ······</span><span·class="p"·data-group-id="0895303048-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="0895303048-16">[</span><span·class="n">MyStop[·...·truncated·by·diffoscope;·len:·162,·SHA:·262ae12bacd9e9fc8d5857111b4fe9286da7ceb0a46c7622fd5df7099acd0313·...·]-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="9796347083-17">(</span><span·class="n">IoServer</span><span·class="p"·data-group-id="9796347083-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="0895303048-17">(</span><span·class="n">IoServer</span><span·class="p"·data-group-id="0895303048-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="9796347083-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="0895303048-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="9796347083-19">(</span><span·class="p"·data-group-id="9796347083-19">)</span><span·class="p">,</span><span·class="w">236 ················</span><span·class="nf">self</span><span·class="p"·data-group-id="0895303048-19">(</span><span·class="p"·data-group-id="0895303048-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="9796347083-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:·7cbb7e9bd679237520e6cc8e43e0f3146cf5c55a38a7d5911463235021df2a2d·...·]-18">}</span><span·class="p">,</span><span·class="w">238 ················</span><span·class="p"·data-group-id="0895303048-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:·c1f1bb30dae2ad7df700a2ce9958dadb3da929fa865068714429ae8ed67b4daa·...·]-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="9796347083-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="9796347083-22">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">240 ········</span><span·class="p"·data-group-id="0895303048-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="0895303048-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.3/doc/html/erlang.html#apply/3"><code·class="inline">apply(Module,·Function,·[·State,·Data·|·ExtraArgs·])</code></a>·by244 like·<a·href="../../../../erts-15.2.3/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="4268632543-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="4268632543-2">(</span><span·class="p"·data-group-id="4268632543-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·283,·SHA:·a01fe842e4282fbbe8e761c412575be4f1ad8c64743dc6eab6174d6ebf6f8d0b·...·]-3">)</span><span·class="w">280 understands·the·following·options:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="p"·data-group-id="4411091264-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="4411091264-2">(</span><span·class="p"·data-group-id="4411091264-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·283,·SHA:·318587b7a0f06bbfe089dd36b07b16f71f581d112a122623b7ef6a1250dadb52·...·]-3">)</span><span·class="w">
281 </span><span·class="p"·data-group-id="4268632543-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="4268632543-5">(</span><span·class="p"·data-group-id="4268632543-5">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·2d9fc1d5e284e5f442f77087bd3041f1aa554f6bb2d3ee53fedd08865ed98f28·...·]-4">}</span><span·class="w">281 </span><span·class="p"·data-group-id="4411091264-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="4411091264-5">(</span><span·class="p"·data-group-id="4411091264-5">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·bafbdcf5725d171a5fd33c7f26d7996a8f3c5dfd800fbdbc07c5d01c67683090·...·]-4">}</span><span·class="w">
282 </span><span·class="p"·data-group-id="4268632543-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="4268632543-7">(</span><span·class="p"·data-group-id="4268632543-7">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·942cb8a7e939a230eec7c8d84e6c445e85745d9e7cc2f70247eac5260716b46d·...·]-6">}</span><span·class="w">282 </span><span·class="p"·data-group-id="4411091264-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="4411091264-7">(</span><span·class="p"·data-group-id="4411091264-7">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·21,·SHA:·fb2ea8f91114d1009ac82e61784619b27373039045d5e0fb10cf78c3ab44ae9d·...·]-6">}</span><span·class="w">
283 </span><span·class="p"·data-group-id="4268632543-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="4268632543-8">}</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·236,·SHA:·194ebba4bf35bd4f6bb8aef4d6fd463a4889f2fce1be6b991f9cc0b3895c0566·...·]-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="4411091264-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="4411091264-8">}</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·236,·SHA:·c60bb6470dc523d7ffcc3bb8c6ad83f91fea8a5136dde63fad7bc5226c1e3ab4·...·]-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="4819030888-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="4819030888-1">}</span><span·class="w">306 </span><span·class="p"·data-group-id="3178473290-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="3178473290-1">}</span><span·class="w">
307 </span><span·class="p"·data-group-id="4819030888-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="4819030888-2">}</span><span·class="w">307 </span><span·class="p"·data-group-id="3178473290-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="3178473290-2">}</span><span·class="w">
308 </span><span·class="p"·data-group-id="4819030888-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="4819030888-3">}</span></code></pre><h2·id="optional-i-o-request"·class="section-heading">308 </span><span·class="p"·data-group-id="3178473290-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="3178473290-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.1/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="5865066000-1">(</span><span·class="p"·data-group-id="5865066000-2">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:·1}&quot;</span><span·class="p"·data-group-id="5865066000-2">&gt;&gt;</span><span·class="p"·data-group-id="5865066000-1">)</span><span·class="p">.</span><span·class="w">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="0627816000-1">(</span><span·class="p"·data-group-id="0627816000-2">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:·1}&quot;</span><span·class="p"·data-group-id="0627816000-2">&gt;&gt;</span><span·class="p"·data-group-id="0627816000-1">)</span><span·class="p">.</span><span·class="w">
985 </span><span·class="p"·data-group-id="5865066000-3">#{</span><span·class="p"·data-group-id="5865066000-4">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="5865066000-4">&gt;&gt;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·63,·SHA:·3d85f970b70e957cee0bb53855e6e75ea656f7c2938bd622dddb4a9a986e8d8c·...·]6000-3">}</span></code></pre>985 </span><span·class="p"·data-group-id="0627816000-3">#{</span><span·class="p"·data-group-id="0627816000-4">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="0627816000-4">&gt;&gt;</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·63,·SHA:·d48ec4cd677ca00c87495d3e119be9c420c82d89f1ec19aea266b3f6388af9c6·...·]6000-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="6797422744-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="6797422744-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6797422744-2">[</span><span·class="p"·data-group-id="6797422744-3">{</span><span·class="nf">binary_to_existing_atom</span><span·class="p"·data-group-id="6797422744-4">(</span><span·class="n">Key</span><span·class="p"·data-group-id="6797422744-4">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Value</span><span·class="p"·data-group-id="6797422744-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="n">Acc</span><span·class="p"·data-group-id="6797422744-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="6797422744-5">(</span><span·class="p"·data-group-id="6797422744-6">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:·1}&quot;</span><span·class="p"·data-group-id="6797422744-6">&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="6797422744-7">#{</span><span·class="ss">object_push</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Push</span><span·class="p"·data-group-id="6797422744-7">}</span><span·class="p"·data-group-id="6797422744-5">)</span><span·class="p">.</span><span·class="w"> 
1037 </span><span·class="p"·data-group-id="6797422744-8">{</span><span·class="p"·data-group-id="6797422744-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"[·...·truncated·by·diffoscope;·len:·299,·SHA:·42afe92d0c99dd3a2fe0d66ba6812487d02a0841bea354721eabc67f99f35a2a·...·]>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><spa[·...·truncated·by·diffoscope;·len:·1022,·SHA:·cb3b51f6673cb2a48bbab1d2f0924e42c08e27334a7c747ec08a13565257b2c8·...·]>
 1036 &gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode</span><span·class="p"·data-group-id="0205655889-5">(</span><span·class="p"·data-group-id="0205655889-6">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:·1}&quot;</span><span·class="p"·data-group-id="0205655889-6">&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="0205655889-7">#{</span><span·class="ss">object_push</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="n">Push</span><span·class="p"·data-group-id="0205655889-7">}</span><span·class="p"·data-group-id="0205655889-5">)</span><span·class="p">.</span><span·class="w">
 1037 </span><span·class="p"·data-group-id="0205655889-8">{</span><span·class="p"·data-group-id="0205655889-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="0205655889-9">}</span><span·class="p">,</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0205655889-10">&lt;&lt;</span><span·class="p"·data-group-id="0205655889-10">&gt;&gt;</span><span·class="p"·data-group-id="0205655889-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.3/doc/html/erlang.html#t:binary/0">binary</a>()·|·end_of_input,·Opaque·::·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:binary/0">binary</a>()·|·end_of_input,·Opaque·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>())·->
1062 ·························{Result·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Acc·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:binary/0">binary</a>()}·|1062 ·························{Result·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Acc·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·<a·href="../../../../erts-15.2.3/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="6308790684-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="6308790684-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·584,·SHA:·9a5fe85c784fc13cc605e90a9ddf5254e6130fd40744ac61e2a11139fa187e1a·...·]-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="7184509675-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="7184509675-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·584,·SHA:·b639740064563dc47df4218749547cf2d6a960fd7a79bd1e3017590ea078695d·...·]-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="6308790684-5">(</span><span·class="p"·data-group-id="6308790684-6">&lt;&lt;</span><span·class="s">&quot;1}&quot;</span><span·class="p"·data-group-id="6308790684-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·e41cdc9499c26b346b6cf1694c48fdbe005e32e75da179ada5a56564cd1287d9·...·]-5">)</span><span·class="p">.</span><span·class="w">1067 &gt;·</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">decode_continue</span><span·class="p"·data-group-id="7184509675-5">(</span><span·class="p"·data-group-id="7184509675-6">&lt;&lt;</span><span·class="s">&quot;1}&quot;</span><span·class="p"·data-group-id="7184509675-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span><[·...·truncated·by·diffoscope;·len:·40,·SHA:·da0787547554052fc618a428bec8df4cbb46d54259ef775cd3793e32f8edbf70·...·]-5">)</span><span·class="p">.</span><span·class="w">
1068 </span><span·class="p"·data-group-id="6308790684-7">{</span><span·class="p"·data-group-id="6308790684-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="6308790684-8">}</span[·...·truncated·by·diffoscope;·len:·1206,·SHA:·29dbbd8f95ca01b36f24e92f67a768abd73037c2e7baacb1ed40b3a4fe615368·...·]-2">)</span><span·class="p">.</span><span·class="gp·unselectable">1068 </span><span·class="p"·data-group-id="7184509675-7">{</span><span·class="p"·data-group-id="7184509675-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="7184509675-8">}</span[·...·truncated·by·diffoscope;·len:·1206,·SHA:·65214de059138abfb678db9d9634150248284d2933eae5c7c8b748426f0cfa14·...·]-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="6477297684-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="6477297684-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="2122334312-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="2122334312-5">)</span><span·class="p">.</span><span·class="w">
1070 </span><span·class="p"·data-group-id="6477297684-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="6477297684-7">&lt;&lt;</span><span·class="p"·data-group-id="6477297684-7">&gt;&gt;</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·e1ef7b02b4ffd19345e9ba938b4d8ecce02653ecdfe562e8dcbd967adb0e9268·...·]-6">}</span></code></pre>1070 </span><span·class="p"·data-group-id="2122334312-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="2122334312-7">&lt;&lt;</span><span·class="p"·data-group-id="2122334312-7">&gt;&gt;</span><span·class="[·...·truncated·by·diffoscope;·len:·28,·SHA:·93c94885274d27851eca5fc6b7b4cefdb37123117c644740d51752e5379bf249·...·]-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="3329332467-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">encode</span><span·class="p"·data-group-id="3329332467-2">(</span><span·class="p"·data-group-id="3329332467-3">#{</span><span·class="ss">foo</span><span·class="w">·</span><span·class="p">=&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="3329332467-4">&lt;&lt;</span><span·class="s">&quot;bar&quot;</span><span·class="p"·data-group-id="3329332467-4">&gt;&gt;</span><span·class="p"·data-group-id="3329332467-3">}</span><span·class="p"·data-group-id="3329332467-2">)</span><span·class="p"·data-group-id="3329332467-1">)</span><span·class="p">.</span><span·class="w"> 
1138 </span><span·class="p"·data-group-id="3329332467-5">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:\&quot;bar\&quot;}&quot;</span><span·class="p"·data-group-id="3329332467-5">&gt;&gt;</span></code></pre>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="1569717334-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">encod[·...·truncated·by·diffoscope;·len:·574,·SHA:·db3d5aa705f57f439e4f24c77ea864cfa8ee74645f480b1b6e885895ade39fec·...·]>
 1138 </span><span·class="p"·data-group-id="1569717334-5">&lt;&lt;</span><span·class="s">&quot;{\&quot;foo\&quot;:\&quot;bar\&quot;}&quot;</span><span·class="p"·data-group-id="1569717334-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="1943202891-1">(</span><span·class="p"·data-group-id="1943202891-2">[</span><span·class="p"·data-group-id="1943202891-3">{</span><span·class="p">_</span><span·class="p">,</span><span·class="w">·</span><span·class="p">_</span><span·class="p"·data-group-id="1[·...·truncated·by·diffoscope;·len:·772,·SHA:·2ec16281cd0e6b9df1d04987932e4203c609d046128be4ae3feed4edc0fb5d47·...·]-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="9363672620-1">(</span><span·class="p"·data-group-id="9363672620-2">[</span><span·class="p"·data-group-id="9363672620-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:·1c5556d4000d960443e2e0cc962526c2a983b509f9566fba39ea7aa80c320b78·...·]-4">)</span><span·class="p">;</span><span·class="gp·unselectable">
1179 &gt;·</span><span·class="nf">encoder</span><span·class="p"·data-group-id="1943202891-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="1943202891-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·287,·SHA:·9fdf40213dc42a96e098db3b5303177c23c232afadf64c1255b6fe4bbb754591·...·]-6">)</span><span·class="p">.</span><span·class="gp·unselectable">1179 &gt;·</span><span·class="nf">encoder</span><span·class="p"·data-group-id="9363672620-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="9363672620-5">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·287,·SHA:·3e36a468e48fb158b00a770237949be77bb935c29c002a41b4a31a06cf6a0ec9·...·]-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="1943202891-7">(</span><span·class="n">Value</span><span·class="p"·data-group-id="1943202891-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:·c897260c07ac2e730fd144dd7d4d6d98535ebb57f955240c941a6a3101ccc20c·...·]-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="9363672620-7">(</span><span·class="n">Value</span><span·class="p"·data-group-id="9363672620-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:·cce9d1b655194a157d9cd7faf131a0d62f878e70d6e63f7e1892c8a7b3392479·...·]-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="1943202891-11">(</span><span·class="nf">custom_encode</span><span·class="p"·data-group-id="1943202891-12">(</span><span·class="p"·data-group-id="1943202891-13">[</span><span·class="p"·data-group-id="1943202891-14">{</span><span·class="ss">a</span><span·cla[·...·truncated·by·diffoscope;·len:·604,·SHA:·370cba952f645cfc3c87df306b565e905898b5aa5a7c7f5a89e1db4fb8e04a89·...·]-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="9363672620-11">(</span><span·class="nf">custom_encode</span><span·class="p"·data-group-id="9363672620-12">(</span><span·class="p"·data-group-id="9363672620-13">[</span><span·class="p"·data-group-id="9363672620-14">{</span><span·class="ss">a</span><span·cla[·...·truncated·by·diffoscope;·len:·604,·SHA:·60702027f1ff402900724299840db35e611a65919faf9397112329176f8be6e3·...·]-11">)</span><span·class="p">.</span><span·class="w">
1182 </span><span·class="p"·data-group-id="1943202891-17">&lt;&lt;</span><span·class="s">&quot;{\&quot;a\&quot;:[],\&quot;b\&quot;:1}&quot;</span><span·class="p"·data-group-id="1943202891-17">&gt;&gt;</span></code></pre>1182 </span><span·class="p"·data-group-id="9363672620-17">&lt;&lt;</span><span·class="s">&quot;{\&quot;a\&quot;:[],\&quot;b\&quot;:1}&quot;</span><span·class="p"·data-group-id="9363672620-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.3/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.3/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="8884894411-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="8884894411-2">(</span><span·class="p"·data-group-id="8884894411-3">#{</span><span·class="ss">foo</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·540,·SHA:·51877b28ccabef61c37c5ff99f27c78117d65829310bf8c53fd49f5d20355a86·...·]-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="5400469490-1">(</span><span·class="nc">json</span><span·class="p">:</span><span·class="nf">format</span><span·class="p"·data-group-id="5400469490-2">(</span><span·class="p"·data-group-id="5400469490-3">#{</span><span·class="ss">foo</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·540,·SHA:·06ec2a7719c0cfd755956cf0e4b023a37314b3a8f599d3dacf3f7d0a63993ebd·...·]-1">)</span><span·class="p">.</span><span·class="w">
1546 </span><span·class="p"·data-group-id="8884894411-5">{</span><span·class="w">1546 </span><span·class="p"·data-group-id="5400469490-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="8884894411-5">}</span><span·class="w">1549 </span><span·class="p"·data-group-id="5400469490-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.3/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Encoder·::·<a·href="#t:formatter/0">formatter</a>(),·Options·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:map/0">map</a>())·->·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:dynamic/0">dynamic</a>(),·Encoder·::·<a·href="#t:formatter/0">formatter</a>(),·Options·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:map/0">map</a>())·->·<a·href="../../../../erts-15.2.3/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="1583861900-1">(</span><span·class="p"·data-group-id="1583861900-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="1583861900-2">}</span><span·class=[·...·truncated·by·diffoscope;·len:·182,·SHA:·50c5387f636258f11b1c4979f98e224ce7994a334eb54c6d316c7c14329bdd8f·...·]-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="8989097572-1">(</span><span·class="p"·data-group-id="8989097572-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="8989097572-2">}</span><span·class=[·...·truncated·by·diffoscope;·len:·182,·SHA:·5d631a210b00166b756c5f29999ce167995535e0a11bc872494cee1c0edab6f7·...·]-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="1583861900-3">(</span><span·class="n">SysTimeSecs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1583861900-4">[</span><span·class="p"·data-group-id="1583861900-5">{</span><span·class="ss">offset</span><span·class="p">[·...·truncated·by·diffoscope;·len:·215,·SHA:·8faa220a5057c313e5e3430b5fa43fa519e8363daac684c6a6bd235c5f0d727d·...·]-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="8989097572-3">(</span><span·class="n">SysTimeSecs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8989097572-4">[</span><span·class="p"·data-group-id="8989097572-5">{</span><span·class="ss">offset</span><span·class="p">[·...·truncated·by·diffoscope;·len:·215,·SHA:·25d34330d6fc3aff3a591444fce83d053cd264c3d01e8e0c38f98ad8c8b81cc6·...·]-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="1583861900-6">(</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_binary</span><span·class="p"·data-group-id="1583861900-7">(</span><span·class="n">TimeStr</span><span·class="p"·data-group-id="1583861900-7">)</span[·...·truncated·by·diffoscope;·len:·195,·SHA:·bfd5a5a43853ba227ee29c407fd6c9fc127a6709cf5b93e796fceeed34acfea7·...·]-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="8989097572-6">(</span><span·class="nc">unicode</span><span·class="p">:</span><span·class="nf">characters_to_binary</span><span·class="p"·data-group-id="8989097572-7">(</span><span·class="n">TimeStr</span><span·class="p"·data-group-id="8989097572-7">)</span[·...·truncated·by·diffoscope;·len:·195,·SHA:·c4a62dbfc617ace87ff131d39e83129357b4dbb559584c601e8e45f89f9c744e·...·]-6">)</span><span·class="p">;</span><span·class="gp·unselectable">
1615 &gt;·</span><span·class="nf">formatter</span><span·class="p"·data-group-id="1583861900-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="1583861900-8">)</span>[·...·truncated·by·diffoscope;·len:·439,·SHA:·fc2f26fe68e294b0ef826481b4e57c0a371b74d2c8a9dd2c8f6c47ab53464c32·...·]-9">)</span><span·class="p">.</span><span·class="w">1615 &gt;·</span><span·class="nf">formatter</span><span·class="p"·data-group-id="8989097572-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="8989097572-8">)</span>[·...·truncated·by·diffoscope;·len:·439,·SHA:·75f03eb1fa36aa775412de42318fe1564f67ba2026108adad0101b6eed2cfe77·...·]-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.1/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.3/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.3/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="9578591485-1">(</span><span·class="p"·data-group-id="9578591485-2">[</span><span·class="p"·data-group-id="9578591485-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:·2d5e7c42963d6ac7e1a003298f57e27546a88644e95a0cf4985f5c4601e01607·...·]-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="0557290483-1">(</span><span·class="p"·data-group-id="0557290483-2">[</span><span·class="p"·data-group-id="0557290483-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:·f9763514e6b7517bd58dd4f6498fcd83a1c8d3edb38894c6c1793743a0ad9236·...·]-1">)</span><span·class="p">.</span><span·class="w">
1161 </span><span·class="p"·data-group-id="9578591485-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:·9535f708ac59bcccdf9f0551d41476f7d539fd9f41070ead20c397629d857c2d·...·]-6">]</span></code></pre>1161 </span><span·class="p"·data-group-id="0557290483-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:·412670a24bf1d4631237a33187d4bc8c63ed6bb9f469538f057e13317f3aee9b·...·]-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.3/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.3/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="9767990190-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="9767990190-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="5113789063-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="5113789063-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.3/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.3/doc/html/erlang.html#t:string/0">string</a>()
1215 ················when·Things·::·[Thing],·Thing·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:atom/0">atom</a>()·|·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:integer/0">integer</a>()·|·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:float/0">float</a>()·|·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:string/0">string</a>().</pre>1215 ················when·Things·::·[Thing],·Thing·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:atom/0">atom</a>()·|·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:integer/0">integer</a>()·|·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:float/0">float</a>()·|·<a·href="../../../../erts-15.2.3/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="8121112420-1">(</span><span·class="p"·data-group-id="8121112420-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:·49be25b0f9ddcb933f2fee1d1374a432e9f7b7e60c98913e2cb715aac7202cbb·...·]-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="2095283575-1">(</span><span·class="p"·data-group-id="2095283575-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:·c4540ce85cd30e327be0bcbf887e961569597246dd86a3d95876f25d6ce77adc·...·]-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.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Elem·::·T,·List·::·[T],·T·::·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>(),·Elem·::·T,·List·::·[T],·T·::·<a·href="../../../../erts-15.2.3/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="1056932843-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="1056932843-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="3021932477-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="3021932477-1">)</span><span·class="p">.</span><span·class="w">
1329 </span><span·class="p"·data-group-id="1056932843-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·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·786797e1e59286de49f7a979e866612f4b60b5dfe8b8c0c5d04ed4011c92fda6·...·]-2">]</span></code></pre>1329 </span><span·class="p"·data-group-id="3021932477-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·cl[·...·truncated·by·diffoscope;·len:·33,·SHA:·0454de45743bb8811bae152c605d9a29d02a8aaee808e9fc981140975577404f·...·]-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.3/doc/html/erlang.html#t:term/0">term</a>().</pre>1421 ·······················T·::·<a·href="../../../../erts-15.2.3/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="8159291229-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="8159291229-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="6848936299-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="6848936299-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
1427 ··</span><span·class="p"·data-group-id="8159291229-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="8159291229-2">}</span><span·class="w">·</span><span·class="o">=</span><span·cla[·...·truncated·by·diffoscope;·len:·1129,·SHA:·1f80f3a4d912dfe65b900c2e54cbf999d677c3a824fa5a71e0fd8e093d05d0f2·...·]9-3">)</span><span·class="p">,</span><span·class="w">1427 ··</span><span·class="p"·data-group-id="6848936299-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="6848936299-2">}</span><span·class="w">·</span><span·class="o">=</span><span·cla[·...·truncated·by·diffoscope;·len:·1129,·SHA:·d044d0082124f48113e146bbbe2609d0c38696f861b0c3b80b46e57ecc737e75·...·]9-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="3811427353-1">(</span><span·class="p"·data-group-id="3811427353-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="3811427353-2">]</span><span[·...·truncated·by·diffoscope;·len:·34,·SHA:·f0d85c3c1cd86ce851506cfc69e70714ad5b005b4b69ac4030f35423a71ba59a·...·]53-1">)</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="8387854753-1">(</span><span·class="p"·data-group-id="8387854753-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="8387854753-2">]</span><span[·...·truncated·by·diffoscope;·len:·34,·SHA:·eaa1960bb7385166fee261ca304a08e225197c75766257ff0a56ce6ba5a5d0b7·...·]53-1">)</span><span·class="p">.</span><span·class="w">
1429 </span><span·class="p"·data-group-id="3811427353-3">[</span><span·class="p"·data-group-id="3811427353-4">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="3811427353-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="3811427353-5">{</span><span·class="mi">2</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="3811427353-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="3811427353-6">{</span><span·class="mi">3</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="3811427353-6">}</span><span·class="p"·data-group-id="3811427353-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="1758125992-1">(</span><span·class="mi">10</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1758125992-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="1758125992-2">]</span><span·class="p"·data-group-id="1758125992-1">)</span><span·class="p">.</span><span·class="w"> 
1430 </span><span·class="p"·data-group-id="1758125992-3">[</span><span·class="p"·data-group-id="1758125992-4">{</span><span·class="mi">10</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="1758125992-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="1758125992-5">{</span><span·class="mi">11</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="1758125992-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="1758125992-6">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="1758125992-6">}</span><span·class="p"·data-group-id="1758125992-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="9290030833-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="9290030833-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="9290030833-2">]</span><span·class="p"·data-group-id="9290030833-1">)</span><span·class="p">.</span><span·class="w"> 
1431 </span><span·class="p"·data-group-id="9290030833-3">[</span><span·class="p"·data-group-id="9290030833-4">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="9290030833-4">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·467,·SHA:·5e739c4a6f0bd024207472b700b72d78cacf47703a3d054085410654b759a34b·...·]>1429 </span><span·class="p"·data-group-id="8387854753-3">[</span><span·class="p"·data-group-id="8387854753-4">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="8387854753-4">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·1044,·SHA:·61dbac97078c4423013f70ed506b901b606fa6d6b303534484dfaacb96f27985·...·]>
 1430 </span><span·class="p"·data-group-id="8719023813-3">[</span><span·class="p"·data-group-id="8719023813-4">{</span><span·class="mi">10</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="8719023813-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="8719023813-5">{</span><span·class="mi">11</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="8719023813-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="8719023813-6">{</span><span·class="mi">12</span><span·class="p">,</span><span·class="ss">c</span><span·class="p"·data-group-id="8719023813-6">}</span><span·class="p"·data-group-id="8719023813-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="7923454167-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="7923454167-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="7923454167-2">]</span><span·class="p"·data-group-id="7923454167-1">)</span><span·class="p">.</span><span·class="w">
 1431 </span><span·class="p"·data-group-id="7923454167-3">[</span><span·class="p"·data-group-id="7923454167-4">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="7923454167-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="7923454167-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="7923454167-5">}</span><span·class="p">,</span><span·class="p"·data-group-id="7923454167-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="7923454167-6">}</span><span·class="p"·data-group-id="7923454167-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.3/doc/html/erlang.html#t:term/0">term</a>().</pre>1491 ·······················Value·::·<a·href="../../../../erts-15.2.3/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="3314569982-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="3314569982-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="9614191374-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="9614191374-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="3314569982-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3314569982-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="3314569982-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="9614191374-2">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9614191374-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="9614191374-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="3314569982-4">(</span><span·class="n">Elem</span><span·class="p"·data-group-id="3314569982-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="9614191374-4">(</span><span·class="n">Elem</span><span·class="p"·data-group-id="9614191374-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="3314569982-5">[</span><span·class="n">Elem</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="3314569982-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="9614191374-5">[</span><span·class="n">Elem</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="9614191374-5">]</span><span·class="p">;</span><span·class="w">
1501 ···························</span><span·class="p"·data-group-id="3314569982-6">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="3314569982-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:·fd906682432106f8c9a7806bcee3453ff946d0eb5373db3ed8b8ad3fb33e227d·...·]-7">]</span><span·class="w">1501 ···························</span><span·class="p"·data-group-id="9614191374-6">{</span><span·class="ss">true</span><span·class="p">,</span><span·class="n">Value</span><span·class="p"·data-group-id="9614191374-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:·bff0791471a70dd32d2729f59b1eea97814958e76f9c30958d9e97c43f1b5122·...·]-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="3314569982-8">[</span><span·class="p"·data-group-id="3314569982-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="3314569982-2">)</span><span·class="p">.</span></code></pre><p><em>Example:[·...·truncated·by·diffoscope;·len:·1819,·SHA:·5e48882abe6982fc08c114f396abcddc99dce4adb19a549bf0bda91ef91519d2·...·]-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="9614191374-8">[</span><span·class="p"·data-group-id="9614191374-8">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">List1</span><span·class="p"·data-group-id="9614191374-2">)</span><span·class="p">.</span></code></pre><p><em>Example:[·...·truncated·by·diffoscope;·len:·1819,·SHA:·063ab2c61ab81fed4e4838c4d07cf9632c68f90ea5ca3a49139f3f429ab2af30·...·]-1">)</span><span·class="p">.</span><span·class="w">
1504 </span><span·class="p"·data-group-id="5339961263-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="5339961263-5">]</span></code></pre>1504 </span><span·class="p"·data-group-id="3120208087-5">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3120208087-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.3/doc/html/erlang.html#t:term/0">term</a>(),·B·::·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0">term</a>(),·B·::·<a·href="../../../../erts-15.2.3/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="6542073710-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="6542073710-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="7159189651-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="7159189651-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="6542073710-2">(</span><span·class="nf">map</span><span·class="p"·data-group-id="6542073710-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="6542073710-3">)</span[·...·truncated·by·diffoscope;·len:·1073,·SHA:·d738ef323a77a060e66d0e431aceb7cb701904b8b236b1b02b5b66350331d428·...·]-1">)</span><span·class="p">.</span><span·class="w">1560 ····</span><span·class="nf">append</span><span·class="p"·data-group-id="7159189651-2">(</span><span·class="nf">map</span><span·class="p"·data-group-id="7159189651-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="7159189651-3">)</span[·...·truncated·by·diffoscope;·len:·1073,·SHA:·e08e0cb8a35b141dc1bc38064e23bd83ab6d2cb1aef65aa3f6392e178ec7a481·...·]-1">)</span><span·class="p">.</span><span·class="w">
1561 </span><span·class="p"·data-group-id="3659908256-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:·2e50cc50389388c1f021d16c11a947abb7b31c104c71c691e0e4c68ce0ad26a8·...·]-5">]</span></code></pre>1561 </span><span·class="p"·data-group-id="2983891368-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:·28502b33ee51625fd8777fc212919bd5ea008f10192e38b8b72b9919df8606b8·...·]-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; 127297/168065 bytes (75.74%) of diff not shown.
205 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/doc/html/maps.html
    
Offset 731, 18 lines modifiedOffset 731, 18 lines modified
731 ····················Pred·::·fun((Key,·Value)·->·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:boolean/0">boolean</a>()),731 ····················Pred·::·fun((Key,·Value)·->·<a·href="../../../../erts-15.2.3/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="6873743536-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:·812,·SHA:·b308b641558568a4c36f3a22a998eb1b0f56e4fb3b77caafd9e96a9100241dd9·...·]6-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="4265712456-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:·812,·SHA:·be776c5b48e42dd9338450ccb39334f55d4ffd4935b2fae74f794ae6e26ec1c8·...·]6-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="6873743536-2">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="6873743536-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:·424,·SHA:·65550b0764b5da9455327fc59ce4b47953ea9a8bf51fe2c2ae6e91ed37623c74·...·]6-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="4265712456-2">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="4265712456-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:·424,·SHA:·9372439e1895e3ca391f63d73994032e0dda5af5990bcddacb06cefd7135fce6·...·]6-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="6873743536-5">(</span><span·class="n">Pred</span><span·class="p">,</span><span·class="n">M</span><span·class="p"·data-group-id="6873743536-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="4265712456-5">(</span><span·class="n">Pred</span><span·class="p">,</span><span·class="n">M</span><span·class="p"·data-group-id="4265712456-5">)</span><span·class="p">.</span><span·class="w">
739 </span><span·class="p"·data-group-id="6873743536-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:·83,·SHA:·b2453a3b98ddcb751bfffd9ac9c28312417e01c1c6bbb627a81ffbfba0c0341d·...·]6-6">}</span></code></pre>739 </span><span·class="p"·data-group-id="4265712456-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:·83,·SHA:·9146d0fe7f1c71a0318df8bf167f5b0460464149e8a396de6561b78c937604d7·...·]6-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="8147113990-1">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="8147113990-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:·978,·SHA:·485b0a028db32a82b208026bc32408ebc820e053e7882aec8123fe3ceda85231·...·]-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="6813283885-1">(</span><span·class="n">K</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="6813283885-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:·978,·SHA:·636c96c2a2e433db6c3d690a7ebdf3196be70aeec866f7b91bed74f169ce0088·...·]-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="8147113990-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:·307,·SHA:·a4aa07a23bbcc0e746e0fc09bea3676d082b45bed34b06dabbfcab4e7a5609b3·...·]-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="6813283885-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:·307,·SHA:·14b202161ca0c8474580356a6db0a32a6e230ab78fa273b82a526a3a65ec183c·...·]-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="8147113990-7">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="8147113990-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="6813283885-7">(</span><span·class="n">Fun</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="6813283885-7">)</span><span·class="p">.</span><span·class="w">
780 </span><span·class="p"·data-group-id="8147113990-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:·97,·SHA:·ade262062caa4463500916dc6bb87720e5aee3f6c07f57867e74a95ee6aea23d·...·]-8">}</span></code></pre>780 </span><span·class="p"·data-group-id="6813283885-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:·97,·SHA:·fb4a75f9e86bf9fcfce185efb9f84333aa9659792b40f21ee50b0ccdb5223d05·...·]-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="1529095237-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="1529095237-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="7768532252-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="7768532252-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="1529095237-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="1529095237-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="7768532252-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="7768532252-2">)</span><span·class="p">.</span><span·class="w">
810 </span><span·class="p"·data-group-id="1529095237-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="1529095237-3">}</span></code></pre>810 </span><span·class="p"·data-group-id="7768532252-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="mi">42</span><span·class="p"·data-group-id="7768532252-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="6798042184-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="6798042184-1">)</span><span·class="w">·</span><span·class="k">when</span><span·[·...·truncated·by·diffoscope;·len:·167,·SHA:·3f1c3139180b4ba6065f8c0f3c101aaab2c15cb0015a37180b29633196ea1bad·...·]-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="8036596178-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="8036596178-1">)</span><span·class="w">·</span><span·class="k">when</span><span·[·...·truncated·by·diffoscope;·len:·167,·SHA:·d70e648b895e2bfa998477cbb73019a295c60b6298770da253693af84dd44f51·...·]-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="6798042184-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:·b47ec91056ffad5f5c390e409df7c6813959d6b04ce2d16ee2ead6c6de0d2108·...·]-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="8036596178-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:·95c05ad968591dd2836149e4ab6f50c76a7349f793782c747ce1d24b5e8ae914·...·]-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="6798042184-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="6798042184-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="8036596178-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="8036596178-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.3/doc/html/erlang.html#t:list/0">list</a>(),·Value·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:list/0">list</a>(),·Value·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.3/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="3677505413-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:·d2c744faf9e3d5df61455a4e9e883502cdae33f7c112a9aa26ea98a7afcd2a71·...·]-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="9930521252-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:·b22ceda2ce85bee28c4a49707c4ce36a4e785444eb4fffe77a5be61c0bfadaf5·...·]-2">)</span><span·class="p">.</span><span·class="w">
915 </span><span·class="p"·data-group-id="3677505413-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:·9a7e6de746269bdf926772752532b197146d52dda1eb25f369c4b7fb718b7b97·...·]-3">}</span></code></pre>915 </span><span·class="p"·data-group-id="9930521252-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:·21856f894d17d20d7cafbc308134cabc623a6a77e254a09ce20cae8aa9186bbe·...·]-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.3/doc/html/erlang.html#t:term/0">term</a>(),·Value·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0">term</a>(),·Value·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.3/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="8965888517-1">[</span><span·class="p"·data-group-id="8965888517-2">{</span><span·class="s">&quot;a&quot;</span><span·class="p">,</span><span·class="ss">ignored</span><span·class="p"·data-group-id="8965888517-2">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·660,·SHA:·e41fe31a511377c502ecc26d130d793a571557767d65758b22082d31953b09b1·...·]-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="0612039945-1">[</span><span·class="p"·data-group-id="0612039945-2">{</span><span·class="s">&quot;a&quot;</span><span·class="p">,</span><span·class="ss">ignored</span><span·class="p"·data-group-id="0612039945-2">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·660,·SHA:·aed2753585ae6f15d6b0a36ff4d97055cabd99467e994ee89f701a17ed9ab4cf·...·]-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="8965888517-6">(</span><span·class="n">List</span><span·class="p"·data-group-id="8965888517-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="0612039945-6">(</span><span·class="n">List</span><span·class="p"·data-group-id="0612039945-6">)</span><span·class="p">.</span><span·class="w">
947 </span><span·class="p"·data-group-id="8965888517-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:·96fe6ac4d0932ed34b20230783ba5a14980252bad0ab1f6c3664a68746574e0c·...·]-7">}</span></code></pre>947 </span><span·class="p"·data-group-id="0612039945-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:·ac39b1b978db78160d3be8f48322f08300dd5af7b47a1355ac036a2456e83504·...·]-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.3/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:map/0">map</a>(),·Value·::·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0">term</a>(),·Map·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:map/0">map</a>(),·Value·::·<a·href="../../../../erts-15.2.3/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="2352132806-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:·274,·SHA:·a0f2b766ebe5bdc01cfe97568eed53092c3718cef4d5bdf0ab90e24ca57f6f8a·...·]06-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="8710259306-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:·274,·SHA:·a97a21801b34a690ff162cf26805e8728ae223a16482b147420c0919be25c7ee·...·]06-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="2352132806-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="2352132806-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="8710259306-2">(</span><span·class="n">Key</span><span·class="p">,</span><span·class="n">Map</span><span·class="p"·data-group-id="8710259306-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.1/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="7807730091-1">(</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7807730091-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="9574336266-1">(</span><span·class="ss">emp</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9574336266-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="7807730091-2">}</span><span·class="p"·data-group-id="7807730091-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:·34f2d9d92607d73918c3c57e40dee478a1fa25f00b259c18cd001c3a67a94330·...·]-2">}</span><span·class="p">,</span><span·class="w">161 ··············</span><span·class="ss">empyear</span><span·class="p"·data-group-id="9574336266-2">}</span><span·class="p"·data-group-id="9574336266-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:·4d7bd0b269419c73bfbbfa6c2969d5ee7693c55154cf7c6b374196e7255c5974·...·]-2">}</span><span·class="p">,</span><span·class="w">
162 ·</span><span·class="p"·data-group-id="4204676027-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:·3787dbb73b59b1831437197c51ffeff3b95512a542cf15f622ab549955a34b3c·...·]-3">}</span><span·class="p">,</span><span·class="w">162 ·</span><span·class="p"·data-group-id="2722800171-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:·af9f9f5f00fac8d82d49f1be5815cb77951ff8eec74ee813d1fd84906085861b·...·]-3">}</span><span·class="p">,</span><span·class="w">
163 ·</span><span·class="p"·data-group-id="4204676027-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:·fa7e96625c297f621b52fc0c532ae6e1b767e96f09bac41840b4df201b171905·...·]-4">}</span><span·class="p">,</span><span·class="w">163 ·</span><span·class="p"·data-group-id="2722800171-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:·1f81ac7f2e38260deaff3fabc305cdd4bd46e7f45aaa7a8d7e48196927479a3c·...·]-4">}</span><span·class="p">,</span><span·class="w">
164 ·</span><span·class="p"·data-group-id="4204676027-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:·98463eb802b00e8439a318efc325c89d13c569793f336d80d347abbabb5a9968·...·]-5">}</span><span·class="p">,</span><span·class="w">164 ·</span><span·class="p"·data-group-id="2722800171-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:·23299785bb7aa77da8820d9c22e5db2128d0f075937984045bf6402b7ea9b379·...·]-5">}</span><span·class="p">,</span><span·class="w">
165 ·</span><span·class="p"·data-group-id="4204676027-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:·4b46d0b8628b92b3833f6a51a196993fa7f6c0b20a6843d71f7f66635788af1f·...·]-6">}</span><span·class="p">,</span><span·class="w">165 ·</span><span·class="p"·data-group-id="2722800171-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:·236b37fe23a447f7024fc59b9c97a63f615db75db0336fdfbca7f70ca4d125da·...·]-6">}</span><span·class="p">,</span><span·class="w">
166 ·</span><span·class="p"·data-group-id="4204676027-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:·a7309eae7d70b91b7e5b99c2c579ecd909fc666b6380d3a887da76bd0c9fa3d8·...·]-7">}</span><span·class="p">,</span><span·class="w">166 ·</span><span·class="p"·data-group-id="2722800171-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:·864c650a5673301ecee221f41970cea308745c567ff696c4f127b8aeddd6d9b4·...·]-7">}</span><span·class="p">,</span><span·class="w">
167 ·</span><span·class="p"·data-group-id="4204676027-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:·8440d215614ce65c3aaae5240cbe8e6df0aef3045f8224aca8737605666d3078·...·]-8">}</span><span·class="p">,</span><span·class="w">167 ·</span><span·class="p"·data-group-id="2722800171-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:·f0a2e3c34a88a209f27d885e005142fa5843adbdc61dba6b5c74baeb0d41c56d·...·]-8">}</span><span·class="p">,</span><span·class="w">
168 ·</span><span·class="p"·data-group-id="4204676027-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:·5893854eb3bd8bd78d9a2be40ac3b407f135cd503dba1dab89681799b0d3d7d6·...·]-9">}</span><span·class="p">,</span><span·class="w">168 ·</span><span·class="p"·data-group-id="2722800171-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:·2deff01ab0a4638c2de8997e969b7d592a4298304b9fcee940f9bb3ae986f343·...·]-9">}</span><span·class="p">,</span><span·class="w">
169 ·</span><span·class="p"·data-group-id="4204676027-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:·f1de003c3cd31ca5c493009b575f3ff021b228294044f668edc7ae762ba9e373·...·]-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="2722800171-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:·51b3bfdfe4f65b49daf44ab50de831c73cf2e10adcfcaaba41fc61724e7b013f·...·]-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="0866160680-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0866160680-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:·846c28c9bad77d2851c471d0f7cc18bb0026883ce86b5dc5c25ce4b8725d8873·...·]-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="7187052439-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7187052439-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:·b93597f26a6e07d0f2f281fd5c026c39f81d120c2ed3a459dd1875ebdef56a60·...·]-1">)</span><span·class="p">.</span><span·class="w">
171 </span><span·class="p"·data-group-id="0866160680-3">[</span><span·class="p"·data-group-id="0866160680-4">[</span><span·class="s">&quot;011103&quot;</span><span·class="p"·data-group-id="0866160680-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="0866160680-5">[</span><span·clas[·...·truncated·by·diffoscope;·len:·125,·SHA:·e46fd3690b6adb5f5dfa405a0f2ced72de81b63571787b1212bc55e2a7553eef·...·]-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="7187052439-3">[</span><span·class="p"·data-group-id="7187052439-4">[</span><span·class="s">&quot;011103&quot;</span><span·class="p"·data-group-id="7187052439-4">]</span><span·class="p">,</span><span·class="p"·data-group-id="7187052439-5">[</span><span·clas[·...·truncated·by·diffoscope;·len:·125,·SHA:·b79b3a22f6aad964e0f3967c0b725b5cd502706154b4010eec49f348c5ab7cd1·...·]-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="1987852077-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="1987852077-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="1987852077-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·700,·SHA:·36f4b427c631810b5acb7d2956e4bc074817856d73ae500a2f22a4a84bfb2e23·...·]-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="3480328494-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3480328494-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="3480328494-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·700,·SHA:·492de0d2ecdceafe8a56f837388faed18863b426f9d048216f33a10db0db7082·...·]-4">]</span><span·class="p">;</span><span·class="w">
174 ·············</span><span·class="p"·data-group-id="1987852077-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="1987852077-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="3480328494-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="3480328494-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="1987852077-6">[</span><span·class="p"·data-group-id="1987852077-6">]</span><span·class="p">,</span><span·class="w">176 ··········</span><span·class="p"·data-group-id="3480328494-6">[</span><span·class="p"·data-group-id="3480328494-6">]</span><span·class="p">,</span><span·class="w">
177 ··········</span><span·class="ss">emp_tab</span><span·class="p"·data-group-id="1987852077-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="3480328494-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="2131710817-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2131710817-2">[</span><span·class="p"·data-group-id="2131710817-3">{</span><span·class="o">#</span><span·class="ss">emp</span[·...·truncated·by·diffoscope;·len:·995,·SHA:·961159246b148859e8ce5e7b095b8692e57f4dadb9092d2ec17f1463209fc2b0·...·]-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="2555949836-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2555949836-2">[</span><span·class="p"·data-group-id="2555949836-3">{</span><span·class="o">#</span><span·class="ss">emp</span[·...·truncated·by·diffoscope;·len:·995,·SHA:·01427ac7ee3b57661069e801f72394acd754d2fac89cfdcb34c8e20a1965a33b·...·]-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="9296528896-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="9296528896-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="1706294245-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="1706294245-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="9296528896-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="9296528896-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="1706294245-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="1706294245-3">(</span><span·class="w">
194 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="9296528896-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="9296528896-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:·266,·SHA:·d1344ee3746eb1f40b17ebb410497bacd6d3d17e5a52c6ed1b82dd6a3cd22fed·...·]-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="1706294245-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="1706294245-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:·266,·SHA:·32d9be621c024e3ae35bcdb7c3b0d25ff11a028d2d9f3dbfc33ae4f533356adb·...·]-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="9296528896-3">)</span><span·class="p"·data-group-id="9296528896-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="1706294245-3">)</span><span·class="p"·data-group-id="1706294245-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="8668289573-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8668289573-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="8668289573-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·900,·SHA:·1a154126aed04a6eda57a5c7a4dd7353df88ee34eb5c5f670b64c3f424f987ef·...·]-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="4551978369-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4551978369-2">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="4551978369-3">{</span><span·class="ss">empno</span><span·class="w">·</sp[·...·truncated·by·diffoscope;·len:·900,·SHA:·b2dbbee4f72be13a8428777c4a774feeb7a89a2cf92fb7e51d1c4d1250f8ef1f·...·]-4">]</span><span·class="p">;</span><span·class="w">
220 ··················</span><span·class="p"·data-group-id="8668289573-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="8668289573-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="4551978369-5">(</span><span·class="p">_</span><span·class="p">,</span><span·class="n">Acc</span><span·class="p"·data-group-id="4551978369-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="8668289573-6">[</span><span·class="p"·data-group-id="8668289573-6">]</span><span·class="p">,</span><span·class="w">222 ··········</span><span·class="p"·data-group-id="4551978369-6">[</span><span·class="p"·data-group-id="4551978369-6">]</span><span·class="p">,</span><span·class="w">
223 ··········</span><span·class="ss">emp_tab</span><span·class="p"·data-group-id="8668289573-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="4551978369-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="4262219214-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4262219214-2">[</span><span·class="p"·data-group-id="4262219214-3">{</span><span·class="o">#</span><span·class="ss">emp</spa[·...·truncated·by·diffoscope;·len:·551,·SHA:·7e028cbb30d89ba55c361e51c04f67a15ce1b4fc93ebc4b03da3fd6ca79dfb73·...·]-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="8311973820-1">(</span><span·class="ss">emp_tab</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8311973820-2">[</span><span·class="p"·data-group-id="8311973820-3">{</span><span·class="o">#</span><span·class="ss">emp</spa[·...·truncated·by·diffoscope;·len:·551,·SHA:·a5c6e357ed72c5a174c2e35dfe07c0aa297d89ca1bee05274aa79e78d1aed3ff·...·]-4">}</span><span·class="p">,</span><span·class="w">
226 ·····················</span><span·class="p"·data-group-id="4262219214-5">[</span><span·class="p"·data-group-id="4262219214-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:·26a68f642dc87e2d9b327be6661e918241ebad4387dc30e591b5b700db4bfe64·...·]-5">]</span><span·class="p">,</span><span·class="w">226 ·····················</span><span·class="p"·data-group-id="8311973820-5">[</span><span·class="p"·data-group-id="8311973820-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:·7d6e8438d9a6863e1e901c1e577763a4958decaba5520663b611530ed8378fd9·...·]-5">]</span><span·class="p">,</span><span·class="w">
227 ·····················</span><span·class="p"·data-group-id="4262219214-7">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="4262219214-7">]</span><span·class="p"·data-group-id="4262219214-3">}</span><span·class="p"·data-group-id="4262219214-2">]</span><span·class="p"·data-group-id="42622192[·...·truncated·by·diffoscope;·len:·2,·SHA:·8527a891e224136950ff32ca212b45bc93f69fbb801c3b1ebedac52775f99e61·...·]-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="8311973820-7">[</span><span·class="ss">&#39;$1&#39;</span><span·class="p"·data-group-id="8311973820-7">]</span><span·class="p"·data-group-id="8311973820-3">}</span><span·class="p"·data-group-id="8311973820-2">]</span><span·class="p"·data-group-id="83119738[·...·truncated·by·diffoscope;·len:·2,·SHA:·f5ca38f748a1d6eaf726b8a42fb575c3c71f1864a8143301782de13da2d9202b·...·]-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="4801663682-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="4801663682-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="6059277897-1">(</span><span·class="s">&quot;stdlib/include/ms_transform.hrl&quot;</span><span·class="p"·data-group-id="6059277897-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="4801663682-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="4801663682-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="6059277897-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="6059277897-3">(</span><span·class="w">
231 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="4801663682-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="4801663682-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:·5f1ffe01cbdc5d626fce20dc2529e09cdaf16d2c33d1318ce96049f5ca26c16b·...·]-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="6059277897-4">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="6059277897-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:·41b9e8e2f3966961b03aa6067d76ea03fb83201758ba4d5926091acf8eedfb35·...·]-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="4801663682-3">)</span><span·class="p"·data-group-id="4801663682-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="6059277897-3">)</span><span·class="p"·data-group-id="6059277897-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="5476411889-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="5476411889-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="7455671384-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="7455671384-2">(</span><span·class="w">
242 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="5476411889-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="5476411889-4">{</span><span·class="ss">empno</span><sp[·...·truncated·by·diffoscope;·len:·362,·SHA:·f0717f3d2f03d4bef4cb5835782514577b502d36e740cca2913f3880888ca81f·...·]-3">)</span><span·class="w">242 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="7455671384-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="7455671384-4">{</span><span·class="ss">empno</span><sp[·...·truncated·by·diffoscope;·len:·362,·SHA:·c6501fed5514a23f56700110a7db2178305db126910dddfe7b2ebc448d5eb87b·...·]-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="5476411889-2">)</span><span·class="p"·data-group-id="5476411889-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="7455671384-2">)</span><span·class="p"·data-group-id="7455671384-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="3605003932-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="3605003932-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="0264542377-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="0264542377-2">(</span><span·class="w">
261 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="3605003932-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="3605003932-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:·320,·SHA:·e66f848661f0ee7545bd3254d0ead86571a42dc5bc44d5f68ccecfc3e1667a56·...·]-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="0264542377-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="0264542377-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:·320,·SHA:·93418970c6589e92d540707ac1b058e98efbda0bf0e9bd8bcc2e10a8261f6ac1·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
262 ······························</span><span·class="p"·data-group-id="3605003932-6">{</span><span·class="p"·data-group-id="3605003932-7">[</span><span·class="sc">$0</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="3605003932-7">]</span><span·class="p">,</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·197,·SHA:·b5e49bf4f2ed12216c4a5b8160b7f708bcaaa3de558db2fc18f1b759d69c964b·...·]-6">}</span><span·class="w">262 ······························</span><span·class="p"·data-group-id="0264542377-6">{</span><span·class="p"·data-group-id="0264542377-7">[</span><span·class="sc">$0</span><span·class="p">|</span><span·class="n">Rest</span><span·class="p"·data-group-id="0264542377-7">]</span><span·class="p">,</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·197,·SHA:·6ba4f8753f2a3894dd4f1bd659f09791060c47e4b68c8013e3900cc494c8ccc1·...·]-6">}</span><span·class="w">
263 ······················</span><span·class="k">end</span><span·class="p"·data-group-id="3605003932-2">)</span><span·class="p"·data-group-id="3605003932-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="0264542377-2">)</span><span·class="p"·data-group-id="0264542377-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="7987395468-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="7987395468-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="4582462754-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="4582462754-2">(</span><span·class="w">
277 ······················</span><span·class="nf">fun</span><span·class="p"·data-group-id="7987395468-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="7987395468-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:·5800e1fa667968722cde093d8783c27df8b519835d1115b26ca6612cbcf3e8e0·...·]-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="4582462754-3">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="4582462754-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:·819ba2c91f2a608ded58276e3a304974731d53bfbe3f02a465e28e3bf9b7aa1c·...·]-3">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
278 ······························</span><span·class="p"·data-group-id="7987395468-5">{</span><span·class="ss">guru</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="7987395468-5">}</span><span·class="p">;</span><span·class="w">278 ······························</span><span·class="p"·data-group-id="4582462754-5">{</span><span·class="ss">guru</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="4582462754-5">}</span><span·class="p">;</span><span·class="w">
279 ·························</span><span·class="p"·data-group-id="7987395468-6">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="7987395468-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:·46938e43798389dd287c637ebfd057af737124fccfaa5bb0493adeedfff96537·...·]-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="4582462754-6">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="4582462754-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:·77413237e00bd0899910e48262d8498cadf852b53136de21568c3b7c5054141d·...·]-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="7987395468-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="7987395468-8">}</span><span·class="p">;</span><span·class="w">280 ······························</span><span·class="p"·data-group-id="4582462754-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="4582462754-8">}</span><span·class="p">;</span><span·class="w">
281 ·························</span><span·class="p"·data-group-id="7987395468-9">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="7987395468-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:·8cab2544be9b4ac21aae082c9b9b532a5ecf2f21bf81d9784080ada26c6333b9·...·]-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="4582462754-9">(</span><span·class="o">#</span><span·class="ss">emp</span><span·class="p"·data-group-id="4582462754-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:·d93e29ceb39347439a4e733a56e0e6d4867903a26778d4a2ecb37148ec376b19·...·]-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.1/doc/html/notes.html
    
Offset 147, 33 lines modifiedOffset 147, 33 lines modified
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>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">152 <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">
153 </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">153 </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">
154 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="6882595544-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="6882595544-1">)</span><span·class="p">.</span><span·class="w">154 &gt;·</span><span·class="n">F</span><span·class="p"·data-group-id="9046906066-1">(</span><span·class="ss">a</span><span·class="p"·data-group-id="9046906066-1">)</span><span·class="p">.</span><span·class="w">
155 </span><span·class="ss">true</span><span·class="gp·unselectable">155 </span><span·class="ss">true</span><span·class="gp·unselectable">
156 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">156 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">
157 </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">157 </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">
158 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="6882595544-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="6882595544-2">)</span><span·class="p">.</span><span·class="w">158 4&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="9046906066-2">(</span><span·class="mi">42</span><span·class="p"·data-group-id="9046906066-2">)</span><span·class="p">.</span><span·class="w">
159 </span><span·class="gt">**·exception·error:·undefined·shell·command·id/1</span><span·class="gp·unselectable">159 </span><span·class="gt">**·exception·error:·undefined·shell·command·id/1</span><span·class="gp·unselectable">
160 5&gt;·</span><span·class="nf">id</span><span·class="p"·data-group-id="6882595544-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="6882595544-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">160 5&gt;·</span><span·class="nf">id</span><span·class="p"·data-group-id="9046906066-3">(</span><span·class="n">I</span><span·class="p"·data-group-id="9046906066-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">
161 </span><span·class="ss">ok</span><span·class="gp·unselectable">161 </span><span·class="ss">ok</span><span·class="gp·unselectable">
162 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="6882595544-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="6882595544-4">)</span><span·class="p">.</span><span·class="w">162 6&gt;·</span><span·class="n">Id</span><span·class="p"·data-group-id="9046906066-4">(</span><span·class="mi">42</span><span·class="p"·data-group-id="9046906066-4">)</span><span·class="p">.</span><span·class="w">
163 </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">163 </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">
164 ··<a·href="#improvements-and-new-features"·class="hover-link">164 ··<a·href="#improvements-and-new-features"·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">Improvements·and·New·Features</span>167 ··<span·class="text">Improvements·and·New·Features</span>
168 </h3>168 </h3>
169 <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="6067188385-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="6067188385-1">)</span><span·class="p">.</span><span·class="w">169 <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="6638065391-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="6638065391-1">)</span><span·class="p">.</span><span·class="w">
170 </span><span·class="w">170 </span><span·class="w">
171 ··</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="6067188385-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="6067188385-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Minimum</span><span·class="w">171 ··</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="6638065391-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="6638065391-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="n">Minimum</span><span·class="w">
172 ···············</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="6067188385-3">(</span><span·class="p"·data-group-id="6067188385-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·clas[·...·truncated·by·diffoscope;·len:·420,·SHA:·d06ca71bc1fe978f42297156fc1b33d3919c24ea798286ef7241e020bf9ca291·...·]-5">)</span><span·class="p">.</span><span·class="w">172 ···············</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="6638065391-3">(</span><span·class="p"·data-group-id="6638065391-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·clas[·...·truncated·by·diffoscope;·len:·420,·SHA:·d1ddb5afa8a9dcfd7ff4d5b035443336001c18a6781a2b9f64d0640c72d455c7·...·]-5">)</span><span·class="p">.</span><span·class="w">
  
173 ··</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.3/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>·and173 ··</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.3/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
174 <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.3/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">174 <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.3/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">
175 ··<a·href="#stdlib-6-1-2"·class="hover-link">175 ··<a·href="#stdlib-6-1-2"·class="hover-link">
176 ····<i·class="ri-link-m"·aria-hidden="true"></i>176 ····<i·class="ri-link-m"·aria-hidden="true"></i>
177 ··</a>177 ··</a>
178 ··<span·class="text">STDLIB·6.1.2</span>178 ··<span·class="text">STDLIB·6.1.2</span>
Offset 245, 16 lines modifiedOffset 245, 16 lines modified
245 <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">245 <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">
246 ··<a·href="#improvements-and-new-features-2"·class="hover-link">246 ··<a·href="#improvements-and-new-features-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">Improvements·and·New·Features</span>249 ··<span·class="text">Improvements·and·New·Features</span>
250 </h3>250 </h3>
251 <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.251 <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.
252 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="0795192288-1">(</span><span·class="p"·data-group-id="0795192288-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">252 For·example,·given:</p><pre><code·class="makeup·erlang"·translate="no"><span·class="nf">a</span><span·class="p"·data-group-id="9607161999-1">(</span><span·class="p"·data-group-id="9607161999-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">
253 </span><span·class="nf">a</span><span·class="p"·data-group-id="0795192288-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="0795192288-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·mismatch253 </span><span·class="nf">a</span><span·class="p"·data-group-id="9607161999-2">(</span><span·class="p">_</span><span·class="p"·data-group-id="9607161999-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
254 %····6|·a(_)·-&gt;·error.254 %····6|·a(_)·-&gt;·error.
255 %·····|·^</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?255 %·····|·^</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?
256 %····6|·a(_)·-&gt;·error.256 %····6|·a(_)·-&gt;·error.
257 %·····|·^</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;257 %·····|·^</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;
258 ···a258 ···a
259 ···b259 ···b
260 ···c260 ···c
Offset 269, 30 lines modifiedOffset 269, 30 lines modified
269 ····.269 ····.
270 ····.270 ····.
271 ····.271 ····.
272 &lt;0.90.0&gt;··············erlang:apply/2························2586····75011····0272 &lt;0.90.0&gt;··············erlang:apply/2························2586····75011····0
273 my_label··············c:pinfo/2·······························51273 my_label··············c:pinfo/2·······························51
274 4&gt;·proc_lib:get_label(self()).274 4&gt;·proc_lib:get_label(self()).
275 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">275 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">
276 </span><span·class="p"·data-group-id="5267971006-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="5267971006-1">&gt;&gt;</span><span·class="gp·unselectable">276 </span><span·class="p"·data-group-id="8144695385-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="8144695385-1">&gt;&gt;</span><span·class="gp·unselectable">
277 2&gt;·</span><span·class="s">~b&quot;Björn&quot;</span><span·class="p">.</span><span·class="w">277 2&gt;·</span><span·class="s">~b&quot;Björn&quot;</span><span·class="p">.</span><span·class="w">
278 </span><span·class="p"·data-group-id="5267971006-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="5267971006-2">&gt;&gt;</span><span·class="gp·unselectable">278 </span><span·class="p"·data-group-id="8144695385-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="8144695385-2">&gt;&gt;</span><span·class="gp·unselectable">
279 3&gt;·</span><span·class="s">~S&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">279 3&gt;·</span><span·class="s">~S&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">
280 </span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="gp·unselectable">280 </span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="gp·unselectable">
281 4&gt;·</span><span·class="s">~B&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">281 4&gt;·</span><span·class="s">~B&quot;\s*(\w+)&quot;</span><span·class="p">.</span><span·class="w">
282 </span><span·class="p"·data-group-id="5267971006-3">&lt;&lt;</span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="p"·data-group-id="5267971006-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·282 </span><span·class="p"·data-group-id="8144695385-3">&lt;&lt;</span><span·class="s">&quot;\\s*(\\w+)&quot;</span><span·class="p"·data-group-id="8144695385-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·
283 <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.283 <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.
284 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·when284 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
285 <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·when285 <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
286 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="2028185840-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="2028185840-1">)</span><span·class="p">.</span></code></pre><p>Another·way·to·disable·the·<[·...·truncated·by·diffoscope;·len:·688,·SHA:·04da85ba9fd36cd838f34f0728945c1ebc50d4529091e844691eee18c0a32139·...·]-1">)</span><span·class="p">.</span><span·class="w">286 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="7983487778-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="7983487778-1">)</span><span·class="p">.</span></code></pre><p>Another·way·to·disable·the·<[·...·truncated·by·diffoscope;·len:·688,·SHA:·0d494a32a42e977774e129559e7c1b04e8952db88956b6cac7f26700d2dc149d·...·]-1">)</span><span·class="p">.</span><span·class="w">
287 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7422413035-2">(</span><span·class="p"·data-group-id="7422413035-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="7422413035-3">]</span><span·class="p"·data-group-id="7422413035-2">)</span><span·class="p">.</span><span·class="w">287 </span><span·class="p">-</span><span·class="na">export</span><span·class="p"·data-group-id="7850421347-2">(</span><span·class="p"·data-group-id="7850421347-3">[</span><span·class="ss">f</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="7850421347-3">]</span><span·class="p"·data-group-id="7850421347-2">)</span><span·class="p">.</span><span·class="w">
288 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="7422413035-4">(</span><span·class="ss">r</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7422413035-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·108,·SHA:·9ec26d075b2c9c5fcb003d9bd8643992d66610abeb61a8b1c03ed0de191fd757·...·]-4">)</span><span·class="p">.</span><span·class="w">288 </span><span·class="p">-</span><span·class="na">record</span><span·class="p"·data-group-id="7850421347-4">(</span><span·class="ss">r</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7850421347-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p">,</span><span·class[·...·truncated·by·diffoscope;·len:·108,·SHA:·a4040fa8f017f42ddbf9de0e9cc246a95e914a9ade20ed0a0cc0673b2b35c7ce·...·]-4">)</span><span·class="p">.</span><span·class="w">
  
289 </span><span·class="nf">f</span><span·class="p"·data-group-id="7422413035-6">(</span><span·class="p"·data-group-id="7422413035-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">289 </span><span·class="nf">f</span><span·class="p"·data-group-id="7850421347-6">(</span><span·class="p"·data-group-id="7850421347-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
290 ····</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="7422413035-7">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="mi">1</span><span·class="p"·data-group-id="7422413035-7">}</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="7422413035-8">{</span><span·[·...·truncated·by·diffoscope;·len:·109,·SHA:·ab66e44f6e5f80bb2d583c39b5ca7614b4ffd04876be79d9f3fd4876c4b3eec0·...·]-8">}</span><span·class="p">.</span></code></pre><p>The·compiler·raises·the·following·warning:</p><pre><code·class="text">1&gt;·c(t).290 ····</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="7850421347-7">{</span><span·class="ss">a</span><span·class="o">=</span><span·class="mi">1</span><span·class="p"·data-group-id="7850421347-7">}</span><span·class="o">#</span><span·class="ss">r</span><span·class="p"·data-group-id="7850421347-8">{</span><span·[·...·truncated·by·diffoscope;·len:·109,·SHA:·f3f8e72dadadc1fd111dfc3b8acd1719c2e8ac303b425a91893f49be8cfaa9c4·...·]-8">}</span><span·class="p">.</span></code></pre><p>The·compiler·raises·the·following·warning:</p><pre><code·class="text">1&gt;·c(t).
291 t.erl:6:12:·Warning:·expression·updates·a·literal291 t.erl:6:12:·Warning:·expression·updates·a·literal
292 %····6|·····#r{a=1}#r{b=2}.292 %····6|·····#r{a=1}#r{b=2}.
293 %·····|············^</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.6/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">293 %·····|············^</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.6/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">
294 ··<a·href="#stdlib-5-2-3-3"·class="hover-link">294 ··<a·href="#stdlib-5-2-3-3"·class="hover-link">
295 ····<i·class="ri-link-m"·aria-hidden="true"></i>295 ····<i·class="ri-link-m"·aria-hidden="true"></i>
296 ··</a>296 ··</a>
297 ··<span·class="text">STDLIB·5.2.3.3</span>297 ··<span·class="text">STDLIB·5.2.3.3</span>
123 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/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="0703929974-1">(</span><span·class="p"·data-group-id="0703929974-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="5467105444-1">(</span><span·class="p"·data-group-id="5467105444-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="0703929974-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0703929974-3">[</span><span·class="p"·data-group-id="0703929974-3">]</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·62,·SHA:·65f6b3339982255a4e7f9e84fb2c0317417795f26ebea13ca301102c17c21132·...·]4-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="5467105444-2">(</span><span·class="ss">files</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5467105444-3">[</span><span·class="p"·data-group-id="5467105444-3">]</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·62,·SHA:·289e08e75e5cc5b0440e361d4e78833bcd9a2ba14b698072805a3816b22c51c9·...·]4-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="0703929974-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="0703929974-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="5467105444-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="5467105444-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="0703929974-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="0703929974-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="5467105444-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="5467105444-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="0703929974-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="0703929974-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="5467105444-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="5467105444-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="0703929974-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="0703929974-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="5467105444-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="5467105444-7">)</span><span·class="p">.</span><span·class="w">
151 </span><span·class="p"·data-group-id="0703929974-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="0703929974-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="5467105444-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="5467105444-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="7876153796-1">(</span><span·class="p"·data-group-id="7876153796-2">[</span><span·class="p"·data-group-id="7876153796-3">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7876153796-4">[</span><s[·...·truncated·by·diffoscope;·len:·198,·SHA:·927ea8bebf1f71e1dd360671b5936dabfb52d738639cfeb66fdefe1775e707c6·...·]-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="5979163192-1">(</span><span·class="p"·data-group-id="5979163192-2">[</span><span·class="p"·data-group-id="5979163192-3">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5979163192-4">[</span><s[·...·truncated·by·diffoscope;·len:·198,·SHA:·dab29a6d915f3d28ed5bfa1a0f995ed5c4f6292f79df9ae77e34d20acef70a7b·...·]-1">)</span><span·class="p">.</span><span·class="w">
533 </span><span·class="p"·data-group-id="7876153796-5">[</span><span·class="p"·data-group-id="7876153796-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="7876153796-7">[</span><span·class="p"·data-group-id="7876153796-7">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·f61d04061ea2c8417695f15137dc2ccc422f28f3e3e880b8fb4ac6e58f6a7a53·...·]-5">]</span><span·class="gp·unselectable">533 </span><span·class="p"·data-group-id="5979163192-5">[</span><span·class="p"·data-group-id="5979163192-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="5979163192-7">[</span><span·class="p"·data-group-id="5979163192-7">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·9ee526e9b515dfe0d0c654b7d4241e3a0180606a8fa2159e488bed3e72b5edea·...·]-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="7876153796-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="7876153796-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="5979163192-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="5979163192-8">)</span><span·class="p">.</span><span·class="w">
535 </span><span·class="p"·data-group-id="7876153796-9">[</span><span·class="p"·data-group-id="7876153796-10">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="7876153796-11">[</span><span·class="mi">1</span><span·class="p"·data-group-id="7876153796-11">]</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·0234d3d9282f7a73547c2f1784ffea0e7ae35a7f57031f5742efc547caef0071·...·]-9">]</span><span·class="gp·unselectable">535 </span><span·class="p"·data-group-id="5979163192-9">[</span><span·class="p"·data-group-id="5979163192-10">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="5979163192-11">[</span><span·class="mi">1</span><span·class="p"·data-group-id="5979163192-11">]</spa[·...·truncated·by·diffoscope;·len:·97,·SHA:·056f1924d3afbdfb76fd47eef4f7e375c28274aa92432032405ff1757e6d118a·...·]-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="7876153796-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="7876153796-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="5979163192-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="5979163192-12">)</span><span·class="p">.</span><span·class="w">
537 </span><span·class="p"·data-group-id="7876153796-13">[</span><span·class="p"·data-group-id="7876153796-14">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="7876153796-15">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·147,·SHA:·720f305d748da6643bd9e14a9889847c533e5e6970e77450ee98c8f0146e4f85·...·]-13">]</span><span·class="gp·unselectable">537 </span><span·class="p"·data-group-id="5979163192-13">[</span><span·class="p"·data-group-id="5979163192-14">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="5979163192-15">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·147,·SHA:·de7cc191ae1d651141facfe812a9bd3adabc04ba1f7c0cee68e4afa0dc18ba8e·...·]-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="7876153796-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="7876153796-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="5979163192-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="5979163192-16">)</span><span·class="p">.</span><span·class="w">
539 </span><span·class="p"·data-group-id="7876153796-17">[</span><span·class="p"·data-group-id="7876153796-18">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="7876153796-19">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7876153796-19">]</span><span·class="p"·data-group-id="7876153796-18">}</span><span·class="p">,</span><span·class="p"·data-group-id="7876153796-20">{</span><span·class="ss">y</span><span·class="p">,</span><span·class="p"·data-group-id="7876153796-21">[</span><span·class="mi">3</span><span·class="p"·data-group-id="7876153796-21">]</span><span·class="p"·data-group-id="7876153796-20">}</span><span·class="p"·data-group-id="7876153796-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="2864344096-1">(</span><span·class="p"·data-group-id="2864344096-2">[</span><span·class="p"·data-group-id="2864344096-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="2864344096-3">}</span><span·class="p"·data-group-id="2864344096-2">]</span><span·class="p"·data-group-id="2864344096-1">)</span><span·class="p">.</span><span·class="w"> 
540 </span><span·class="p"·data-group-id="2864344096-4">[</span><span·class="p"·data-group-id="2864344096-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">no_list</span><span·class="p"·data-group-id="2864344096-5">}</span><span·class="p"·data-group-id="2864344096-4">]</[·...·truncated·by·diffoscope;·len:·33,·SHA:·b2e352d8309445f25b55be1913f1379d4d74b8b1a31e1190b1cf594ab0bdcba8·...·]">539 </span><span·class="p"·data-group-id="5979163192-17">[</span><span·class="p"·data-group-id="5979163192-18">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="5979163192-19">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·1255,·SHA:·674569130bd40ce953e1736756294f1282e42d9ad1c0b1dea71cab28404f83f8·...·]">
 540 </span><span·class="p"·data-group-id="1018943007-4">[</span><span·class="p"·data-group-id="1018943007-5">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">no_list</span><span·class="p"·data-group-id="1018943007-5">}</span><span·class="p"·data-group-id="1018943007-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="2864344096-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="2864344096-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="1018943007-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="1018943007-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="9480087832-1">(</span><span·class="p"·data-group-id="9480087832-2">[</span><span·class="p"·data-group-id="9480087832-3">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9480087832-4">[</span><span·class="p"·data-group-id="9480087832-4">]</span><span·class="p"·data-group-id="9480087832-3">}</span><span·class="p"·data-group-id="9480087832-2">]</span><span·class="p"·data-group-id="9480087832-1">)</span><span·class="p">.</span><span·class="w"> 
577 </span><span·class="p"·data-group-id="9480087832-5">[</span><span·class="p"·data-group-id="9480087832-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="9480087832-7">[</span><span·class="p"·data-group-id="9480087832[·...·truncated·by·diffoscope;·len:·146,·SHA:·289193b4495fd017cab9f7447fa46d64df134f9765b2e0599c7fa3b87ab70ad1·...·]">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"[·...·truncated·by·diffoscope;·len:·680,·SHA:·6c27d0e779c436b4118fbdd137e6e7fdafda296069ce828b96c532407c8b1d34·...·]">
 577 </span><span·class="p"·data-group-id="6189044389-5">[</span><span·class="p"·data-group-id="6189044389-6">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="6189044389-7">[</span><span·class="p"·data-group-id="6189044389-7">]</span><span·class="p"·data-group-id="6189044389-6">}</span><span·class="p"·data-group-id="6189044389-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="9480087832-8">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9480087832-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="948[·...·truncated·by·diffoscope;·len:·139,·SHA:·18fe148d4e8e8cd9840ab418917cc48ac669a810e2034eda5043b9f7c0a7745c·...·]-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="6189044389-8">(</span><span·class="ss">x</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6189044389-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="618[·...·truncated·by·diffoscope;·len:·139,·SHA:·51dace101b025301840134c23809b89a34d95a45a32c1d6240bb598105ed34b3·...·]-8">)</span><span·class="p">.</span><span·class="w">
579 </span><span·class="p"·data-group-id="9480087832-10">[</span><span·class="p"·data-group-id="9480087832-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="9480087832-12">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·147,·SHA:·a7f6a5712d4e4df61a8795ce7a23c34f830b0754c6d791fdfedbcfa840726946·...·]-10">]</span><span·class="gp·unselectable">579 </span><span·class="p"·data-group-id="6189044389-10">[</span><span·class="p"·data-group-id="6189044389-11">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="6189044389-12">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·147,·SHA:·93623b28b83e57f4fe5ef57fdc29c172e29237e7e404b304ae02b104653cb287·...·]-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="9480087832-13">(</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9480087832-14">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="9[·...·truncated·by·diffoscope;·len:·142,·SHA:·49240d7271db49791fd61e6882370e2aeee4b3ef5b8ac37a88f6e8b36976b02b·...·]-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="6189044389-13">(</span><span·class="ss">y</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6189044389-14">[</span><span·class="mi">3</span><span·class="p">,</span><span·class="mi">4</span><span·class="p"·data-group-id="6[·...·truncated·by·diffoscope;·len:·142,·SHA:·face841e3aed36e4d3990da9a130c346224f2df18843d26af27ce673fe50f0cb·...·]-13">)</span><span·class="p">.</span><span·class="w">
581 </span><span·class="p"·data-group-id="9480087832-15">[</span><span·class="p"·data-group-id="9480087832-16">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="9480087832-17">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·510,·SHA:·7e3f2b3c94e6c50a8d5e54501dc7e8e51c3c0c006db4a777716cbb2ce5c3fc53·...·]-15">]</span></code></pre>581 </span><span·class="p"·data-group-id="6189044389-15">[</span><span·class="p"·data-group-id="6189044389-16">{</span><span·class="ss">x</span><span·class="p">,</span><span·class="p"·data-group-id="6189044389-17">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><s[·...·truncated·by·diffoscope;·len:·510,·SHA:·ed4e913309a8fb4ad990dd2c4636b0be5d13dfc92cebb5cd41a4713f1bbba15f·...·]-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="6198426901-1">(</span><span·class="p"·data-group-id="6198426901-2">[</span><span·class="p"·data-group-id="6198426901-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:·368,·SHA:·6650703e18c75660bdf8fa9a03a8e7878b4476d979e18356ca5ef5b67b8b117e·...·]1-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="7791299351-1">(</span><span·class="p"·data-group-id="7791299351-2">[</span><span·class="p"·data-group-id="7791299351-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:·368,·SHA:·11d54a857f81025c9e3a55f4e4f6606fdb408ad0faf540124069c370c65dd8ca·...·]1-1">)</span><span·class="p">.</span><span·class="w">
608 </span><span·class="p"·data-group-id="6198426901-5">[</span><span·class="p"·data-group-id="6198426901-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6198426901-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·190,·SHA:·f348bb71338d71554757c4a08d86c23c6f97b2cb9308c6bea24430e0988750b7·...·]1-5">]</span><span·class="gp·unselectable">608 </span><span·class="p"·data-group-id="7791299351-5">[</span><span·class="p"·data-group-id="7791299351-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7791299351-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·190,·SHA:·595b7bb38b0200912cd2d89862d47747848e66f5543954d5c04efb121a6ce0ce·...·]1-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="6198426901-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="6198426901-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="7791299351-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="7791299351-8">)</span><span·class="p">.</span><span·class="w">
610 </span><span·class="p"·data-group-id="6198426901-9">[</span><span·class="p"·data-group-id="6198426901-10">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="6198426901-10">}</span><span·class="p"·data-group-id="6198426901-9">]</span></code></pre>610 </span><span·class="p"·data-group-id="7791299351-9">[</span><span·class="p"·data-group-id="7791299351-10">{</span><span·class="ss">b</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="7791299351-10">}</span><span·class="p"·data-group-id="7791299351-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="0066928191-1">(</span><span·class="p"·data-group-id="0066928191-2">[</span><span·class="p"·data-group-id="0066928191-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:·8fd61537f9ad778d698186e169b22b81a318c6455e2471d2c0d4d4746728df45·...·]-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="5200414873-1">(</span><span·class="p"·data-group-id="5200414873-2">[</span><span·class="p"·data-group-id="5200414873-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:·f9617f0f163d95bc5c25c32e0b335f48b4d9c3af1d1a4e428c0422b6ca28e8c4·...·]-1">)</span><span·class="p">.</span><span·class="w">
639 </span><span·class="p"·data-group-id="0066928191-5">[</span><span·class="p"·data-group-id="0066928191-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="0066928191-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·579457c5e75cdc51e1f624a74cd0a6932d4f72aa43d2aaec8f19d1f660ab8a63·...·]-5">]</span><span·class="gp·unselectable">639 </span><span·class="p"·data-group-id="5200414873-5">[</span><span·class="p"·data-group-id="5200414873-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5200414873-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·f5161d06aeba9f963bd65872da70b8cb3363d3494e155428692f4792d58b08d5·...·]-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="0066928191-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="0066928191-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="5200414873-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="5200414873-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="0066928191-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="0066928191-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="5200414873-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="5200414873-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.3/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.3/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="2757498526-1">(</span><span·class="p"·data-group-id="2757498526-2">[</span><span·class="p"·data-group-id="2757498526-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:·368,·SHA:·d50fd6b74adf6cbb61d0ebea134ca9d343dd6d5b02982cdb9b56ab9438864dc3·...·]6-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="7998152256-1">(</span><span·class="p"·data-group-id="7998152256-2">[</span><span·class="p"·data-group-id="7998152256-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:·368,·SHA:·fc2e7730fe2ef69e90bf99eec78f43720ee830e73e7ecf3a026b7c394b53dcd8·...·]6-1">)</span><span·class="p">.</span><span·class="w">
669 </span><span·class="p"·data-group-id="2757498526-5">[</span><span·class="p"·data-group-id="2757498526-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="2757498526-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·190,·SHA:·1b49df08cae91cf30b55e9619bbde1402a49a120884e8ac8e76b228818593135·...·]6-5">]</span><span·class="gp·unselectable">669 </span><span·class="p"·data-group-id="7998152256-5">[</span><span·class="p"·data-group-id="7998152256-6">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="7998152256-6">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·190,·SHA:·c1bf2ad83fe3b0fb598e99b26cb699a37b6e77052ba8d13107d3575ae66d27d3·...·]6-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="2757498526-8">(</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="2757498526-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="7998152256-8">(</span><span·class="n">OrdDict1</span><span·class="p"·data-group-id="7998152256-8">)</span><span·class="p">.</span><span·class="w">
671 </span><span·class="p"·data-group-id="2757498526-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="2757498526-9">]</span></code></pre>671 </span><span·class="p"·data-group-id="7998152256-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="7998152256-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>
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.1/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="8932222463-1">(</span><span·class="ss">my_SUITE</span><span·class="p"·data-group-id="8932222463-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="0166294005-1">(</span><span·class="ss">my_SUITE</span><span·class="p"·data-group-id="0166294005-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="8932222463-2">(</span><span·class="ss">ct_suite</span><span·class="p"·data-group-id="8932222463-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="0166294005-2">(</span><span·class="ss">ct_suite</span><span·class="p"·data-group-id="0166294005-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="8932222463-3">(</span><span·class="p"·data-group-id="8932222463-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:·116,·SHA:·c89c2be8c8994830a43243528865f44b549ce0bedb0c2880262852a26d6914f0·...·]-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="0166294005-3">(</span><span·class="p"·data-group-id="0166294005-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:·116,·SHA:·35cae7755e7b4e65597420a8ad37482d441fed62467cf54fc0ed4d220fa62d39·...·]-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="8932222463-5">(</span><span·class="p"·data-group-id="8932222463-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:·506,·SHA:·bc49316c59d904919d7ddbad0a53d1361d2d1c03e1488c7f81e7d97c312e2e7a·...·]-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="0166294005-5">(</span><span·class="p"·data-group-id="0166294005-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:·506,·SHA:·c4d56997f382278c8d6175c956a5982ef0a60ab7523db039cf6e83035c8fb4e2·...·]-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="8932222463-7">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="8932222463-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="0166294005-7">(</span><span·class="s">&quot;common_test/include/ct.hrl&quot;</span><span·class="p"·data-group-id="0166294005-7">)</span><span·class="p">.</span><span·class="w">
  
170 </span><span·class="nf">groups</span><span·class="p"·data-group-id="8932222463-8">(</span><span·class="p"·data-group-id="8932222463-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="0166294005-8">(</span><span·class="p"·data-group-id="0166294005-8">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
171 ····</span><span·class="p"·data-group-id="8932222463-9">[</span><span·class="p"·data-group-id="8932222463-10">{</span><span·class="ss">quick</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8932222463-11">[</span><span·class="ss">parallel</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·c84e159243391a8d94888574d8cce2bf9270e820324b23921b3c8d1c31d5e1a8·...·]-11">]</span><span·class="p">,</span><span·class="w">171 ····</span><span·class="p"·data-group-id="0166294005-9">[</span><span·class="p"·data-group-id="0166294005-10">{</span><span·class="ss">quick</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0166294005-11">[</span><span·class="ss">parallel</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·78859ac1dd39585753f27751625752a83ae78c0ff68c5aa9b5925e07d3c5fd89·...·]-11">]</span><span·class="p">,</span><span·class="w">
172 ········</span><span·class="p"·data-group-id="8932222463-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:·264,·SHA:·95b2fc06f6dd9fec5bc24117a57c59f82421380a0be3265274a53c9282c5426b·...·]-9">]</span><span·class="p">.</span><span·class="w">172 ········</span><span·class="p"·data-group-id="0166294005-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:·264,·SHA:·b39bd29843ede6e0b1aedd45ad1a50f223c7d34625dbc9609a572e8045fc70b3·...·]-9">]</span><span·class="p">.</span><span·class="w">
  
173 </span><span·class="nf">all</span><span·class="p"·data-group-id="8932222463-13">(</span><span·class="p"·data-group-id="8932222463-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="0166294005-13">(</span><span·class="p"·data-group-id="0166294005-13">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
174 ····</span><span·class="p"·data-group-id="8932222463-14">[</span><span·class="p"·data-group-id="8932222463-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="8932222463-15">}</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·036607674a5bcae61a20b812f49e27cf13d9a81de87ef6f6f5226b611dc17ffb·...·]-14">]</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="p"·data-group-id="0166294005-14">[</span><span·class="p"·data-group-id="0166294005-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="0166294005-15">}</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·22,·SHA:·7e9767282dde45407281dade30a399432488b2b2d4993d24431367d103756385·...·]-14">]</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">basic</span><span·class="p"·data-group-id="8932222463-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8932222463-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="8932222463-17[·...·truncated·by·diffoscope;·len:·80,·SHA:·c834f05e9052c2670e8e24ec3323b289db1f536536d84c2c053bb7ca39686495·...·]-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="0166294005-16">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0166294005-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="0166294005-17[·...·truncated·by·diffoscope;·len:·80,·SHA:·c5973663ecf4f63e35c2f6cadbba3e23dd2fd73dd45095fc925a00a844ddb6c7·...·]-17">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
176 ····</span><span·class="p"·data-group-id="8932222463-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="89[·...·truncated·by·diffoscope;·len:·242,·SHA:·57e0c6b6c7764e92b9a7475c50d29cca2ae015943de11b25b7712fe2fabe4bb9·...·]-19">)</span><span·class="p">,</span><span·class="w">176 ····</span><span·class="p"·data-group-id="0166294005-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="01[·...·truncated·by·diffoscope;·len:·242,·SHA:·b884b10c31204caf76436f713304d078fc7233c0c957d8ab8d9e3ad5d8b28a35·...·]-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="8932222463-20">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="8932222463-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="0166294005-20">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="0166294005-20">)</span><span·class="p">.</span><span·class="w">
  
178 </span><span·class="nf">args</span><span·class="p"·data-group-id="8932222463-21">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8932222463-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="8932222463-22[·...·truncated·by·diffoscope;·len:·80,·SHA:·c834f05e9052c2670e8e24ec3323b289db1f536536d84c2c053bb7ca39686495·...·]-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="0166294005-21">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0166294005-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="0166294005-22[·...·truncated·by·diffoscope;·len:·80,·SHA:·c5973663ecf4f63e35c2f6cadbba3e23dd2fd73dd45095fc925a00a844ddb6c7·...·]-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="8932222463-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="89[·...·truncated·by·diffoscope;·len:·482,·SHA:·e13e7f4f0855a4ba43b2cd8659ae11853a0b50b3cf9047e3caa2eff68bba6c3b·...·]-24">)</span><span·class="p">,</span><span·class="w">180 ····</span><span·class="p"·data-group-id="0166294005-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="01[·...·truncated·by·diffoscope;·len:·482,·SHA:·eebaac76e914a7efc58939906a3183bf49f37b84e42771c3e086895276268681·...·]-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="8932222463-26">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="8932222463-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="0166294005-26">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="0166294005-26">)</span><span·class="p">.</span><span·class="w">
  
182 </span><span·class="nf">named</span><span·class="p"·data-group-id="8932222463-27">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8932222463-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="8932222463-28[·...·truncated·by·diffoscope;·len:·80,·SHA:·c834f05e9052c2670e8e24ec3323b289db1f536536d84c2c053bb7ca39686495·...·]-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="0166294005-27">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0166294005-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="0166294005-28[·...·truncated·by·diffoscope;·len:·80,·SHA:·c5973663ecf4f63e35c2f6cadbba3e23dd2fd73dd45095fc925a00a844ddb6c7·...·]-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="8932222463-29">(</span><span·class="ss">named_test</span><span·class="p"·data-group-id="8932222463-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="0166294005-29">(</span><span·class="ss">named_test</span><span·class="p"·data-group-id="0166294005-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="8932222463-30">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="8932222463-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="0166294005-30">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="0166294005-30">)</span><span·class="p">.</span><span·class="w">
  
186 </span><span·class="nf">start_node_impl</span><span·class="p"·data-group-id="8932222463-31">(</span><span·class="n">ActualTestCase</span><span·class="p"·data-group-id="8932222463-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="0166294005-31">(</span><span·class="n">ActualTestCase</span><span·class="p"·data-group-id="0166294005-31">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
187 ····</span><span·class="p"·data-group-id="8932222463-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="8932222463-32">}</span><sp[·...·truncated·by·diffoscope;·len:·635,·SHA:·7b1af06a9434ead408c62635f29885979fb9c919eb2f1c349e1befc28a6ded9d·...·]-33">)</span><span·class="p">,</span><span·class="w">187 ····</span><span·class="p"·data-group-id="0166294005-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="0166294005-32">}</span><sp[·...·truncated·by·diffoscope;·len:·635,·SHA:·5dd5066bfd119f35cf027e53e81ddfb8df1c299ab14e817fed80fe9f60095736·...·]-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="8932222463-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:·335,·SHA:·a79f3aff438aafb633b208cebe92f1af993007ab121b4493175d66b3d9334339·...·]-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="0166294005-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:·335,·SHA:·764ac2aaa838c1251004d10ffab6d7adb0377cc7b27beb8f5ff8b99e4fc41682·...·]-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="8932222463-38">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8932222463-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="8932222463-39[·...·truncated·by·diffoscope;·len:·80,·SHA:·c834f05e9052c2670e8e24ec3323b289db1f536536d84c2c053bb7ca39686495·...·]-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="0166294005-38">(</span><span·class="n">Config</span><span·class="p"·data-group-id="0166294005-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="0166294005-39[·...·truncated·by·diffoscope;·len:·80,·SHA:·c5973663ecf4f63e35c2f6cadbba3e23dd2fd73dd45095fc925a00a844ddb6c7·...·]-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="8932222463-40">(</span><span·class="p"·data-group-id="8932222463-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="0166294005-40">(</span><span·class="p"·data-group-id="0166294005-40">)</span><span·class="p">,</span><span·class="w">
193 ····</span><span·class="p"·data-group-id="8932222463-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="8932222463-41">}</span><sp[·...·truncated·by·diffoscope;·len:·458,·SHA:·dfe95f8d2aed4d5354311adc7daf4005cdc614767d23348c89673462303c5d42·...·]-42">)</span><span·class="p">,</span><span·class="w">193 ····</span><span·class="p"·data-group-id="0166294005-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="0166294005-41">}</span><sp[·...·truncated·by·diffoscope;·len:·458,·SHA:·6377a934b96cddfadae5d2a469d6f5a772358f260d6e4d9b88cf1faa142d2437·...·]-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="8932222463-44">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="8932222463-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="0166294005-44">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="0166294005-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="8932222463-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="8932222463-45">}</span><s[·...·truncated·by·diffoscope;·len:·758,·SHA:·43e5ab17d44d112510188bbb56b570a9b53df5ef0076fd1377395c492922814b·...·]-46">)</span><span·class="p">,</span><span·class="w">196 ····</span><span·class="p"·data-group-id="0166294005-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="0166294005-45">}</span><s[·...·truncated·by·diffoscope;·len:·758,·SHA:·92c937d79de0bd82f566eaf059130c3464b5543684b9a7631e741677099c6124·...·]-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="8932222463-49">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="8932222463-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="1277728651-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="1277728651-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="1277728651-2">(</span><span·class="n">Config</span><span·class="p"·data-group-id="1277728651-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="1277728651-3">[</span><span·class="o">?</span><span·class="n">CT_PEER</span><span·class="p"·data-group-id="1277728651-4">(</span><span·clas[·...·truncated·by·diffoscope;·len:·567,·SHA:·123536100d4b36ae6cee9534d963c0fd705377480e88f7466d69e770ec38dd02·...·]</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="0166294005-49">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="0166294005-49">)</span><span·class="p">.</span></code></pre><p>The·next·examp[·...·truncated·by·diffoscope;·len:·564,·SHA:·babb8ab54c13d2fe64f47fab40e43d53a27e404a64f1d080fb880d38a5519cd1·...·]</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="6391572784-3">[</span><span·class="o">?</span><span·class="n">CT_PEER</span><span·class="p"·data-group-id="6391572784-4">(</span><span·class="p"·data-group-id="6391572784-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="6391572784-6">{</span><span·class="nf">self</span><span·class="p"·data-group-id="6391572784-7">(</span><span·class="p"·data-group-id="6391572784-7">)</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">tag</span><span·class="p"·data-group-id="6391572784-6">}</span><span·class="p"·data-group-id="6391572784-5">}</span><span·class="p"·data-group-id="6391572784-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="1277728651-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="1277728651-8">)</span><span·class="p"·data-group-id="1277728651-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="6391572784-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="6391572784-8">)</span><span·class="p"·data-group-id="6391572784-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="1277728651-9">[</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="1277728651-10">{</span><span·class="ss">tag</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1277728651-11">{</sp[·...·truncated·by·diffoscope;·len:·279,·SHA:·e08138c9f5125c8bcd8ccb10ae1e984b135b3a98a4695829438312f8abf7b8f0·...·]-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="6391572784-9">[</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="6391572784-10">{</span><span·class="ss">tag</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6391572784-11">{</sp[·...·truncated·by·diffoscope;·len:·279,·SHA:·827e7cdda66f2baa7d0e4f59ce0ec87726253e06ac3136fc6796725d360a5c5d·...·]-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="1277728651-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="1277728651-12">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·67,·SHA:·b9fb89b9d2459b7ae7c68711790bb7416d274844a8f03eed73b10b29db2a2d86·...·]-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="6391572784-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="6391572784-12">}</span><span·class="w">·</span><span·class="o">&lt;-</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·67,·SHA:·6a770945ddfb8b7933e40a49dfb4a54e93f91629a07656e287f6ceb05d9dbf48·...·]-9">]</span><span·class="p">,</span><span·class="w">
203 ····</span><span·class="p"·data-group-id="1277728651-13">[</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="1277728651-14">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="1277728651-14">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·409,·SHA:·b3e628d09fe2f9f2f813bbb779644423354f0cbd7fb99cca039dbbbb709f5d07·...·]-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="6391572784-13">[</span><span·class="nc">peer</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="6391572784-14">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="6391572784-14">)</span><span·class="w">·<[·...·truncated·by·diffoscope;·len:·409,·SHA:·c89edd790b6dc0a9272fdf41e53143df1c34dc356ada882c088acaba094c9179·...·]-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="1925308316-1">(</span><span·class="s">&quot;ssh&quot;</span><span·class="p"·data-group-id="1925308316-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="6058354819-1">(</span><span·class="s">&quot;ssh&quot;</span><span·class="p"·data-group-id="6058354819-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="1925308316-2">(</span><span·class="p"·data-group-id="1925308316-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="1925308316-4">{</span><span·class="n">Ssh</sp[·...·truncated·by·diffoscope;·len:·331,·SHA:·074266fc4738441ace0c4b51bdaf4395c685b3833d88874f6f42a4f8ea042970·...·]-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="6058354819-2">(</span><span·class="p"·data-group-id="6058354819-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="6058354819-4">{</span><span·class="n">Ssh</sp[·...·truncated·by·diffoscope;·len:·331,·SHA:·e0b34fd09d8b0a090632359cb59079f44507f4b7b73aa13cc9bc201277054b89·...·]-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="1925308316-3">}</span><span·class="p"·data-group-id="1925308316-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="6058354819-3">}</span><span·class="p"·data-group-id="6058354819-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="8552234363-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="8552234363-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="8552234363-2">([·...·truncated·by·diffoscope;·len:·77,·SHA:·1fe46b0522f48cd61a27d4c675c88c10bc9e8de8a4c09db4dcbf24f2d6fd06f6·...·]-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="2990695799-1">(</span><span·class="n">Config</span><span·class="p"·data-group-id="2990695799-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="2990695799-2">([·...·truncated·by·diffoscope;·len:·77,·SHA:·f78976047c917429a1cbc4c63956ed9c865336ccafdefefb20d4a3c2d6594cb4·...·]-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="8552234363-3">(</span><span·class="s">&quot;docker&quot;</span><span·class="p"·data-group-id="8552234363-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="2990695799-3">(</span><span·class="s">&quot;docker&quot;</span><span·class="p"·data-group-id="2990695799-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="8552234363-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="8552234363-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="2990695799-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="2990695799-4">)</span><span·class="p">,</span><span·class="w">
211 ····</span><span·class="nf">build_release</span><span·class="p"·data-group-id="8552234363-5">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="8552234363-5">)</span><span·class="p">,</span><span·class="w">211 ····</span><span·class="nf">build_release</span><span·class="p"·data-group-id="2990695799-5">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="2990695799-5">)</span><span·class="p">,</span><span·class="w">
212 ····</span><span·class="nf">build_image</span><span·class="p"·data-group-id="8552234363-6">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="8552234363-6">)</span><span·class="p">,</span><span·class="w">212 ····</span><span·class="nf">build_image</span><span·class="p"·data-group-id="2990695799-6">(</span><span·class="n">PrivDir</span><span·class="p"·data-group-id="2990695799-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="8552234363-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="8552234363-7">}</span><span[·...·truncated·by·diffoscope;·len:·247,·SHA:·6896b31bb8660d768cdbb63d9f74cb71fc6b281293e546e5baa6125fd7b8db4e·...·]-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="2990695799-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="2990695799-7">}</span><span[·...·truncated·by·diffoscope;·len:·247,·SHA:·9b6f9542f3fb24a6ced112bf5a2528bd23cfaf781a807720dfee95783d3e2669·...·]-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="8552234363-10">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8552234363-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:·2f29911fcdb8c3f28f956231e08a9a109cb7ebbc96b4b2dde7df27fea721286d·...·]-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="2990695799-10">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2990695799-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:·5f94211591fea62ff2d22cb4a65ba930aa03eb724c89532d0b9fe18717921aeb·...·]-8">)</span><span·class="p">,</span><span·class="w">
217 ····</span><span·class="p"·data-group-id="8552234363-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="8552234363-12">}</span><[·...·truncated·by·diffoscope;·len:·252,·SHA:·a75f62e7683eec178b9cc99932d00d2b0334ab4d94a59985d2ec87dc27286062·...·]-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="2990695799-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="2990695799-12">}</span><[·...·truncated·by·diffoscope;·len:·252,·SHA:·528d5dca1927fac3132e8dc5803a7395070877e29539e61cee9bb81eb6b288de·...·]-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="8552234363-15">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8552234363-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:·648238117aa595fe4abd6b5ae77a94e14ae05fa4ef1aa169fe2d82953e48a8a2·...·]-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="2990695799-15">{</span><span·class="n">Docker</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2990695799-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:·a8f46609c3472002892df6f119bbd1efc89f328c534df2015cbfcdf474ce0535·...·]-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="8552234363-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="8552234363-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·510,·SHA:·df620e2bbba6663f70a781ff91e1570c43e11328ae7869dec47088b205c24af8·...·]-18">)</span><span·class="p">,</span><span·class="w">221 ····</span><span·class="p"·data-group-id="2990695799-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="2990695799-17">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·510,·SHA:·2f7b3953bad82537303ff9cfbfda30ed48993ac80286fb56b58c72d86d59c5df·...·]-18">)</span><span·class="p">,</span><span·class="w">
222 ····</span><span·class="p"·data-group-id="8552234363-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="8552234363-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·372,·SHA:·3adc53111faadb13f80752bd275f1e1df9ed8a85306a8c4e18374d6284a63272·...·]-21">)</span><span·class="p">,</span><span·class="w">222 ····</span><span·class="p"·data-group-id="2990695799-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="2990695799-20">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·372,·SHA:·44d667d7cdd7ef4d88c46fd79c424cdd4275e663164935c3f9b0264657bfae77·...·]-21">)</span><span·class="p">,</span><span·class="w">
223 ····</span><span·class="p"·data-group-id="8552234363-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="8552234363-22">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·349,·SHA:·5630d3673edce7eb2ff015d65fde8e64c481183c2d3724ec760dfacc5fbf4c71·...·]-23">)</span><span·class="p">,</span><span·class="w">223 ····</span><span·class="p"·data-group-id="2990695799-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="2990695799-22">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·349,·SHA:·3c02d36a9007764a2079c2b67ac90e58bb61c8d193d2f185ce3fccf0ba4ee1f4·...·]-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="8552234363-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:·32b3ffd9f719c48e194a53ba2dc0205428a4b10c42efd4a52a4dabbc956ec4ab·...·]-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="2990695799-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:·dd28744c8dce60d2daf2fb95143e1a58565f50fd247493bea709e097790f68d4·...·]-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="8552234363-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:·b52d201441a2a2188b387332e60c8fa8ca68871ad14225676361a5181668462c·...·]-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="2990695799-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:·45bfeb3da9827cbf139f599b1f16dbbb73aa6705ee180d57a9660807bc71fadb·...·]-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="8552234363-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:·5d6c54b0f7aa64d2373806ec31d33115a5502c21ee50dcd7ab877db9ff545352·...·]-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="2990695799-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:·a06e3f63eb776f0f79595cd21277f81bb3da962a0243707895f679b27933d8b3·...·]-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="8552234363-32">[</span><span·class="n">Node</span><span·class="p"·data-group-id="8552234363-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:·a41bb83650152b99a81bcf61bdadb5a1b35a556db99bb8d1e38f4983cbafae63·...·]-33">)</span><span·class="p">,</span><span·class="w">230 ····</span><span·class="p"·data-group-id="2990695799-32">[</span><span·class="n">Node</span><span·class="p"·data-group-id="2990695799-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:·2f2757b04e6674352e0ba6ec44a6ca93eb1032f45fa6d28b4012b8a002812cd8·...·]-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="8552234363-35">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="8552234363-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="2990695799-35">(</span><span·class="n">Peer2</span><span·class="p"·data-group-id="2990695799-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="8552234363-36">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="8552234363-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="2990695799-36">(</span><span·class="n">Peer</span><span·class="p"·data-group-id="2990695799-36">)</span><span·class="p">.</span><span·class="w">
  
234 </span><span·class="nf">build_release</span><span·class="p"·data-group-id="8552234363-37">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="8552234363-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="2990695799-37">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="2990695799-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="8552234363-38">(</span><span·class="ss">sasl</span><span·class="p"·data-group-id="8552234363-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="2990695799-38">(</span><span·class="ss">sasl</span><span·class="p"·data-group-id="2990695799-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="8552234363-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="8552234363-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="2990695799-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="2990695799-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="8552234363-40">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8552234363-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:·f32448f66a2babc9d1c9f07387b736a90a06e8d951c370a5983b847adffc611f·...·]-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="2990695799-40">{</span><span·class="ss">release</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2990695799-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:·1107d2ba5398172e2d4655c0736882d2fbd005f76fcb5bd763f4e7ac1223eea4·...·]-41">}</span><span·class="p">,</span><span·class="w">
240 ········</span><span·class="p"·data-group-id="8552234363-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="8552234363-43">(</span><span·class="s[·...·truncated·by·diffoscope;·len:·112,·SHA:·5439b7d14a4f77bd9111ad98c140e6f2e3db088bee99f26fb42de815f96b1885·...·]-42">}</span><span·class="p">,</span><span·class="w">240 ········</span><span·class="p"·data-group-id="2990695799-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="2990695799-43">(</span><span·class="s[·...·truncated·by·diffoscope;·len:·112,·SHA:·0c6681762131a36df41234bbd1d1f81a489d7c0a5a49d5dce039aecba80b938a·...·]-42">}</span><span·class="p">,</span><span·class="w">
241 ········</span><span·class="p"·data-group-id="8552234363-44">[</span><span·class="p"·data-group-id="8552234363-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="8552234363-46">{</span[·...·truncated·by·diffoscope;·len:·691,·SHA:·2c0ffe8561c442d32d7f10ab1642e2092d9cea451e042fafbc536a381fd3ad8e·...·]-45">}</span><span·class="w">241 ········</span><span·class="p"·data-group-id="2990695799-44">[</span><span·class="p"·data-group-id="2990695799-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="2990695799-46">{</span[·...·truncated·by·diffoscope;·len:·691,·SHA:·f273e4405fc35db65e012a689e8f3afaa061cb1ba73cb40ed6d7be8e595a3b40·...·]-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="8552234363-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="8552234363-48">]</[·...·truncated·by·diffoscope;·len:·100,·SHA:·64996bea51156fd1523dd46830d3d8baa81fc2fed4227f35bb40b333183356e7·...·]-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="2990695799-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="2990695799-48">]</[·...·truncated·by·diffoscope;·len:·100,·SHA:·87def3bb54869a4b9e8a0442ce65c613211a51c450dd20bc0c6ecbb508bce3f1·...·]-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="8552234363-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="8552234363-50">(</span><span·class="nc">lists</span><span·class="p">:</span><span·clas[·...·truncated·by·diffoscope;·len:·62,·SHA:·70464838e8a30aa9111ccdb6d68df1ebd205c485b914360f60228fc19a493b81·...·]-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="2990695799-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="2990695799-50">(</span><span·class="nc">lists</span><span·class="p">:</span><span·clas[·...·truncated·by·diffoscope;·len:·62,·SHA:·584ba2e3a0b4a13e89a91fe737d7231f23b102deb59850fa0f5e8cb2ae3a7283·...·]-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="8552234363-52">(</span><span·class="s">&quot;~tp.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8552234363-53">[</span><span·class="n">Release</span><span·class="p"·data-group-id="8552234363-53">]</span><span·cl[·...·truncated·by·diffoscope;·len:·195,·SHA:·c61f70cc1e9255574cfdd600ba4f817eef8d8922abc72c193320435b1dda7b89·...·]-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="2990695799-52">(</span><span·class="s">&quot;~tp.&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2990695799-53">[</span><span·class="n">Release</span><span·class="p"·data-group-id="2990695799-53">]</span><span·cl[·...·truncated·by·diffoscope;·len:·195,·SHA:·9d0376e069dbd7fcb135f9becfe95e7a9e79d839dc6d2016ba5ac6743e0f8b65·...·]-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="8552234363-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="8552234363-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="2990695799-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="2990695799-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="8552234363-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="8552234363-56">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·292,·SHA:·94734135d7bc34de25733925ded0230ba52745e11569197ab0467182bce76a9e·...·]-57">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">247 ····</span><span·class="p"·data-group-id="2990695799-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="2990695799-56">[</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·292,·SHA:·0f872e33bb79cd6082b2b69e4877be3240640f2ddcd972a8ca98d6cabeca052d·...·]-57">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">
248 ········</span><span·class="p"·data-group-id="8552234363-58">[</span><span·class="ss">silent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8552234363-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:·037ae615673eec64aacf38227ce066e1b87c13479c32dae53ccebeeefc4ed916·...·]-57">)</span><span·class="p">,</span><span·class="w">248 ········</span><span·class="p"·data-group-id="2990695799-58">[</span><span·class="ss">silent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2990695799-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:·243fea7339582e28b4fbc25def1b48e9bc2943449e19bbb5a1c8b651b5b5239a·...·]-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="8552234363-60">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8552234363-61">[</span><span·class="p"·data-group-id="8552234363-62">{</span><span·class="ss">erts</span><span·class="p[·...·truncated·by·diffoscope;·len:·375,·SHA:·e619acd4639b262ce7c67a58ae98eb81d65aa3e6c45e56c65cc25004407ed435·...·]-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="2990695799-60">(</span><span·class="n">RelFileNoExt</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="2990695799-61">[</span><span·class="p"·data-group-id="2990695799-62">{</span><span·class="ss">erts</span><span·class="p[·...·truncated·by·diffoscope;·len:·375,·SHA:·9531c8f68b3ed7f58be79543b1990ff9490aae6bec0d4e83375f222f84aec785·...·]-60">)</span><span·class="p">.</span><span·class="w">
  
251 </span><span·class="nf">build_image</span><span·class="p"·data-group-id="8552234363-64">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="8552234363-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="2990695799-64">(</span><span·class="n">Dir</span><span·class="p"·data-group-id="2990695799-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="8552234363-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="8552234363-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="2990695799-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="2990695799-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="8552234363-66">(</span><span·class="ss">version</span><span·class="p"·data-group-id="8552234363-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="2990695799-66">(</span><span·class="ss">version</span><span·class="p"·data-group-id="2990695799-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.1/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="9999374243-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="9999374243-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="8905677768-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="8905677768-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="9999374243-2">(</span><span·class="p"·data-group-id="9999374243-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9999374243-3">]</span><span·class="p"·data-group-id="9999374243-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="9999374243-4">(</span><span·class="p"·data-group-id="9999374243-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9999374243-5">]</span><span·class="p"·data-group-id="9999374243-4">)</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="8905677768-2">(</span><span·class="p"·data-group-id="8905677768-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="8905677768-3">]</span><span·class="p"·data-group-id="8905677768-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="8905677768-4">(</span><span·class="p"·data-group-id="8905677768-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="8905677768-5">]</span><span·class="p"·data-group-id="8905677768-4">)</span><span·class="p">.</span><span·class="w">
  
979 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="9999374243-6">(</span><span·class="p"·data-group-id="9999374243-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="8905677768-6">(</span><span·class="p"·data-group-id="8905677768-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="9999374243-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="9999374243-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·69956314a0b6d3a7d09eda7110a3aed0168787c673ca9e3f0f58fbe13623ffcf·...·]-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="8905677768-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="8905677768-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·69762684719b3ba23e2ff02cef3fb3525f833ff2393d3b33410f5541443d89ff·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
981 </span><span·class="nf">init</span><span·class="p"·data-group-id="9999374243-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="9999374243-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="8905677768-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="8905677768-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="9999374243-11">(</span><span·class="p"·data-group-id="9999374243-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="8905677768-11">(</span><span·class="p"·data-group-id="8905677768-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="9999374243-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9999374243-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:·fff57abfcec00310c1de24ebf3cbc646d5c3258b963cb41e9d45c03800a37ffc·...·]-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="8905677768-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8905677768-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:·d7642dfa6992948431aae6acef5ff6e9c33a38ec4d4eb5a485efe5c552b4a770·...·]-12">)</span><span·class="p">;</span><span·class="w">
985 ········</span><span·class="p"·data-group-id="9999374243-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="9999374243-15">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">985 ········</span><span·class="p"·data-group-id="8905677768-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="8905677768-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="9999374243-16">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="9999374243-16">)</span><span·class="w">986 ············</span><span·class="nf">exit</span><span·class="p"·data-group-id="8905677768-16">(</span><span·class="n">Reason</span><span·class="p"·data-group-id="8905677768-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="9999374243-17">(</span><span·class="p"·data-group-id="9999374243-17">)</span><span·class="p">.</span><span·class="w">988 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="8905677768-17">(</span><span·class="p"·data-group-id="8905677768-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.3/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.3/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="5241719959-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="5241719959-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="4126961926-1">(</span><span·class="ss">my_proc</span><span·class="p"·data-group-id="4126961926-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="5241719959-2">(</span><span·class="p"·data-group-id="5241719959-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="5241719959-3">]</span><span·class="p"·data-group-id="5241719959-2">)</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="4126961926-2">(</span><span·class="p"·data-group-id="4126961926-3">[</span><span·class="ss">start_link</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="4126961926-3">]</span><span·class="p"·data-group-id="4126961926-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="5241719959-4">(</span><span·class="p"·data-group-id="5241719959-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5241719959-5">]</span><span·class="p"·data-group-id="5241719959-4">)</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="4126961926-4">(</span><span·class="p"·data-group-id="4126961926-5">[</span><span·class="ss">init</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="4126961926-5">]</span><span·class="p"·data-group-id="4126961926-4">)</span><span·class="p">.</span><span·class="w">
  
1062 </span><span·class="nf">start_link</span><span·class="p"·data-group-id="5241719959-6">(</span><span·class="p"·data-group-id="5241719959-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="4126961926-6">(</span><span·class="p"·data-group-id="4126961926-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="5241719959-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="5241719959-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·cc04762efcfed68d2a51811477ea716bf1f50ad1e5a8cda0aa775e90d213ad45·...·]-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="4126961926-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="4126961926-8">[</span><span·class="nf">self</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·48f739726fa87a679cee8f79afee610e7971ab3695d72894b287a1c5eb0fa9c5·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
1064 </span><span·class="nf">init</span><span·class="p"·data-group-id="5241719959-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="5241719959-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="4126961926-10">(</span><span·class="n">Parent</span><span·class="p"·data-group-id="4126961926-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="5241719959-11">(</span><span·class="p"·data-group-id="5241719959-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="4126961926-11">(</span><span·class="p"·data-group-id="4126961926-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="5241719959-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5241719959-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:·e0df03d3c1c0bb7dd170e28aa03e4b7891d2b858da705a3a17fb746e8ba6f701·...·]-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="4126961926-12">(</span><span·class="n">Parent</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4126961926-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:·d8b941b321fa4c5d7f0446435defa9ffecaaa3062e358615568858d01f8661ff·...·]-12">)</span><span·class="p">;</span><span·class="w">
1068 ········</span><span·class="p"·data-group-id="5241719959-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="5241719959-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="4126961926-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="4126961926-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="5241719959-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="5241719959-17">{</span><span·class="nb">exit</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·00cb2cc518c508d32b20018eb481c23140b8105904c448ad2149831f2f28984e·...·]-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="4126961926-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="4126961926-17">{</span><span·class="nb">exit</spa[·...·truncated·by·diffoscope;·len:·175,·SHA:·3733fb1a89746c17de99776ddddf2894d20bcf8f9bfaca585f4dc0c627e1dbcc·...·]-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="5241719959-18">(</span><span·class="p"·data-group-id="5241719959-18">)</span><span·class="p">.</span><span·class="w">1071 ····</span><span·class="nf">loop</span><span·class="p"·data-group-id="4126961926-18">(</span><span·class="p"·data-group-id="4126961926-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.1/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.3/doc/html/erlang.html#t:term/0">term</a>(),·ListIn·::·[<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>()],·ListOut·::·[<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:term/0">term</a>(),·ListIn·::·[<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>()],·ListOut·::·[<a·href="../../../../erts-15.2.3/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="6241021601-1">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6241021601-2">[</span><span·class="p"·data-group-id="6241021601-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·1836,·SHA:·e8c8b553bd76eda87fe343f35393f37c876b23b12bb3155f20d3eb2446e04922·...·]-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="6839099577-1">(</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6839099577-2">[</span><span·class="p"·data-group-id="6839099577-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·c[·...·truncated·by·diffoscope;·len:·1836,·SHA:·3c94ecce5f35cec3f0a6d3961091feac6fcc372ed798048cf632cd14c5077666·...·]-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="4154405300-1">(</span><span·class="p"·data-group-id="4154405300-2">[</span><span·class="p"·data-group-id="4154405300-3">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4154405300-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="4154405300-4">]</span><span·class="p"·data-group-id="4154405300-3">}</span><span·class="p"·data-group-id="4154405300-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4154405300-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="4154405300-5">]</span><span·class="p"·data-group-id="4154405300-1">)</span><span·class="w"> 
617 </span><span·class="nf">expand</span><span·class="p"·data-group-id="4154405300-6">(</span><span·class="p"·data-group-id="4154405300-7">[</span><span·class="p"·data-group-id="4154405300-8">{</span><span·class="p"·data-group-id="4154405300-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="4154405300-9">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4154405300-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="4154405300-10">]</span><span·class="p"·data-group-id="4154405300-8">}</span><span·class="p"·data-group-id="4154405300-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4154405300-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="4154405300-11">]</span><span·class="p"·data-group-id="4154405300-6">)</span><span·class="w"> 
618 </span><span·class="nf">expand</span><span·class="p"·data-group-id="4154405300-12">(</span><span·class="p"·data-group-id="4154405300-13">[</span><span·class="p"·data-group-id="4154405300-14">{</span><span·class="p"·data-group-id="4154405300-15">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="4154405300-15">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4154405300-16">[</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="4154405300-16">]</span><span·class="p"·data-group-id="4154405300-14">}</span><span·class="p"·data-group-id="4154405300-13">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4154405300-17">[</span><span·class="ss">fie</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4154405300-18">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="4154405300-18">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">fum</span><span·class="p"·data-group-id="4154405300-17">]</span><span·class="p"·data-group-id="4154405300-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="7750833563-1">(</span><span·class="p"·data-group-id="7750833563-2">[</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·1333,·SHA:·4f7675771fe3fff8bf85d1398bf03496d1fe471135431ccbdf2d2fc057c43a7f·...·]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="61[·...·truncated·by·diffoscope;·len:·915,·SHA:·052825bb94405f18155e99fd07835c018f22e07b3a1178c80b4de5da419edae5·...·]
 617 </span><span·class="nf">expand</span><span·class="p"·data-group-id="6145335083-6">(</span><span·class="p"·data-group-id="6145335083-7">[</span><span·class="p"·data-group-id="6145335083-8">{</span><span·class="p"·data-group-id="6145335083-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="6145335083-9">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6145335083-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="6145335083-10">]</span><span·class="p"·data-group-id="6145335083-8">}</span><span·class="p"·data-group-id="6145335083-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6145335083-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="6145335083-11">]</span><span·class="p"·data-group-id="6145335083-6">)</span><span·class="w">
 618 </span><span·class="nf">expand</span><span·class="p"·data-group-id="6145335083-12">(</span><span·class="p"·data-group-id="6145335083-13">[</span><span·class="p"·data-group-id="6145335083-14">{</span><span·class="p"·data-group-id="6145335083-15">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="6145335083-15">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6145335083-16">[</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="6145335083-16">]</span><span·class="p"·data-group-id="6145335083-14">}</span><span·class="p"·data-group-id="6145335083-13">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6145335083-17">[</span><span·class="ss">fie</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6145335083-18">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="6145335083-18">}</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">fum</span><span·class="p"·data-group-id="6145335083-17">]</span><span·class="p"·data-group-id="6145335083-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="4391175117-1">(</span><span·class="p"·data-group-id="4391175117-2">[</span><span·class="p"·data-group-id="4391175117-3">{</span><span·class="p"·data-group-id="4391175117-4">{</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="4391175117-4">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4391175117-5">[</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="4391175117-5">]</span><span·class="p"·data-group-id="4391175117-3">}</span><span·class="p"·data-group-id="4391175117-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4391175117-6">[</span><span·class="p"·data-group-id="4391175117-7">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">false</span><span·class="p"·data-group-id="4391175117-7">}</span><span·class="p">,</span><span·class="w">·</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="4391175117-6">]</span><span·class="p"·data-group-id="4391175117-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.3/doc/html/erlang.html#t:term/0">term</a>()],·Keys·::·[<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>()],·Lists·::·[[<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>()]],·Rest·::·[<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>()].</pre>992 ···············when·List·::·[<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>()],·Keys·::·[<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>()],·Lists·::·[[<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:term/0">term</a>()]],·Rest·::·[<a·href="../../../../erts-15.2.3/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="7946560890-1">(</span><span·class="p"·data-group-id="7946560890-2">[</span><span·class="p"·data-group-id="7946560890-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:·79a65479aa66b740b2f5911e25755ba2b2328d824acb1f027ac4b881c22e44b1·...·]-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="9868730985-1">(</span><span·class="p"·data-group-id="9868730985-2">[</span><span·class="p"·data-group-id="9868730985-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:·76784ab9f1d3f5ddd048b4e8111a61e73f8a74a72ddb763c26ed139cb1cc9b34·...·]-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="7676643264-1">(</span><span·class="p"·data-group-id="7676643264-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7676643264-3">{</span><span·class="ss">b</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·1354,·SHA:·a0f2713c515b6e1abfa93a59855833fe81352ce7241ff1e16af0950623e3ffbb·...·]-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="0591662611-1">(</span><span·class="p"·data-group-id="0591662611-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0591662611-3">{</span><span·class="ss">b</span><span·class="p">,</span><span·[·...·truncated·by·diffoscope;·len:·1354,·SHA:·cc2e8e435d25a667d42aad5e2e7a71f81a876706e8776c284fb8acf1521cbe94·...·]-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.1/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="1905216512-1">(</span><span·class="p"·data-group-id="1905216512-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:·889ca459df2c3dcf6215e8398572811db0216bc85ae0f745e8fa9f379b815810·...·]-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="8529385244-1">(</span><span·class="p"·data-group-id="8529385244-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:·4ed4c9e41f1abf79e9eb07110a34e9ecf0fdc10ed513244bd37a9696d7767188·...·]-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="6832451169-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="6832451169-2">(</span><span·class="p"·data-group-id="6832451169-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·839,·SHA:·dde6abfa5d796a09e048dd65e22fdd6847d9d3d5f1336d9268f9ca274072149c·...·]-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="0420045097-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="0420045097-2">(</span><span·class="p"·data-group-id="0420045097-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·839,·SHA:·258607f947bc854eae7029f8b321970d39f9d6b45f8a73b6abad589ce6120424·...·]-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="1402909302-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="1402909302-2">(</span><span·class="p"·data-group-id="1402909302-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·791,·SHA:·42ae86058f4707611a4deb4cc3bb645ffdd88df59ecbab7d297a85d43ca18a23·...·]-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="6845226977-1">(</span><span·class="nc">qlc</span><span·class="p">:</span><span·class="nf">q</span><span·class="p"·data-group-id="6845226977-2">(</span><span·class="p"·data-group-id="6845226977-3">[</span><span·class="n">X</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·791,·SHA:·957925bb7ed69892d44449404419df99459c9ac958a4bb41e8ca1c87e2fef604·...·]-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="1402909302-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="1402909302-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="6845226977-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="6845226977-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="1402909302-7">(</span><span·class="n">C</span><span·class="p"·data-group-id="1402909302-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="6845226977-7">(</span><span·class="n">C</span><span·class="p"·data-group-id="6845226977-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="6006624905-1">(</span><span·class="p"·data-group-id="6006624905-2">[</span><span·class="p"·data-group-id="6006624905-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:·64d4dce9bdff4eba15ec789682213abc88490a3bd79e60602f09c2a8979f1678·...·]-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="0491939960-1">(</span><span·class="p"·data-group-id="0491939960-2">[</span><span·class="p"·data-group-id="0491939960-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:·aa54e26918d762a71895a3a2933877a3a3eb2344b74125e9d76f81bbfe9ac563·...·]-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">
303 ··········</span><span·class="p"·data-group-id="6006624905-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="6006624905-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="0491939960-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="0491939960-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="6006624905-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="6006624905-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="0491939960-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="0491939960-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="6006624905-2">]</span><span·class="p"·data-group-id="6006624905-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="0491939960-2">]</span><span·class="p"·data-group-id="0491939960-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="4633627921-1">(</span><span·class="p"·data-group-id="4633627921-2">[</span><span·class="p"·data-group-id="4633627921-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:·ef6a8b23a5d46c98e833b2e80fc39f868ee39c741e8e3f906134856e84fda3cd·...·]-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="3550498803-1">(</span><span·class="p"·data-group-id="3550498803-2">[</span><span·class="p"·data-group-id="3550498803-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:·4f8e119759008ce8d5c7942ed0a0272bc0b4a130fb2846b9602b95d89eea8f40·...·]-3">}</span><span·class="w">·</span><span·class="p">||</span><span·class="w">
314 ··········</span><span·class="p"·data-group-id="4633627921-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="4633627921-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="3550498803-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="3550498803-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="4633627921-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="4633627921-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="3550498803-5">{</span><span·class="n">Y1</span><span·class="p">,</span><span·class="n">Y2</span><span·class="p"·data-group-id="3550498803-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="4633627921-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="3550498803-2">]</span><span·class="p">,</span><span·class="w">
317 ······</span><span·class="p"·data-group-id="4633627921-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="4633627921-6">}</span><span·class="p"·data-group-id="4633627921-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="3550498803-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="3550498803-6">}</span><span·class="p"·data-group-id="3550498803-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="4251947561-1">(</span><span·class="p"·data-group-id="4251947561-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:·5c84967e9bfc4cb67bafc9f6a742b9c789f3664a53b94d9f03274663b319b7d0·...·]-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="5424841942-1">(</span><span·class="p"·data-group-id="5424841942-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:·a352f5666d735d9135a5022c852b63634a1e9db0cf8566959c09ca45fb4e5b24·...·]-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="7289956331-1">(</span><span·class="ss">gb_table</span><span·class="p"·data-group-id="7289956331-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="5890342218-1">(</span><span·class="ss">gb_table</span><span·class="p"·data-group-id="5890342218-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="7289956331-2">(</span><span·class="p"·data-group-id="7289956331-3">[</span><span·class="ss">table</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="7289956331-3">]</span><span·class="p"·data-group-id="7289956331-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="5890342218-2">(</span><span·class="p"·data-group-id="5890342218-3">[</span><span·class="ss">table</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5890342218-3">]</span><span·class="p"·data-group-id="5890342218-2">)</span><span·class="p">.</span><span·class="w">
  
356 </span><span·class="nf">table</span><span·class="p"·data-group-id="7289956331-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="7289956331-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="5890342218-4">(</span><span·class="n">T</span><span·class="p"·data-group-id="5890342218-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="7289956331-5">(</span><span·class="p"·data-group-id="7289956331-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="7289956331-6">(</span><span·class="nc">gb_[·...·truncated·by·diffoscope;·len:·429,·SHA:·2da4a086e2a80f22d442d766c5282f74d85e85a168a3306aaa7a12fe5e717a7e·...·]-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="5890342218-5">(</span><span·class="p"·data-group-id="5890342218-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="5890342218-6">(</span><span·class="nc">gb_[·...·truncated·by·diffoscope;·len:·429,·SHA:·0a16e9ec035dc8bfe865c6aac0136d316910a6362f6b5c77c580fc8aca852013·...·]-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="7289956331-9">(</span><span·class="ss">num_of_objects</span><span·class="p"·data-group-id="7289956331-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:·136,·SHA:·c416090bd5fb08d0dc5f6bdbbcad9351cade9bcff33fb43e54bc7b95a0d3cb1f·...·]-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="5890342218-9">(</span><span·class="ss">num_of_objects</span><span·class="p"·data-group-id="5890342218-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:·136,·SHA:·95b6361c27da441990636e1cf6f54338f01882e19babe0aef5da60dcd2206fdf·...·]-10">)</span><span·class="p">;</span><span·class="w">
359 ·················</span><span·class="p"·data-group-id="7289956331-11">(</span><span·class="ss">keypos</span><span·class="p"·data-group-id="7289956331-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="5890342218-11">(</span><span·class="ss">keypos</span><span·class="p"·data-group-id="5890342218-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="7289956331-12">(</span><span·class="ss">is_sorted_key</span><span·class="p"·data-group-id="7289956331-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="5890342218-12">(</span><span·class="ss">is_sorted_key</span><span·class="p"·data-group-id="5890342218-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="7289956331-13">(</span><span·class="ss">is_unique_objects</span><span·class="p"·data-group-id="7289956331-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="5890342218-13">(</span><span·class="ss">is_unique_objects</span><span·class="p"·data-group-id="5890342218-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="7289956331-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="7289956331-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="5890342218-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="5890342218-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="7289956331-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="7289956331-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="5890342218-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="5890342218-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="7289956331-16">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7289956331-17">(</span><span·class="n">K</span><span·class="p"·data-group-id="7289956331-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="5890342218-16">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5890342218-17">(</span><span·class="n">K</span><span·class="p"·data-group-id="5890342218-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="7289956331-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="7289956331-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="5890342218-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="5890342218-18">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
368 ··········································</span><span·class="p"·data-group-id="7289956331-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="7289956331-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·273,·SHA:·c7aad5795f1ee5950df263404b209364cd9155767415519b804559344845161b·...·]-20">]</span><span·class="p">;</span><span·class="w">368 ··········································</span><span·class="p"·data-group-id="5890342218-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="5890342218-19">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·273,·SHA:·c5031cd8fc2b0b27f288876fb899745fdd1f4c7497c9f5f7c38e72a01d5633d9·...·]-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="7289956331-22">[</span><span·class="p"·data-group-id="7289956331-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="5890342218-22">[</span><span·class="p"·data-group-id="5890342218-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="7289956331-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="5890342218-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="7289956331-23">(</span><span·class="p"·data-group-id="7289956331-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:·104,·SHA:·476fc6b86e5b6828628ca15493c2461f5c3d191e45103735e2130c57b722eb7f·...·]-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="5890342218-23">(</span><span·class="p"·data-group-id="5890342218-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:·104,·SHA:·bb91acaa4f0e02faa5a040eeb67da611bba32599245b4a895f652db704a277a2·...·]-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="7289956331-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="5890342218-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="7289956331-26">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="7289956331-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:·187,·SHA:·70b363876ce3e03f31fcc23349c61ed7f34614c1286d5d8e8751669c858d3ae3·...·]-25">)</span><span·class="p">,</span><span·class="w">376 ······································</span><span·class="p"·data-group-id="5890342218-26">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="5890342218-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:·187,·SHA:·9ec238302a09e37c21e07bacb43af278bff606a3b0a368824e123358571d0a9e·...·]-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="7289956331-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="7289956331-29">[</span><span·class="n">ValsS</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·df8b1c5db64862979a444f8f4589d22787fb47e8af4192dcfc215c2f89bb8f20·...·]-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="5890342218-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="5890342218-29">[</span><span·class="n">ValsS</span><sp[·...·truncated·by·diffoscope;·len:·92,·SHA:·89b74093338c143efefabecc3f31a8dd80f273acb9b095ee634fc7b7d07ce712·...·]-28">)</span><span·class="p">;</span><span·class="w">
378 ···········</span><span·class="p"·data-group-id="7289956331-30">(</span><span·class="p"·data-group-id="7289956331-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:·284,·SHA:·b11dc8fd56930052d8797d798da1eb7bf4073d929cf3303c9f19d51e241218a1·...·]-30">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">378 ···········</span><span·class="p"·data-group-id="5890342218-30">(</span><span·class="p"·data-group-id="5890342218-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:·284,·SHA:·dc4190a681c8637897ea9454996b3adebedf37f7682ee174db7e8b06ba698b38·...·]-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="7289956331-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="5890342218-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="7289956331-33">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="7289956331-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:·187,·SHA:·8519b5344708759b1c13d381f20291d3dd01eb02982cb49a9c2b1059d0e07aa4·...·]-32">)</span><span·class="p">,</span><span·class="w">380 ······································</span><span·class="p"·data-group-id="5890342218-33">[</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="5890342218-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:·187,·SHA:·c56dd6b9e55deaae429a153dfc53ccf2c58d8e7083c8c8ee5215c9154ed91276·...·]-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="7289956331-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="5890342218-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="7289956331-36">[</span><span·class="n">ValsS</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7289956331-37">[</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="7289956331-38">(</span><span·class="n">[·...·truncated·by·diffoscope;·len:·418,·SHA:·aa64c2d8f29ff22e2dc6c5ffede773b49bf52895f40d34c7fcb074045f9c21a4·...·]-35">)</span><span·class="w">385 ······························</span><span·class="p"·data-group-id="5890342218-36">[</span><span·class="n">ValsS</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5890342218-37">[</span><span·class="n">ElementFun</span><span·class="p"·data-group-id="5890342218-38">(</span><span·class="n">[·...·truncated·by·diffoscope;·len:·418,·SHA:·165173965fbd94829a602401fd2e68a78fd905e66da61804bca8124ce5a009a6·...·]-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="7289956331-39">(</span><span·class="n">TF</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7289956331-40">[</span><span·class="p"·data-group-id="7289956331-41">{</span><span·class="ss">info_fun</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·369,·SHA:·0eea9ef0ec5b44698e048ff8ece8d9f9af29394097d9ca803f4f540ae368fc92·...·]-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="5890342218-39">(</span><span·class="n">TF</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5890342218-40">[</span><span·class="p"·data-group-id="5890342218-41">{</span><span·class="ss">info_fun</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·369,·SHA:·12883d41d31a62e831063892906919658dbc53d6b3d42a301c593378adf9f3a2·...·]-42">}</span><span·class="p">,</span><span·class="w">
388 ···················</span><span·class="p"·data-group-id="7289956331-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="7289956331-43">}</span><span·class="p">,</span><span·class="p"·data-group-id="7289956331[·...·truncated·by·diffoscope;·len:·258,·SHA:·2b7a71a50f3115450dc38ce36a5137f4c227f0bb57f5d5eb410efacee14ff1c1·...·]-39">)</span><span·class="p">.</span><span·class="w">388 ···················</span><span·class="p"·data-group-id="5890342218-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="5890342218-43">}</span><span·class="p">,</span><span·class="p"·data-group-id="5890342218[·...·truncated·by·diffoscope;·len:·258,·SHA:·801b8babe7076d0c645359c3aa7ac68060fad085cd35468e30e5a1b83b20eb10·...·]-39">)</span><span·class="p">.</span><span·class="w">
  
389 </span><span·class="nf">qlc_next</span><span·class="p"·data-group-id="7289956331-45">(</span><span·class="p"·data-group-id="7289956331-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:·84,·SHA:·29741f37faf061f3965eb63bc6547fc35e715b70aec93baf50c093a6893064f6·...·]-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="5890342218-45">(</span><span·class="p"·data-group-id="5890342218-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:·84,·SHA:·56c4a982d0f38ad03250773a3fcdcb9e6db08f6c2076a12f4141443fc34c1f6c·...·]-45">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
390 ····</span><span·class="p"·data-group-id="7289956331-47">[</span><span·class="p"·data-group-id="7289956331-48">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="7289956331-48">}</span><span·class="w">·</span><span·class="p">|</span><span[·...·truncated·by·diffoscope;·len:·677,·SHA:·1d2668a7ff40c0609ba528acd5baa4f0482e705d1467add8b528737149f7ab9e·...·]-47">]</span><span·class="p">;</span><span·class="w">390 ····</span><span·class="p"·data-group-id="5890342218-47">[</span><span·class="p"·data-group-id="5890342218-48">{</span><span·class="n">X</span><span·class="p">,</span><span·class="n">V</span><span·class="p"·data-group-id="5890342218-48">}</span><span·class="w">·</span><span·class="p">|</span><span[·...·truncated·by·diffoscope;·len:·677,·SHA:·8f3ff0921a55d6eeaa618926a335d2297fcfe251a3499e7b8fd5b09c644493fe·...·]-47">]</span><span·class="p">;</span><span·class="w">
391 </span><span·class="nf">qlc_next</span><span·class="p"·data-group-id="7289956331-52">(</span><span·class="ss">none</span><span·class="p"·data-group-id="7289956331-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="5890342218-52">(</span><span·class="ss">none</span><span·class="p"·data-group-id="5890342218-52">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
392 ····</span><span·class="p"·data-group-id="7289956331-53">[</span><span·class="p"·data-group-id="7289956331-53">]</span><span·class="p">.</span><span·class="w">392 ····</span><span·class="p"·data-group-id="5890342218-53">[</span><span·class="p"·data-group-id="5890342218-53">]</span><span·class="p">.</span><span·class="w">
  
393 </span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="7289956331-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="7289956331-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="5890342218-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="5890342218-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="7289956331-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:·10,·SHA:·92fa80d928284b1533efc9cf43fe1584f5b373eb1d41545faecf620108aabb1a·...·]-55">)</span><span·class="p">;</span><span·class="w">394 ····</span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="5890342218-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:·10,·SHA:·43e83f4684a74ff0f71970d8cadaa8d49119d2b67e72e1bb7160dd008eabe6f7·...·]-55">)</span><span·class="p">;</span><span·class="w">
395 </span><span·class="nf">gb_nodes</span><span·class="p"·data-group-id="7289956331-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="7289956331-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="5890342218-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="5890342218-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="7289956331-57">(</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class="nf">iterator</span><span·class="p"·data-group-id="7289956331-58">(</span><span·class="n">T</span><span·class="p"·data-group-id="7289956331-58">)</span><span·class="[·...·truncated·by·diffoscope;·len:·189,·SHA:·cab3b35b84640e70d85db8887fcb2b2418c787039c5af31593581e9e341e4a88·...·]-57">)</span><span·class="p">.</span><span·class="w">396 ····</span><span·class="nf">gb_iter</span><span·class="p"·data-group-id="5890342218-57">(</span><span·class="nc">gb_trees</span><span·class="p">:</span><span·class="nf">iterator</span><span·class="p"·data-group-id="5890342218-58">(</span><span·class="n">T</span><span·class="p"·data-group-id="5890342218-58">)</span><span·class="[·...·truncated·by·diffoscope;·len:·189,·SHA:·de25961d25dbf63a236baee317dc109b5980f96db48199c1548451f57690b47d·...·]-57">)</span><span·class="p">.</span><span·class="w">
  
397 </span><span·class="nf">gb_iter</span><span·class="p"·data-group-id="7289956331-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:·28,·SHA:·14885f8607656c03e6df8dc4745dd450cbc1e299e4b1506aed243c8dffaf6b5e·...·]-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="5890342218-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:·28,·SHA:·1be2a8a359fd5c00875b75c7ebdadd58c538813a11681b120c6f9bf2fb9cafd3·...·]-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="7289956331-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="7289956331-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="5890342218-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="5890342218-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="7289956331-61">(</span><span·class="n">I0</span><span·class="p"·data-group-id="7289956331-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="5890342218-61">(</span><span·class="n">I0</span><span·class="p"·data-group-id="5890342218-61">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
401 ········</span><span·class="p"·data-group-id="7289956331-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="7289956331-62">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">401 ········</span><span·class="p"·data-group-id="5890342218-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="5890342218-62">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
402 ············</span><span·class="p"·data-group-id="7289956331-63">[</span><span·class="n">EFun</span><span·class="p"·data-group-id="7289956331-64">(</span><span·class="p"·data-group-id="7289956331-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:·554,·SHA:·e94bdcf6ba3a0e5f87a42f93a9758abe3f38d4a09a1dfc7a0731e6d0d5ca11ca·...·]-63">]</span><span·class="p">;</span><span·class="w">402 ············</span><span·class="p"·data-group-id="5890342218-63">[</span><span·class="n">EFun</span><span·class="p"·data-group-id="5890342218-64">(</span><span·class="p"·data-group-id="5890342218-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:·554,·SHA:·7e2431aefabed8b3848cb50c5f74561d0051c6b815c0b2a5cf38eaa974c0df02·...·]-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="7289956331-67">[</span><span·class="p"·data-group-id="7289956331-67">]</span><span·class="w">404 ············</span><span·class="p"·data-group-id="5890342218-67">[</span><span·class="p"·data-group-id="5890342218-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.1/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.3/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.3/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="1726529814-1">(</span><span·class="p"·data-group-id="1726529814-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·clas[·...·truncated·by·diffoscope;·len:·133,·SHA:·191ba026e75b8c7610d950193db7c310bff87f6628092e4779907c6179898417·...·]-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="1550300440-1">(</span><span·class="p"·data-group-id="1550300440-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·clas[·...·truncated·by·diffoscope;·len:·133,·SHA:·71482172b35c0c468b9621385e867802c1a172b6cf0002ff9732ada179c4ea55·...·]-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="1726529814-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1726529814-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="1726529814-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·313,·SHA:·100da2763f2b068a239e77b77df1136e25db5e8d829509588d15abe9c3528d37·...·]-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="1550300440-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1550300440-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="1550300440-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·313,·SHA:·416634d17306d7a9493684fe53d5562686b1c52a992ab64f0547718e7d8442b7·...·]-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="1726529814-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1726529814-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="1726529814-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·313,·SHA:·57273a9e8c970497de4850ab09aca930543e844643237b1bbcc3d511dd849c40·...·]-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="1550300440-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="1550300440-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="1550300440-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><s[·...·truncated·by·diffoscope;·len:·313,·SHA:·d42a3705042ce185018177b23a30c75bc52f2aded4dd032cfda1454d68612022·...·]-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.3/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:boolean/0">boolean</a>()·when·Pred·::·fun((Item)·->·<a·href="../../../../erts-15.2.3/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="2372752978-1">(</span><span·class="p"·data-group-id="2372752978-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:·765d9c5844eada8db65401ee6df179c51f41707e5e09ff7a844049a5d13399b7·...·]-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="3711174456-1">(</span><span·class="p"·data-group-id="3711174456-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:·a1c4e4acfe757ab68396df1c14412a3b8d4713e2554e0a39f95d7fcea24b6f37·...·]-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="2372752978-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="2372752978-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="2372752978-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·315,·SHA:·068e2766a534506f6c1292b914849061a7f1d1956deca7b52de2fa4d9a90428e·...·]-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="3711174456-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3711174456-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="3711174456-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·315,·SHA:·bc03c02787fd56da4b7889f85f18ff41b1a9235db96b768143d310eab50baf47·...·]-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="2372752978-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="2372752978-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="2372752978-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·17e4d90aae4056590f573d71f68d4f313d055344d9e576c8859f559856e8eff8·...·]-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="3711174456-5">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3711174456-6">(</span><span·class="n">E</span><span·class="p"·data-group-id="3711174456-6">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·1f6d94c5e3e7aea78498cfa3f4fb31730748f98a3513cdd51a60af1ad16007da·...·]-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.3/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.3/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="1582181705-1">(</span><span·class="p"·data-group-id="1582181705-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:·3c3e8b9f35c23322480fcee1432a94a60b9dcb463878d98d2d9ae7d12ad85605·...·]-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="3277786939-1">(</span><span·class="p"·data-group-id="3277786939-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:·e3cd23679427a4cb99241386e5561d89234ac4cecd34a3ae69d6ed53b5c49deb·...·]-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="1582181705-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="1582181705-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="3277786939-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="3277786939-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="1582181705-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="1582181705-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="3277786939-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="3277786939-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.3/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.3/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="4584464449-1">(</span><span·class="p"·data-group-id="4584464449-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:·56002b3b0de672e3be5c4c82c268807d2b8a3d0d13f8ec11a163890d088c885c·...·]-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="8403209008-1">(</span><span·class="p"·data-group-id="8403209008-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:·9f2583d718b766d8c79a49bb4cf6f9909b943c6506d3115fef4811a93f5bd5be·...·]-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="4584464449-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="4584464449-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="8403209008-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="8403209008-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="4584464449-4">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="4584464449-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="8403209008-4">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="8403209008-4">)</span><span·class="p">.</span><span·class="w">
818 </span><span·class="p"·data-group-id="4584464449-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:·2a52d79c86aff3648abe64608f836878d6f4038c66d72448c9c47a0e7c398f71·...·]-5">]</span></code></pre>818 </span><span·class="p"·data-group-id="8403209008-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:·95f23b1da6dd91b2a3d58211fed4e5ea7324fcc1ba9a1695f9ab83f6ce100f7c·...·]-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.3/doc/html/erlang.html#t:term/0">term</a>().</pre>850 ·························Item·::·<a·href="../../../../erts-15.2.3/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="7797554257-1">(</span><span·class="p"·data-group-id="7797554257-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·c[·...·truncated·by·diffoscope;·len:·185,·SHA:·622e7bacf4cecef5944b2555c1a5416437c3d96c63c293533e5c52f95e641bb6·...·]-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="3583383060-1">(</span><span·class="p"·data-group-id="3583383060-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·c[·...·truncated·by·diffoscope;·len:·185,·SHA:·ce51d021ffd9ed6cb3ae71548cdf99072c1ea7529866d2fafc9491c285c69149·...·]-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="7797554257-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7797554257-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="7797554257-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·264,·SHA:·c19edc5a7ccbfd6519ccb4efc1988cefc450d11c234066bc68754e10edba56be·...·]-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="3583383060-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="3583383060-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="3583383060-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·264,·SHA:·d6c133b650d3ca5492b072b854ee2370120de27a1b1d662f1230bf8d3ae73adf·...·]-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="7797554257-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="7797554257-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="3583383060-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="3583383060-5">)</span><span·class="p">.</span><span·class="w">
856 </span><span·class="p"·data-group-id="7797554257-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:·3f65b3b9b7cab26af6b0edac779fccdfdd1d07cc63e628b1fffe19d14cd240ef·...·]-6">]</span></code></pre>856 </span><span·class="p"·data-group-id="3583383060-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:·b1f570b5ff1e663729d1a561655e27af92a9690f6d89d2d0c107d535f7af277b·...·]-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.3/doc/html/erlang.html#t:term/0">term</a>().</pre>887 ···························Item·::·<a·href="../../../../erts-15.2.3/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="6147675076-1">(</span><span·class="p"·data-group-id="6147675076-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:·2dd27a9d834bc56eea2b5159ac70c73670da24ef195204dfce8c0d98b63b0862·...·]-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="8962042112-1">(</span><span·class="p"·data-group-id="8962042112-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:·8c2f5528d87bea52e5316b07c7f92f26242a656946c3c84ce4cebf41d8f528c3·...·]-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="6147675076-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="6147675076-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="6147675076-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·265,·SHA:·c498ab7091c487d106539b8db385f08c15713f24b3d4022c08318277ebf50ae2·...·]-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="8962042112-3">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="8962042112-4">(</span><span·class="n">E</span><span·class="p"·data-group-id="8962042112-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·265,·SHA:·e8dee7973d98e6c44797f9463a015e3796547b4bec6554148c2c8056c291c63e·...·]-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="6147675076-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="6147675076-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="8962042112-5">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="8962042112-5">)</span><span·class="p">.</span><span·class="w">
893 </span><span·class="p"·data-group-id="6147675076-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:·90ba06d39a8f954dce6e59f0bb482fba1589309467225f961392aa0d44f44af2·...·]-6">]</span></code></pre>893 </span><span·class="p"·data-group-id="8962042112-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:·9c88afeb7327e79ead7a3bd4717def6ad2a50e93d8c2b33eba0a8832144faf07·...·]-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.3/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.3/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="4434641845-1">(</span><span·class="p"·data-group-id="4434641845-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:·8d1c5c4e38a5da6579a0506b559a5c18f9eaf9a59c03b1e87c0bf6e7169bdc1f·...·]-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="7513497919-1">(</span><span·class="p"·data-group-id="7513497919-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:·f9b4c3dee3122f99d103d0fdbefff8bfdba731b9f3ea22c97c3ba3ef148980d8·...·]-1">)</span><span·class="p">.</span><span·class="w">
923 </span><span·class="p"·data-group-id="4434641845-3">{</span><span·class="p"·data-group-id="4434641845-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="4434641845-4">]</span><span[·...·truncated·by·diffoscope;·len:·240,·SHA:·91665b6b985d74d0befd66d2e6d781dc527dfe2e3bbf5b13d2a1bc839a21bf79·...·]-3">}</span><span·class="gp·unselectable">923 </span><span·class="p"·data-group-id="7513497919-3">{</span><span·class="p"·data-group-id="7513497919-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="7513497919-4">]</span><span[·...·truncated·by·diffoscope;·len:·240,·SHA:·d20ff16b8dfd1b8fda7dd0e5794f6a981237f1aef742913095f9f1d2ff7d8e97·...·]-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="4434641845-6">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="4434641845-7">(</span><span·class="n">E</span><span·class="p"·data-group-id="4434641845-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·323ccea2878f350a9da2d9082711abd3a1b767d06b0f918649f3ad67d6110392·...·]-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="7513497919-6">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="7513497919-7">(</span><span·class="n">E</span><span·class="p"·data-group-id="7513497919-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·314,·SHA:·e0c2f703d88ad78a46173ab5ca31b16dcba5ae0f50f3aead0848c229c687c94f·...·]-6">)</span><span·class="p">.</span><span·class="w">
925 </span><span·class="p"·data-group-id="4434641845-8">{</span><span·class="p"·data-group-id="4434641845-9">[</span><span·class="mi">5</span><span·class="p"·data-group-id="4434641845-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="4434641845-10">[</span><span·class="mi">3</span>[·...·truncated·by·diffoscope;·len:·144,·SHA:·4fb18d3ae6b56673c651a79735fb8bd24b4fff4c5517911b5b79cbf506958ada·...·]-8">}</span><span·class="gp·unselectable">925 </span><span·class="p"·data-group-id="7513497919-8">{</span><span·class="p"·data-group-id="7513497919-9">[</span><span·class="mi">5</span><span·class="p"·data-group-id="7513497919-9">]</span><span·class="p">,</span><span·class="p"·data-group-id="7513497919-10">[</span><span·class="mi">3</span>[·...·truncated·by·diffoscope;·len:·144,·SHA:·5821667456a81ec75c67ba50b4cd9092c167f257d3b8ef3a38bada963752bb42·...·]-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="4434641845-11">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="4434641845-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="7513497919-11">(</span><span·class="n">Queue1</span><span·class="p"·data-group-id="7513497919-11">)</span><span·class="p">.</span><span·class="w">
927 </span><span·class="p"·data-group-id="4434641845-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="4434641845-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="7513497919-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="7513497919-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.1/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="9796536722-1">(</span><span·class="p"·data-group-id="9796536722-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="9056702698-1">(</span><span·class="p"·data-group-id="9056702698-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="9796536722-2">(</span><span·class="p"·data-group-id="9796536722-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:·239,·SHA:·1cd92a209bd0e5933ba455da5d3616a1bd0a46c8966974fa4e821669979ffe88·...·]-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="9056702698-2">(</span><span·class="p"·data-group-id="9056702698-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:·239,·SHA:·e49c2989cc693dc40a468e9facd5ebda17a2c1def102a8649762572b4bf2c923·...·]-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="6485123783-2">(</span><span·class="p"·data-group-id="6485123783-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:·31ba30bd2406fceb23de193fc689c3d56fc4b290d21831f33910a5e091073b6a·...·]-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="5446767718-2">(</span><span·class="p"·data-group-id="5446767718-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:·ee24dfe13d1a549de090e5fb926af492ea4b1616931565b954a7b0e22427110a·...·]-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="6123214117-3">(</span><span·class="p"·data-group-id="6123214117-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:·a291a627eee4f57bfb461157565e89dc6868bc1d293ad310d31573fcab1541c1·...·]-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="0318343674-3">(</span><span·class="p"·data-group-id="0318343674-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:·be7f4c2080b7ee7602fd7ff547b9fc690c238c2bf5c57754034021aeace8f34a·...·]-1">)</span><span·class="p">,</span><span·class="w">
208 </span><span·class="p"·data-group-id="1800293720-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="1800293720-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·654,·SHA:·5942a8fbd81951f23ef201b59d09e8877d87fcb08bac1dd71e1d6c7acfcb5f5b·...·]-1">)</span><span·class="p">,</span><span·class="w">208 </span><span·class="p"·data-group-id="2626459692-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="2626459692-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·654,·SHA:·4fd141fa892b609625793eef3394ade2fd81d5f8b1511092d0228c831b899c15·...·]-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="6709401788-2">(</span><span·class="p"·data-group-id="6709401788-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="0572224305-2">(</span><span·class="p"·data-group-id="0572224305-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="6709401788-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="670[·...·truncated·by·diffoscope;·len:·2113,·SHA:·b6d5a72054a7504bccf1af9e4faf0193610284d56f3744fac7df167c6e8e5105·...·]-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="0572224305-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="057[·...·truncated·by·diffoscope;·len:·2113,·SHA:·27ab42d0a356af4b66faa0abaad72d6336ab49a43df4043172904975de8d9bd6·...·]-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.3/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.3/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="3408877628-1">(</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="3408877628-2">(</span><span·class="mi">256</span><span·class="p"·data-group-id="3408877628-2">)</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·2109,·SHA:·b8923f2b3368f690fcbfaf1462f5c0733e37609cd22ef132860b324bff9f32c6·...·]-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="3654377430-1">(</span><span·class="nc">rand</span><span·class="p">:</span><span·class="nf">uniform</span><span·class="p"·data-group-id="3654377430-2">(</span><span·class="mi">256</span><span·class="p"·data-group-id="3654377430-2">)</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·2109,·SHA:·0a61120d0d57ba4d1de08d42bde48ad7ab8e3295f30c6e56451601596336f63e·...·]-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.3/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.3/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="1333970897-1">(</span><span·class="p"·data-group-id="1333970897-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="9550056528-1">(</span><span·class="p"·data-group-id="9550056528-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="1333970897-2">(</span><span·class="p"·data-group-id="1333970897-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="9550056528-2">(</span><span·class="p"·data-group-id="9550056528-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="1333970897-3">(</span><span·class="p"·data-group-id="1333970897-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="9550056528-3">(</span><span·class="p"·data-group-id="9550056528-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="6008491943-1">(</span><span·class="p"·data-group-id="6008491943-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="6008491943-2">)</spa[·...·truncated·by·diffoscope;·len:·92,·SHA:·9b2e6b21868b4e86292faf9759aca2c9eace856b18e5f490daf9c2f0730fc1dd·...·]-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="0211412948-1">(</span><span·class="p"·data-group-id="0211412948-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="0211412948-2">)</spa[·...·truncated·by·diffoscope;·len:·92,·SHA:·40535a6c1e2a95c953bf0fc21bf612f864ffa248695212d585fde095f6838095·...·]-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.1/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.3/doc/html/erlang.html#t:integer/0">integer</a>(),·A2·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:integer/0">integer</a>(),·A3·::·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:integer/0">integer</a>(),·A2·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:integer/0">integer</a>(),·A3·::·<a·href="../../../../erts-15.2.3/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="8217328718-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">phash2</span><span·class="p"·data-group-id="8217328718-2">(</span><span·class="p"·data-group-id="8217328718-3">[</span><span·class="nf">node</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·184,·SHA:·eb911509607eb55054420b5a6bb87119bb1e35cabd3e027fbc78c6b28d6724ec·...·]-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="7051218721-1">(</span><span·class="nc">erlang</span><span·class="p">:</span><span·class="nf">phash2</span><span·class="p"·data-group-id="7051218721-2">(</span><span·class="p"·data-group-id="7051218721-3">[</span><span·class="nf">node</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·184,·SHA:·f46868bbcb9c4cf969583c90b8f4ca2f60eb44381096eec3ad0f1c142f7c03a4·...·]-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="8217328718-5">(</span><span·class="p"·data-group-id="8217328718-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="7051218721-5">(</span><span·class="p"·data-group-id="7051218721-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="8217328718-6">(</span><span·class="p"·data-group-id="8217328718-6">)</span><span·class="p"·data-group-id="8217328718-1">)</span></code></pre><p>For·details,·see·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#phash2/1"><code·class="inline">erlang:phash2/1</code></a>,·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#node/0"><code·class="inline">erlang:node/0</code></a>,·<a·href="../../../../erts-15.2.3/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="7051218721-6">(</span><span·class="p"·data-group-id="7051218721-6">)</span><span·class="p"·data-group-id="7051218721-1">)</span></code></pre><p>For·details,·see·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#phash2/1"><code·class="inline">erlang:phash2/1</code></a>,·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#node/0"><code·class="inline">erlang:node/0</code></a>,·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#monotonic_time/0"><code·class="inline">erlang:monotonic_time/0</code></a>,
465 and·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#unique_integer/0"><code·class="inline">erlang:unique_integer/0</code></a>.</p>465 and·<a·href="../../../../erts-15.2.3/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.1/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="9624829707-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="9624829707-2">[</span><span·class="p"·data-group-id="9624829707-3">{</span><span·class="ss">capture</span><span·class="p">,</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">list</span><span·class="p"·data-group-id="9624829707-3">}</span><span·class="p"·data-group-id="9624829707-2">]</span><span·class="p"·data-group-id="9624829707-1">)</span><span·class="p">.</span><span·class="w"> 
1379 </span><span·class="p"·data-group-id="9624829707-4">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="9624829707-5">[</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="9624829707-5">]</span><span·class="p"·data-group-id="9624829707-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="9624829707-6">(</span><span·class="s">&quot;xyzabc&quot;</span><span·class="p">,</span><span·class="s">&quot;(*COMMIT)abc&quot;</span><[·...·truncated·by·diffoscope;·len:·477,·SHA:·873139e9037d2952c225473fd138ee4efdc8bf7babbbf36a91702f5ad1007877·...·]">)</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="1617871302-1">(</span><span·class="[·...·truncated·by·diffoscope;·len:·512,·SHA:·5975bec8de20fc95cb74ad1a01cc35bfc15e29348cb95dffb35f87686436e828·...·]">)</span><span·class="p">.</span><span·class="w">
 1379 </span><span·class="p"·data-group-id="1617871302-4">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="1617871302-5">[</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="1617871302-5">]</span><span·class="p"·data-group-id="1617871302-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="1617871302-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="1617871302-7">[</span><span·class="p"·data-group-id="1617871302-8">{</span><span·class="ss">capture</span><span·class="p">,</span><span·class="ss">all</span><span·class="p">,</span><span·class="ss">list</span><span·class="p"·data-group-id="1617871302-8">}</span><span·class="p">,</span><span·class="ss">no_start_optimize</span><span·class="p"·data-group-id="1617871302-7">]</span><span·class="p"·data-group-id="1617871302-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.3/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.3/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="4018572687-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="4018572687-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:·193ecd8729a1a9732d831dba94251f93ccfe96e2eb316f6567e087da38289806·...·]-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="8299288988-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="8299288988-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:·d7f680e4e995d2814c17eb8db876a86672cfa7d4af9149228569624173309418·...·]-2">)</span><span·class="p">.</span><span·class="w">
2089 </span><span·class="p"·data-group-id="4018572687-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4018572687-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="8299288988-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8299288988-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="4018572687-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="8299288988-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="4018572687-5">&gt;&gt;</span><span·class="p"·data-group-id="4018572687-4">}</span><span·class="p"·data-group-id="4018572687-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="8299288988-5">&gt;&gt;</span><span·class="p"·data-group-id="8299288988-4">}</span><span·class="p"·data-group-id="8299288988-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="4018572687-6">(</span><span·class="n">MP</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="4018572687-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="8299288988-6">(</span><span·class="n">MP</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="8299288988-6">)</span><span·class="p">.</span><span·class="w">
2093 </span><span·class="p"·data-group-id="4018572687-7">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="4018572687-8">[</span><span·class="p"·data-group-id="4018572687-9">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·489,·SHA:·184f1b28c7d9854656c54fe9f771ed38deb8c80137d5e23c785af252e6e29ceb·...·]-7">}</span><span·class="gp·unselectable">2093 </span><span·class="p"·data-group-id="8299288988-7">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="8299288988-8">[</span><span·class="p"·data-group-id="8299288988-9">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·489,·SHA:·67814359f19896bf43bce1c66be936891d13fa58c0d6d7bd2dff52d0d20126d3·...·]-7">}</span><span·class="gp·unselectable">
2094 3&gt;·</span><span·class="p"·data-group-id="4018572687-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MPD</span><span·class="p"·data-group-id="4018572687-12">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">re</span><span[·...·truncated·by·diffoscope;·len:·385,·SHA:·10aaab12e0445fbe14ddac97183fbc5e2bf9510843aa1be6ccf63b29510ef67d·...·]-13">)</span><span·class="p">.</span><span·class="w">2094 3&gt;·</span><span·class="p"·data-group-id="8299288988-12">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MPD</span><span·class="p"·data-group-id="8299288988-12">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">re</span><span[·...·truncated·by·diffoscope;·len:·385,·SHA:·dca9295a14a47cd503f3df1e1e93c8a53f7c0d9c0a394880eea6049ffb41c104·...·]-13">)</span><span·class="p">.</span><span·class="w">
2095 </span><span·class="p"·data-group-id="4018572687-15">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="4018572687-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="8299288988-15">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8299288988-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="4018572687-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="8299288988-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="4018572687-17">&gt;&gt;</span><span·class="p"·data-group-id="4018572687-16">}</span><span·class="p"·data-group-id="4018572687-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="8299288988-17">&gt;&gt;</span><span·class="p"·data-group-id="8299288988-16">}</span><span·class="p"·data-group-id="8299288988-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="4018572687-18">(</span><span·class="n">MPD</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="4018572687-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="8299288988-18">(</span><span·class="n">MPD</span><span·class="p">,</span><span·class="ss">namelist</span><span·class="p"·data-group-id="8299288988-18">)</span><span·class="p">.</span><span·class="w">
2099 </span><span·class="p"·data-group-id="4018572687-19">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="4018572687-20">[</span><span·class="p"·data-group-id="4018572687-21">&lt;&lt;</span><span·class="s">&quot;B&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·312,·SHA:·e0f1b96d5958c3c32a8ce3c3b530b9cd311ad2c4bab2bdf6b7e2e2b603f54566·...·]-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="8299288988-19">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="8299288988-20">[</span><span·class="p"·data-group-id="8299288988-21">&lt;&lt;</span><span·class="s">&quot;B&quot;</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·312,·SHA:·95c88e487c1b0dd1d36a359c71e56336001498d69cacc2a8704c342fec35d1ec·...·]-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="7641631819-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="7641631819-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:·7753c14132f0c96aa088f6d116d13dee80753e7c99cd32e61ac51a28f905444a·...·]-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="0067296593-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">MP</span><span·class="p"·data-group-id="0067296593-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:·d1411c1a8c4b3d349782bd3863cd3b8880c5eef1ae5b4ed7020fa688cf4b931e·...·]-2">)</span><span·class="p">.</span><span·class="w">
2105 </span><span·class="p"·data-group-id="7641631819-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7641631819-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="0067296593-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0067296593-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="7641631819-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="0067296593-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="7641631819-5">&gt;&gt;</span><span·class="p"·data-group-id="7641631819-4">}</span><span·class="p"·data-group-id="7641631819-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="0067296593-5">&gt;&gt;</span><span·class="p"·data-group-id="0067296593-4">}</span><span·class="p"·data-group-id="0067296593-3">}</span><span·class="gp·unselectable">
2108 2&gt;·</span><span·class="p"·data-group-id="7641631819-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="7641631819-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·251,·SHA:·101b5050b4c6c4a2eaebaf6d910f4fa947abccc93d6e266cbe6e57cb55fcfb17·...·]-7">)</span><span·class="p">.</span><span·class="w">2108 2&gt;·</span><span·class="p"·data-group-id="0067296593-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="0067296593-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·251,·SHA:·85df69dba68eec482e335177e88afecc4dc244e8e7eba1617ba41448e7509005·...·]-7">)</span><span·class="p">.</span><span·class="w">
2109 </span><span·class="p"·data-group-id="7641631819-8">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="7641631819-9">[</span><span·class="p"·data-group-id="7641631819-10">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="7641631819-10">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="7641631819-11">&lt;&lt;</span><span·class="s">&quot;B&quot;</span><span·class="p"·data-group-id="7641631819-11">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="7641631819-12">&lt;&lt;</span><span·class="s">&quot;C&quot;</span><span·class="p"·data-group-id="7641631819-12">&gt;&gt;</span><span·class="p"·data-group-id="7641631819-9">]</span><span·class="p"·data-group-id="7641631819-8">}</span><span·class="gp·unselectable"> 
2110 3&gt;·</span><span·class="p"·data-group-id="7641631819-13">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="7641631819-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="7641631819-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="7641631819-15">[</span><span·class="p"·data-group-id="7641631819-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="7641631819-16">}</span><span·class="p"·data-group-id="7641631819-15">]</span><span·class="p"·data-group-id="7641631819-14">)</span><span·class="p">.</span><span·class="w"> 
2111 </span><span·class="p"·data-group-id="7641631819-17">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="7641631819-18">[</span><span·class="p"·data-group-id="7641631819-19">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·422,·SHA:·b625ea3280410baf13b2ecdc4be6ba7cd0aae93eb6312a2b56ab85ed41d4e4c5·...·]">}</span><span·class="gp·unselectable">2109 </span><span·class="p"·data-group-id="0067296593-8">{</span><span·class="ss">namelist</span><span·class="p">,</span><span·class="p"·data-group-id="0067296593-9">[</span><span·class="p"·data-group-id="0067296593-10">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·493,·SHA:·b7f668b02117cd92c6d756337f14e9956124eb67c8b012ebc59627f4f88e5f60·...·]">}</span><span·class="gp·unselectable">
 2110 3&gt;·</span><span·class="p"·data-group-id="0067296593-13">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="0067296593-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="0067296593-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="0067296593-15">[</span><span·class="p"·data-group-id="0067296593-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="0067296593-16">}</span><span·class="p"·data-group-id="0067296593-15">]</span><span·class="p"·data-group-id="0067296593-14">)</span><span·class="p">.</span><span·class="w">
 2111 </span><span·class="p"·data-group-id="0067296593-17">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="0067296593-18">[</span><span·class="p"·data-group-id="0067296593-19">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="0067296593-19">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="0067296593-20">&lt;&lt;</span><span·class="p"·data-group-id="0067296593-20">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="0067296593-21">&lt;&lt;</span><span·class="p"·data-group-id="0067296593-21">&gt;&gt;</span><span·class="p"·data-group-id="0067296593-18">]</span><span·class="p"·data-group-id="0067296593-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="7641631819-22">(</span><span·class="n">N</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="7641631819-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="0067296593-22">(</span><span·class="n">N</span><span·class="p">,</span><span·class="n">L</span><span·class="p"·data-group-id="0067296593-22">)</span><span·class="p">.</span><span·class="w">
2113 </span><span·class="p"·data-group-id="7641631819-23">[</span><span·class="p"·data-group-id="7641631819-24">{</span><span·class="p"·data-group-id="7641631819-25">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="7641631819-25">&gt;&gt;</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·1128,·SHA:·8591863ecca521a9d29d027bec163031a30dfc8054ab7ff8261b5ee9eec3f140·...·]-23">]</span></code></pre>2113 </span><span·class="p"·data-group-id="0067296593-23">[</span><span·class="p"·data-group-id="0067296593-24">{</span><span·class="p"·data-group-id="0067296593-25">&lt;&lt;</span><span·class="s">&quot;A&quot;</span><span·class="p"·data-group-id="0067296593-25">&gt;&gt;</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·1128,·SHA:·701fdbd52f14cf36eb9cb31521705146ef62026124cc7a994b2c1079e39e1860·...·]-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="2290047238-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="2290047238-2">[·...·truncated·by·diffoscope;·len:·289,·SHA:·fe4a4b251fb39ddbbcf1e989b3a95283561fcf0451eb885232e8507844f176c1·...·]8-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="0008027328-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="0008027328-2">[·...·truncated·by·diffoscope;·len:·289,·SHA:·afbe8dc1106dd10995a484729c817c2e35bbcdc85a599dc9dd42e3f08064aaa0·...·]8-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="0257428446-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="0257428446-2[·...·truncated·by·diffoscope;·len:·292,·SHA:·dbf3c69e8b9473922f2d6eafb649ae8320b44156b3cbbcd8aa58f159a796ad50·...·]-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="5597022840-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="5597022840-2[·...·truncated·by·diffoscope;·len:·292,·SHA:·dae17e2d5ac0a368f564b0ac419924954cdb44b5505751394d5d53d973059707·...·]-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="3077494830-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="0000951703-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="3077494830-2">(</span><span·class="n">Whole</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3077494830-3">[</span><span·class="p"·data-group-id="3077494830-4">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·133,·SHA:·1cb4c3cc713368215afebbfd78dd4b7a7f3423913c69d75205a70c2c7412217b·...·]-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="0000951703-2">(</span><span·class="n">Whole</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0000951703-3">[</span><span·class="p"·data-group-id="0000951703-4">&lt;&lt;</span><span·class="n">C</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·133,·SHA:·258fcbe9f624c0267d23ee514b06b5e0438ad733dc8af7b760ec31374e230276·...·]-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
2212 ·········</span><span·class="p"·data-group-id="3077494830-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:·4da49083af84878e0b12a7a111923d63c16b33e8e8b9c6ed43ab62ae56bacaf5·...·]-5">&gt;&gt;</span><span·class="w">2212 ·········</span><span·class="p"·data-group-id="0000951703-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:·083b34262231fa388fd94c9a7e36b8d635e773870a86efe84ce1b329aed17d7c·...·]-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="3077494830-7">[</span><span·class="p"·data-group-id="3077494830-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="3077494830-8">}</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·b1152836e019231f3b7c479e76383bcdfb8b457e868baf9a477e1b17f619b578·...·]-1">)</span><span·class="p">.</span><span·class="w">2214 ····</span><span·class="p"·data-group-id="0000951703-7">[</span><span·class="p"·data-group-id="0000951703-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="0000951703-8">}</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·72,·SHA:·0fcb00cb3141344d73d2c84a01895b40179f09ac1ef48b56bc0e6164ec69cafa·...·]-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.3/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a>·of·<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:list/0"><code·class="inline">list/0</code></a>·of·<a·href="../../../../erts-15.2.3/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="3281299792-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="3281299792-2">[</span><span·class="ss">global</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·a4c716c7fffea3bd50de57414fe6ed9077be3e40fec095c7158df6215e128f40·...·]-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="8887811130-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="8887811130-2">[</span><span·class="ss">global</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·69,·SHA:·015c351708f878730182423dc47a20022d4e632346e2fa9460a98bdf5c9d1b4c·...·]-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="6392096218-1">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="6392096218-2">[</span><span·class="p"·data-group-id="6392096218-3">[</span><span·class="p"·data-group-id="6392096218-4">{</span><span·class="mi">0</sp[·...·truncated·by·diffoscope;·len:·2008,·SHA:·e73dcf571071c343c46268454e05f99a0d5f71f2431cd5207438d3618204dfae·...·]-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="1500209060-1">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="1500209060-2">[</span><span·class="p"·data-group-id="1500209060-3">[</span><span·class="p"·data-group-id="1500209060-4">{</span><span·class="mi">0</sp[·...·truncated·by·diffoscope;·len:·2008,·SHA:·c79dfb25e6bdf40d141d7587c174f3c21f081ddbc35972de4fbf6d65695ac29e·...·]-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="0391831376-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="0391831376-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="9922774293-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="9922774293-1">)</span><span·class="p">.</span><span·class="w">
2411 </span><span·class="p"·data-group-id="0391831376-2">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="0391831376-3">[</span><span·class="p"·data-group-id="0391831376-4">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">14</span><span·class="p"·data-group-id="0391831376-4">}</span><span·class="p">,</span><span·class="p"·data-group-id="0391831376-5">{</span><span·class="mi">0</span><span·class="p">,</span><span·class="mi">13</span><span·class="p"·data-group-id="0391831376-5">}</span><span·class="p"·data-group-id="0391831376-3">]</span><span·class="p"·data-group-id="0391831376-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="0391831376-6">(</span><span·class="s">&quot;aaaaaaaaaaaaaz&quot;</span><span·class="p">,</span><span·class="s">&quot;(a+)*z&quot;</span[·...·truncated·by·diffoscope;·len:·422,·SHA:·1725dcf1e157e23763de9063f2d18f33947859172ef67f5f0754f895c68afb71·...·]">2411 </span><span·class="p"·data-group-id="9922774293-2">{</span><span·class="ss">match</span><span·class="p">,</span><span·class="p"·data-group-id="9922774293-3">[</span><span·class="p"·data-group-id="9922774293-4">{</span><span·class="mi">0</span><span·class=[·...·truncated·by·diffoscope;·len:·430,·SHA:·a915bf6b54ae537b85e022ff9def836702664298c629794acfb79b4daa69ee33·...·]">
 2412 2&gt;·</span><span·class="nc">re</span><span·class="p">:</span><span·class="nf">run</span><span·class="p"·data-group-id="9922774293-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="9922774293-7">[</span><span·class="p"·data-group-id="9922774293-8">{</span><span·class="ss">match_limit_recursion</span><span·class="p">,</span><span·class="mi">5</span><span·class="p"·data-group-id="9922774293-8">}</span><span·class="p"·data-group-id="9922774293-7">]</span><span·class="p"·data-group-id="9922774293-6">)</span><span·class="p">.</span><span·class="w">
Max diff block lines reached; 53928/116526 bytes (46.28%) of diff not shown.
630 B
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.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-C1715298.js"></script>124 <script·src="dist/search_data-A1A25C0C.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>
7.13 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/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="0524933025-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="0524933025-2">(</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·204,·SHA:·94c83681727b326e8f33f41d62efdca06fc10eab5fe10139f785fc299e42bf0f·...·]-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="4159664427-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="4159664427-2">(</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·204,·SHA:·bd544064dcf7fd8657d1e2326f3de7637d87e81c505114867ad6a1745a170835·...·]-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="0524933025-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="0524933025-5">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·d339663ae51ba9eb0eea94c04ea09b4ccc24d4f7e7a775e31007fb538d0da868·...·]-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="4159664427-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="4159664427-5">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·cf461b0ab86e77a4cd0bae25bffdfcebce3212e1cf1049d1eadcd5ec86417d75·...·]-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="0524933025-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="0524933025-8">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·7eb8ad8e9edc4d49127bb749ab22c9ac78072144cd80baefac260e1b01887f1d·...·]-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="4159664427-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="4159664427-8">(</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·207,·SHA:·e612f9033abf4c3743a1ab25c4872a15b49b45e3abd477bc9f14a0113687ab53·...·]-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.1/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="8681640910-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="8681640910-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="8219603492-1">(</span><span·class="s">&quot;kernel/include/file.hrl&quot;</span><span·class="p"·data-group-id="8219603492-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="9105553369-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="9105553369-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.3[·...·truncated·by·diffoscope;·len:·362,·SHA:·73560da2a91600e34e76efc07df9f60d43161bf62e322afa1550cdad3764af46·...·]9-3">]</span><span·class="w">237 </span><span·class="n">Erlang</span><span·class="w">·</span><span·class="p"·data-group-id="9939536049-1">(</span><span·class="n">BEAM</span><span·class="p"·data-group-id="9939536049-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.3[·...·truncated·by·diffoscope;·len:·362,·SHA:·0985acc129bb3b4f00e6730b6861bdf1ff20f1985798edf788382da4f8531aab·...·]9-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="9105553369-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="9105553369-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="9939536049-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="9939536049-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="2076987710-1">(</span><span·class="n">Str</span><span·class="p"·data-group-id="2076987710-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="2048988616-1">(</span><span·class="n">Str</span><span·class="p"·data-group-id="2048988616-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="4856751699-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="4856751699-2">(</span><span·class="n">Str</span><span·class="p"·data-group-id="4856751699-2">)</span><span·class="p"·data-group-id="4856751699-1">}</span><span·class="p">.</span><span·class="w"> 
242 </span><span·class="p"·data-group-id="4856751699-3">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="4856751699-3">}</span></code></pre><p>Command·3·builds·the·tuple·<code·class="inline">Descriptor</code>,·eva[·...·truncated·by·diffoscope;·len:·15,·SHA:·0e7c15d0efd82a20bed5450963d958a2c7209265c55b1cf8553de8fc20daa29f·...·]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[·...·truncated·by·diffoscope;·len:·459,·SHA:·480185373638e569c3b64043133fd86057fb59bc239c31d4d0b1574c1701c983·...·]
 242 </span><span·class="p"·data-group-id="8049616641-3">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="8049616641-3">}</span></code></pre><p>Command·3·builds·the·tuple·<code·class="inline">Descriptor</code>,·evaluating·the·BIF
243 <a·href="../../../../erts-15.2.3/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.3/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="3542272312-1">(</span><span·class="p"·data-group-id="3542272312-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="8051266200-1">(</span><span·class="p"·data-group-id="8051266200-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="3542272312-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="3542272312-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="8051266200-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="8051266200-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="7837108192-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="7837108192-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="6006507292-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="6006507292-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="3325345610-1">(</span><span·class="p"·data-group-id="3325345610-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="1450763018-1">(</span><span·class="p"·data-group-id="1450763018-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="3325345610-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="3325345610-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="1450763018-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="1450763018-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="4408669596-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="4408669596-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="7736396686-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="7736396686-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="9069158569-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="9069158569-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="8630717244-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="8630717244-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="9069158569-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="9069158569-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="8630717244-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="8630717244-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="0325886724-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="0325886724-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="3808662736-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="3808662736-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="5388779618-1">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="5388779618-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="1347932726-1">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="1347932726-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="6259567488-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="6259567488-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="2330970288-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="2330970288-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="6259567488-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="6259567488-2">}</span><span·class="gp·unselectable">270 </span><span·class="p"·data-group-id="2330970288-2">{</span><span·class="mi">4</span><span·class="p">,</span><span·class="ss">abcd</span><span·class="p"·data-group-id="2330970288-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="3385187902-1">(</span><span·class="p"·data-group-id="3385187902-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="1438882049-1">(</span><span·class="p"·data-group-id="1438882049-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="2219304115-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="2219304115-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="5582238415-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="5582238415-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="2219304115-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="2219304115-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="5582238415-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="5582238415-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="6917667280-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="6917667280-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="7659804359-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="7659804359-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="6917667280-2">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="6917667280-2">)</span><span·class="p">.</span><span·class="w">278 18&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="7659804359-2">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="7659804359-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="7047631261-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="7047631261-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="9114281197-1">(</span><span·class="mi">1</span><span·class="p"·data-group-id="9114281197-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="6080052877-1">(</span><span·class="p"·data-group-id="6080052877-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="1010237785-1">(</span><span·class="p"·data-group-id="1010237785-1">)</span><span·class="p">.</span><span·class="w">
284 </span><span·class="p"·data-group-id="6080052877-2">[</span><span·class="p"·data-group-id="6080052877-3">{</span><span·class="ss">aa</span><span·class="p">,</span><span·class="ss">worked</span><span·class="p"·data-group-id="6080052877-3">}</span><span·class="p"·data-group-id="6080052877-2">]</span><span·class="gp·unselectable">284 </span><span·class="p"·data-group-id="1010237785-2">[</span><span·class="p"·data-group-id="1010237785-3">{</span><span·class="ss">aa</span><span·class="p">,</span><span·class="ss">worked</span><span·class="p"·data-group-id="1010237785-3">}</span><span·class="p"·data-group-id="1010237785-2">]</span><span·class="gp·unselectable">
285 21&gt;·</span><span·class="nf">put</span><span·class="p"·data-group-id="6080052877-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="6080052877-4">)</span><span·class="p">.</span><span·class="w">285 21&gt;·</span><span·class="nf">put</span><span·class="p"·data-group-id="1010237785-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="1010237785-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="6080052877-5">(</span><span·class="mi">2</span><span·class="p"·data-group-id="6080052877-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="1010237785-5">(</span><span·class="mi">2</span><span·class="p"·data-group-id="1010237785-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="9818841345-1">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="9818841345-1">)</span><span·class="p">.</span><span·class="w">293 24&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="9675221732-1">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="9675221732-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="5784339481-1">(</span><span·class="p"·data-group-id="5784339481-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">put</span><span·class="p"·data-group-id="5784339481-2">(</span><span·class="ss">aa</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·79786a6c5ec7dca5a79abc6080492b5c730cd4022cafa3252273977a1017ce6f·...·]-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="6415287723-1">(</span><span·class="p"·data-group-id="6415287723-1">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">put</span><span·class="p"·data-group-id="6415287723-2">(</span><span·class="ss">aa</span><span·class="p">,</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·886016f2896e238b3f0f04411a985b2d28080455fbac1922a073aa7bbafd7cb8·...·]-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="5784339481-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="5784339481-4">[</span><span·class="mi">1</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·5cdf719affe891c7701fd51d0b5cc38c2aa672bd9a01bce76651f8ba52c13061·...·]-3">)</span><span·class="p">.</span><span·class="w">297 26&gt;·</span><span·class="nf">spawn</span><span·class="p"·data-group-id="6415287723-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="6415287723-4">[</span><span·class="mi">1</span><sp[·...·truncated·by·diffoscope;·len:·91,·SHA:·103bc60ba0afb8ab9697a3106a8e311aa1f71b279a98d3585dadf161c4f0e866·...·]-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="5784339481-5">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="5784339481-5">)</span><span·class="p">.</span><span·class="w">299 27&gt;·</span><span·class="nf">get</span><span·class="p"·data-group-id="6415287723-5">(</span><span·class="ss">aa</span><span·class="p"·data-group-id="6415287723-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="8859730246-1">(</span><span·class="s">&quot;hello·hello\n&quot;</span><span·class="p"·data-group-id="8859730246-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="9185701393-1">(</span><span·class="s">&quot;hello·hello\n&quot;</span><span·class="p"·data-group-id="9185701393-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="8859730246-2">(</span><span·class="mi">28</span><span·class="p"·data-group-id="8859730246-2">)</span><span·class="p">.</span><span·class="w">306 29&gt;·</span><span·class="nf">e</span><span·class="p"·data-group-id="9185701393-2">(</span><span·class="mi">28</span><span·class="p"·data-group-id="9185701393-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="8859730246-3">(</span><span·class="mi">28</span><span·class="p"·data-group-id="8859730246-3">)</span><span·class="p">.</span><span·class="w">309 30&gt;·</span><span·class="nf">v</span><span·class="p"·data-group-id="9185701393-3">(</span><span·class="mi">28</span><span·class="p"·data-group-id="9185701393-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="6837481112-1">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="6837481112-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="1106745168-1">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="1106745168-1">)</span><span·class="p">.</span><span·class="w">
315 </span><span·class="p"·data-group-id="6837481112-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">ex</span><span·class="p"·data-group-id="6837481112-2">}</span><span·class="gp·unselectable">315 </span><span·class="p"·data-group-id="1106745168-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">ex</span><span·class="p"·data-group-id="1106745168-2">}</span><span·class="gp·unselectable">
316 32&gt;·</span><span·class="nf">rr</span><span·class="p"·data-group-id="6837481112-3">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="6837481112-3">)</span><span·class="p">.</span><span·class="w">316 32&gt;·</span><span·class="nf">rr</span><span·class="p"·data-group-id="1106745168-3">(</span><span·class="ss">ex</span><span·class="p"·data-group-id="1106745168-3">)</span><span·class="p">.</span><span·class="w">
317 </span><span·class="p"·data-group-id="6837481112-4">[</span><span·class="ss">rec</span><span·class="p"·data-group-id="6837481112-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="1106745168-4">[</span><span·class="ss">rec</span><span·class="p"·data-group-id="1106745168-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="5806347845-1">(</span><span·class="ss">rec</span><span·class="p"·data-group-id="5806347845-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="9641446610-1">(</span><span·class="ss">rec</span><span·class="p"·data-group-id="9641446610-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="5806347845-2">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="p"·data-group-id="5806347845-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:·362e66c7131c025c719b0fcbdc38dde7d029b04f37139282dc2bfec0f48b5d28·...·]-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="9641446610-2">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="p"·data-group-id="9641446610-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:·bbe61cde81ba49fbaaf2cfd9b61b6aaa56dd40c7385688f88b9fc1653fd626a9·...·]-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="5063161794-1">{</span><span·class="p"·data-group-id="5063161794-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="0774456071-1">{</span><span·class="p"·data-group-id="0774456071-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="5169906419-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="5169906419-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="1272015525-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="1272015525-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="5169906419-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·c[·...·truncated·by·diffoscope;·len:·83,·SHA:·9add67a7622033bb21af4f16a83f3a6e5d196ca6ab9747f09a3b8976beb0d2b6·...·]-2">}</span></code></pre><p>Command·35·shows·the·workaround:·explicitly·assign·values·to·record·fields·that324 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="1272015525-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·c[·...·truncated·by·diffoscope;·len:·83,·SHA:·2889d05895521829a3b6d85648d7eb4ea5fbcd4ceee7e58a117ff3ff9c1d96b9·...·]-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="7986375548-1">(</span><span·class="nf">v</span><span·class="p"·data-group-id="7986375548-2">(</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="7986375548-2">)</span><span·class="p"·data-group-id="7986375548-1">)</span><span·class="p">.</span><span·class="w">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="7399625364-1">(</span><span·class="nf">v</span><span·class="p"·data-group-id="7399625364-2">(</span><span·class="o">-</span><span·class="mi">1</span><span·class="p"·data-group-id="7399625364-2">)</span><span·class="p"·data-group-id="7399625364-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="7986375548-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·cl[·...·truncated·by·diffoscope;·len:·82,·SHA:·cce34c73bef3a3b4161e9e7af00c0e3433bc8beb84350531a17e70671b5411a3·...·]-3">}</span><span·class="w">326 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="7399625364-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·cl[·...·truncated·by·diffoscope;·len:·82,·SHA:·32b5237662d7e1d19beb78ea4f605e4c6d1a1c4de3d6c50450587577f73e5bd0·...·]-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="3460453116-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3460453116-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:·903332340bba22ff0cf10f0426055a4b2a9be49c669606707360f961b07e17b6·...·]-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="7396046031-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7396046031-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:·12c7ac861e95939214d3daa3c98b97e326376cf51442bfd29bfb0e16c4beb011·...·]-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="8726760656-1">{</span><span·class="p"·data-group-id="8726760656-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="9656172417-1">{</span><span·class="p"·data-group-id="9656172417-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="8726760656-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="8726760656-3">[</span><span·class="p"·data-group-id="8726760656-3">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·b18d0da1197bf2197fa45512bb071fe4129cd5a02f08114801900655d5a3628e·...·]-2">}</span><span·class="w">331 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="9656172417-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="9656172417-3">[</span><span·class="p"·data-group-id="9656172417-3">]</span><span·class="p"·data-group-id="[·...·truncated·by·diffoscope;·len:·10,·SHA:·4ebc7da8be15a5c96814aa7f18940daf22dbc6499d391a925c0d773a3867c04e·...·]-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="3036775656-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3036775656-2">{</span><span·class="ss">c</span><span·class="p"·data-group-id="3036775656-2">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·c23ef0a6530866a24c1a4515167861cae7d1f29260d314df88cd100844b581f8·...·]-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="7841717509-1">(</span><span·class="ss">rec</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7841717509-2">{</span><span·class="ss">c</span><span·class="p"·data-group-id="7841717509-2">}</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·13,·SHA:·393ff59c388f58dde468ab5fc29d198726ede3dc97e5015b7e13cd12cfa7387e·...·]-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="3036775656-3">{</span><span·class="p"·data-group-id="3036775656-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="7841717509-3">{</span><span·class="p"·data-group-id="7841717509-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="3036775656-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="3036775656-4">}</span><span·class="w">335 </span><span·class="o">#</span><span·class="ss">rec</span><span·class="p"·data-group-id="7841717509-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="7841717509-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.1/doc/html/shell_default.html
    
Offset 125, 18 lines modifiedOffset 125, 18 lines modified
125 ····<small·class="app-vsn"·translate="no">(stdlib·v6.2.1)</small>125 ····<small·class="app-vsn"·translate="no">(stdlib·v6.2.1)</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="3414196177-1">(</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="3414196177-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="9644580471-1">(</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="9644580471-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="3414196177-2">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="3414196177-2">)</span><span·class="p">.</span><span·class="w">131 2&gt;·</span><span·class="nf">c</span><span·class="p"·data-group-id="9644580471-2">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="9644580471-2">)</span><span·class="p">.</span><span·class="w">
132 </span><span·class="p"·data-group-id="3414196177-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="3414196177-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="9644580471-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="9644580471-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.03 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/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="5194195641-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:·06c380d101f82457e99bee2d00a498ea90d6f60ec32e6edca1bbf6d5021612a0·...·]-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="6929017024-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:·83ad5e9bb89b63f22b403182d847068741a9084b736d5288c1a6030f7b554c90·...·]-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.3/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.3/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="0867774088-1">(</span><span·class="p"·data-group-id="0867774088-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="3810260626-1">(</span><span·class="p"·data-group-id="3810260626-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="0867774088-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="0867774088-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="3810260626-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="3810260626-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.1/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="1799591246-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="1799591246-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:·d7f50b263ba65f2e17b813858e55b2913511e6f46ab28b3043af40b8671db4ab·...·]-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="6779442262-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="6779442262-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:·25e552740d893a8908b431ee88828a24ee90e0630a0f21f03f24e2b7febc1e21·...·]-2">)</span><span·class="w">·</span><span·class="k">end</span><span·class="w">
266 </span><span·class="p"·data-group-id="1799591246-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="1799591246-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="1799591246-4">)</sp[·...·truncated·by·diffoscope;·len:·194,·SHA:·b421e488fefed42ec6df16cec28e96a33ab755a89dc286b1c2f8ee5468c6bb69·...·]-3">}</span><span·class="w">266 </span><span·class="p"·data-group-id="6779442262-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="6779442262-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="6779442262-4">)</sp[·...·truncated·by·diffoscope;·len:·194,·SHA:·620c2516ba52b8c77703e505ec0f1093a3269a4af1c26ac77e4bee72886d3382·...·]-3">}</span><span·class="w">
267 </span><span·class="p"·data-group-id="1799591246-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="1799591246-6">(</span><span·class="p"·data-group-id="1799591246-7">{</span><span·class="n">A</sp[·...·truncated·by·diffoscope;·len:·550,·SHA:·40f848eba73dd5dae585c60c264e5ecf954c59040e8cec89c964c6f28a0d422b·...·]-5">}</span><span·class="w">267 </span><span·class="p"·data-group-id="6779442262-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="6779442262-6">(</span><span·class="p"·data-group-id="6779442262-7">{</span><span·class="n">A</sp[·...·truncated·by·diffoscope;·len:·550,·SHA:·8bd5c2e63e60977728521c85971a64254d3ae1315eb0e14bf50379ff52d29244·...·]-5">}</span><span·class="w">
268 </span><span·class="p"·data-group-id="1799591246-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="1799591246-10">(</span><span·class="p"·data-group-id="1799591246-11">{</span><span·class="p">_</[·...·truncated·by·diffoscope;·len:·508,·SHA:·581d1d65d200b1d2c76a790e699d0eb13532e90094e66997b9bd408ec9c573ed·...·]-9">}</span><span·class="w">268 </span><span·class="p"·data-group-id="6779442262-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="6779442262-10">(</span><span·class="p"·data-group-id="6779442262-11">{</span><span·class="p">_</[·...·truncated·by·diffoscope;·len:·508,·SHA:·97aca68c614fc85eca2bf2955ea7c9d0374f289286fe2a66bfd40ddb156dea49·...·]-9">}</span><span·class="w">
269 </span><span·class="p"·data-group-id="1799591246-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="1799591246-14">(</span><span·class="p"·data-group-id="1799591246-15">{</span><span·class="p">_<[·...·truncated·by·diffoscope;·len:·1025,·SHA:·59412c11d33edccb05338f678f6d23e55a7f89c0adf9982240f4b2de2d06d0d8·...·]-13">}</span><span·class="w">269 </span><span·class="p"·data-group-id="6779442262-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="6779442262-14">(</span><span·class="p"·data-group-id="6779442262-15">{</span><span·class="p">_<[·...·truncated·by·diffoscope;·len:·1025,·SHA:·7121527dc65775dd7a360fb763689032652062b13d5153a95c241024cb8f08b7·...·]-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="9121744238-1">(</span><span·class="p"·data-group-id="9121744238-2">[</span><span·class="p"·data-group-id="9121744238-3">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="9121744238-3">]</span><[·...·truncated·by·diffoscope;·len:·297,·SHA:·ddc173ea8a9c1104be10eb67d2e65eec3cb2bf5ba8adfcd472ad7696965b2ae4·...·]-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="8603315306-1">(</span><span·class="p"·data-group-id="8603315306-2">[</span><span·class="p"·data-group-id="8603315306-3">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="8603315306-3">]</span><[·...·truncated·by·diffoscope;·len:·297,·SHA:·9389aeb2bddc86cfc2391774be1ede2224125e2603431f079b7e16f4b1f7265b·...·]-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="9121744238-5">(</span><span·class="n">Ss</span><span·class="p"·data-group-id="9121744238-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="8603315306-5">(</span><span·class="n">Ss</span><span·class="p"·data-group-id="8603315306-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="9121744238-6">(</span><span·class="n">CR</span><span·class="p"·data-group-id="9121744238-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="8603315306-6">(</span><span·class="n">CR</span><span·class="p"·data-group-id="8603315306-6">)</span><span·class="p">.</span><span·class="w">
1804 </span><span·class="p"·data-group-id="9121744238-7">[</span><span·class="p"·data-group-id="9121744238-8">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="9121744238-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span[·...·truncated·by·diffoscope;·len:·1231,·SHA:·2b295de6269f906775729d58bbd69e2f15995e02e60deb82f00b432271493c10·...·]-7">]</span></code></pre>1804 </span><span·class="p"·data-group-id="8603315306-7">[</span><span·class="p"·data-group-id="8603315306-8">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="p"·data-group-id="8603315306-9">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span[·...·truncated·by·diffoscope;·len:·1231,·SHA:·2981f57bf3ccf8b180b7a86b0a8d5e9a24b3f084a0027b1b1b50afb4ac297f7b·...·]-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="3468373795-1">(</span><span·class="p"·data-group-id="3468373795-2">[</span><span·class="p"·data-group-id="3468373795-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="3468373795-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·4b0bcfb54484dc3d6dfc494f6435587c30be6afd0e7f78f08dbcff6307d8b5a6·...·]-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="8591393276-1">(</span><span·class="p"·data-group-id="8591393276-2">[</span><span·class="p"·data-group-id="8591393276-3">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8591393276-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·8c0f8da2c006fff07030173f324e75ee5d7a98b438142bc2883034931567ecbd·...·]-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="3468373795-6">(</span><span·class="p"·data-group-id="3468373795-7">[</span><span·class="p"·data-group-id="3468373795-8">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="3468373795-8">}</span><[·...·truncated·by·diffoscope;·len:·503,·SHA:·1ae04df1b101feecdc3283daf7175ac103d96e61ca5d9da0ecb357a4f36c1458·...·]-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="8591393276-6">(</span><span·class="p"·data-group-id="8591393276-7">[</span><span·class="p"·data-group-id="8591393276-8">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="8591393276-8">}</span><[·...·truncated·by·diffoscope;·len:·503,·SHA:·1178688e27a30086c525b2d667912a6d6475586a5e5ef4d1f859d0ea702a513b·...·]-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="3468373795-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="3468373795-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="8591393276-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="8591393276-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="3468373795-12">(</span><span·class="n">F</span><span·class="p"·data-group-id="3468373795-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="8591393276-12">(</span><span·class="n">F</span><span·class="p"·data-group-id="8591393276-12">)</span><span·class="p">.</span><span·class="w">
1835 </span><span·class="p"·data-group-id="3468373795-13">[</span><span·class="p"·data-group-id="3468373795-14">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="3468373795-14">}</span><span·class="p">,</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·402,·SHA:·d6dc183156feefd3e5f6700a2911bf52f7aa7dea3f2e41e9ee5ddb68723d7003·...·]-13">]</span></code></pre>1835 </span><span·class="p"·data-group-id="8591393276-13">[</span><span·class="p"·data-group-id="8591393276-14">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">x</span><span·class="p"·data-group-id="8591393276-14">}</span><span·class="p">,</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·402,·SHA:·2a1fd40fb6999059682915949eecaba6f17769bb984779e5abd2730526c33e55·...·]-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="5504590569-1">(</span><span·class="p"·data-group-id="5504590569-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="5504590569-2">]</span><span·class="p"·data-group-id="5504590569-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="8445907672-1">(</span><span·class="p"·data-group-id="8445907672-2">[</span><span·class="ss">a</span><span·class="p">,</span><span·class="ss">b</span><span·class="p"·data-group-id="8445907672-2">]</span><span·class="p"·data-group-id="8445907672-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="5504590569-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="5504590569-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="8445907672-3">(</span><span·class="mi">1</span><span·class="p"·data-group-id="8445907672-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="5504590569-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="5504590569-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="8445907672-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="8445907672-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="5504590569-5">(</span><span·class="n">R</span><span·class="p"·data-group-id="5504590569-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="8445907672-5">(</span><span·class="n">R</span><span·class="p"·data-group-id="8445907672-5">)</span><span·class="p">.</span><span·class="w">
1867 </span><span·class="p"·data-group-id="5504590569-6">[</span><span·class="p"·data-group-id="5504590569-7">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="5504590569-7">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·750c703ae3e0a88c49dd87e4c645defb001ef449795f59dfe366b3b353225b5b·...·]-6">]</span></code></pre>1867 </span><span·class="p"·data-group-id="8445907672-6">[</span><span·class="p"·data-group-id="8445907672-7">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8445907672-7">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·191,·SHA:·4e5658176250c844699a83fbc38c960e58b9bcec46f202428af83286b669a7aa·...·]-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="8634973219-1">(</span><span·class="p"·data-group-id="8634973219-2">[</span><span·class="p"·data-group-id="8634973219-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="8634973219-3">}</span><[·...·truncated·by·diffoscope;·len:·500,·SHA:·c0c5b1ce724610265eec43d69dfaa92fa626ab7be2619d6df5dcde94836cdbbd·...·]9-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="4315455929-1">(</span><span·class="p"·data-group-id="4315455929-2">[</span><span·class="p"·data-group-id="4315455929-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="4315455929-3">}</span><[·...·truncated·by·diffoscope;·len:·500,·SHA:·682cedcae248273b2d7a112d6286513a0cc09cda3f1b0e569a15844a353512b6·...·]9-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="8634973219-6">(</span><span·class="n">R1</span><span·class="p"·data-group-id="8634973219-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="4315455929-6">(</span><span·class="n">R1</span><span·class="p"·data-group-id="4315455929-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="8634973219-7">(</span><span·class="n">R2</span><span·class="p"·data-group-id="8634973219-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="4315455929-7">(</span><span·class="n">R2</span><span·class="p"·data-group-id="4315455929-7">)</span><span·class="p">.</span><span·class="w">
1895 </span><span·class="p"·data-group-id="8634973219-8">[</span><span·class="p"·data-group-id="8634973219-9">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="8634973219-9">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·398,·SHA:·c6302ec6f3650c73894aa4ae651216fb6572b5e638cdb0d56414f32492972ee0·...·]9-8">]</span></code></pre>1895 </span><span·class="p"·data-group-id="4315455929-8">[</span><span·class="p"·data-group-id="4315455929-9">{</span><span·class="ss">a</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4315455929-9">}</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·398,·SHA:·a940ea3cc9604f6779c09b124430b4aa4393c051363303d4edd53d6b2fc06f3c·...·]9-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="3676330872-1">(</span><span·class="p"·data-group-id="3676330872-2">[</span><span·class="p"·data-group-id="3676330872-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="3676330872-3">}</span><[·...·truncated·by·diffoscope;·len:·705,·SHA:·e61a47281ec29d9ca41bc796c343ac9e9eeabd3a7494717a2e62176cf104c7d1·...·]-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="2389873397-1">(</span><span·class="p"·data-group-id="2389873397-2">[</span><span·class="p"·data-group-id="2389873397-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="2389873397-3">}</span><[·...·truncated·by·diffoscope;·len:·705,·SHA:·1ea3974d69df67153e597bd7ac333a30ebad48f09e1d25e75ff82578cb3cf44e·...·]-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="3676330872-7">(</span><span·class="n">R</span><span·class="p"·data-group-id="3676330872-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="2389873397-7">(</span><span·class="n">R</span><span·class="p"·data-group-id="2389873397-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="3676330872-8">(</span><span·class="n">S</span><span·class="p"·data-group-id="3676330872-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="2389873397-8">(</span><span·class="n">S</span><span·class="p"·data-group-id="2389873397-8">)</span><span·class="p">.</span><span·class="w">
2008 </span><span·class="p"·data-group-id="3676330872-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="3676330872-9">]</span></code></pre>2008 </span><span·class="p"·data-group-id="2389873397-9">[</span><span·class="mi">1</span><span·class="p">,</span><span·class="mi">2</span><span·class="p"·data-group-id="2389873397-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="6257027548-1">(</span><span·class="p"·data-group-id="6257027548-2">[</span><span·class="p"·data-group-id="6257027548-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="6257027548-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·727fe56a564c19c0243da48d0bbf81d3c5fd6791df129056e0c84eb1949e47fb·...·]-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="2402889171-1">(</span><span·class="p"·data-group-id="2402889171-2">[</span><span·class="p"·data-group-id="2402889171-3">{</span><span·class="mi">1</span><span·class="p">,</span><span·class="ss">a</span><span·class="p"·data-group-id="2402889171-3">}</span><[·...·truncated·by·diffoscope;·len:·501,·SHA:·46e9585d405dede87d82adc3b939e8d9bdd35f0f99932463d7694ee3a24dc553·...·]-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="6257027548-6">(</span><span·class="p"·data-group-id="6257027548-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="6257027548-7">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·cef3e77968db763505a200afc00fe2d1c823ef5d14511cd9e821f394387bf667·...·]-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="2402889171-6">(</span><span·class="p"·data-group-id="2402889171-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="2402889171-7">]</span><span[·...·truncated·by·diffoscope;·len:·36,·SHA:·953d9ff9fa09169531c789c2be34bdc6e288392b2a2843b0f94410a152b08152·...·]-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="6257027548-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="6257027548-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="2402889171-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="2402889171-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.1/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,·Mar·18·2025·07:52:32,·uncompressed·size·20,·method=store1 Zip·archive·data,·made·by·v6.1·UNIX,·extract·using·at·least·v1.0,·last·modified,·last·modified·Sun,·Mar·18·2025·08:44:12,·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
    
Offset 52, 21 lines modifiedOffset 52, 21 lines modified
52 string·and·returns·a·formatted·expressions·as·a·string.·See52 string·and·returns·a·formatted·expressions·as·a·string.·See
53 <a·href="shell.xhtml#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.·Your53 <a·href="shell.xhtml#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
54 command·must·include·<code·class="inline">${file}</code>·somewhere·in·the·string,·for·the·shell·to·know54 command·must·include·<code·class="inline">${file}</code>·somewhere·in·the·string,·for·the·shell·to·know
55 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·multiline55 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
56 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·be56 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
57 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.57 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.
58 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">58 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">
59 </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="6050113306-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="6050113306-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="6050113306-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">1[·...·truncated·by·diffoscope;·len:·1496,·SHA:·db70aee73ee2548b3ad228353b4ce872ef603c352a3ec09fa2d96839d1bbcdb3·...·]-8">]</span><span·class="w">59 </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="8468785451-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="8468785451-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="8468785451-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">1[·...·truncated·by·diffoscope;·len:·1496,·SHA:·b92ffae940443ad0b7411e6996cfd5b0fa551f44277ab342f7d6789d49af2709·...·]-8">]</span><span·class="w">
  
60 </span><span·class="n">Test</span><span·class="w">·</span><span·class="ss">slogan</span><span·class="w">60 </span><span·class="n">Test</span><span·class="w">·</span><span·class="ss">slogan</span><span·class="w">
61 </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>·-·The61 </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
62 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">62 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">
63 </span><span·class="n">Test</span><span·class="w">·</span><span·class="ss">slogan</span><span·class="w">63 </span><span·class="n">Test</span><span·class="w">·</span><span·class="ss">slogan</span><span·class="w">
64 </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="0296153671-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="0296153671-1">)</span><span·class="w">64 </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="6663204518-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="6663204518-1">)</span><span·class="w">
65 </span><span·class="mi">1</span><span·class="o">&gt;</span></code></pre><p>The·default·is·the·return·value·of65 </span><span·class="mi">1</span><span·class="o">&gt;</span></code></pre><p>The·default·is·the·return·value·of
66 <a·href="../../../../lib/../erts/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·determine66 <a·href="../../../../lib/../erts/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
67 how·the·Erlang·shell·outputs·lists·of·integers.</p></li></ul><h2·id="see-also"·class="section-heading">67 how·the·Erlang·shell·outputs·lists·of·integers.</p></li></ul><h2·id="see-also"·class="section-heading">
68 ··<a·href="#see-also"·class="hover-link">68 ··<a·href="#see-also"·class="hover-link">
69 ····<i·class="ri-link-m"·aria-hidden="true"></i>69 ····<i·class="ri-link-m"·aria-hidden="true"></i>
70 ··</a>70 ··</a>
71 ··<span·class="text">See·Also</span>71 ··<span·class="text">See·Also</span>
392 KB
OEBPS/sofs.xhtml
Max HTML report size reached
7.93 KB
OEBPS/slave.xhtml
    
Offset 251, 15 lines modifiedOffset 251, 15 lines modified
251 ······</div>251 ······</div>
  
252 <p>Starts·a·number·of·pseudo·servers.·A·pseudo·server·is·a·server·with·a·registered252 <p>Starts·a·number·of·pseudo·servers.·A·pseudo·server·is·a·server·with·a·registered
253 name·that·does·nothing·but·pass·on·all·message·to·the·real·server·that·executes253 name·that·does·nothing·but·pass·on·all·message·to·the·real·server·that·executes
254 at·a·master·node.·A·pseudo·server·is·an·intermediary·that·only·has·the·same254 at·a·master·node.·A·pseudo·server·is·an·intermediary·that·only·has·the·same
255 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>255 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>
256 graphics·code·on·this·node,·you·can·start·server·<code·class="inline">pxw_server</code>·as·a·pseudo·server256 graphics·code·on·this·node,·you·can·start·server·<code·class="inline">pxw_server</code>·as·a·pseudo·server
257 at·the·slave·node.·This·is·illustrated·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">rpc</samp><samp·class="p">:</samp><samp·class="nf">call</samp><samp·class="p"·data-group-id="1085929566-1">(</samp><samp·class="n">N</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">slave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">pseudo</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·c[·...·truncated·by·diffoscope;·len:·462,·SHA:·e4784236f3989b594f53730d8a7a909187133ca2fb5fcc8bce3371d00847b176·...·]-1">)</samp><samp·class="p">.</samp></code></pre>257 at·the·slave·node.·This·is·illustrated·as·follows:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">rpc</samp><samp·class="p">:</samp><samp·class="nf">call</samp><samp·class="p"·data-group-id="6612780441-1">(</samp><samp·class="n">N</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">slave</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">pseudo</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·c[·...·truncated·by·diffoscope;·len:·462,·SHA:·e75cf84e116fe39131ed7c56abbb2e83e031ceeb821c3f5cf5162cb6e18a3cde·...·]-1">)</samp><samp·class="p">.</samp></code></pre>
258 ··</section>258 ··</section>
259 </section>259 </section>
260 <section·class="detail"·id="relay/1">260 <section·class="detail"·id="relay/1">
  
261 ··<div·class="detail-header">261 ··<div·class="detail-header">
262 ····<a·href="#relay/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">262 ····<a·href="#relay/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
263 ······<i·class="ri-link-m"·aria-hidden="true"></i>263 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 397, 17 lines modifiedOffset 397, 17 lines modified
397 as·fully·qualified·names;·short·names·can·also·be·used.·This·is·the·same397 as·fully·qualified·names;·short·names·can·also·be·used.·This·is·the·same
398 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.xhtml#t:user/0"><code·class="inline">io:user/0</code></a>·process·so·that·all·terminal·I/O·that·is398 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.xhtml#t:user/0"><code·class="inline">io:user/0</code></a>·process·so·that·all·terminal·I/O·that·is
399 produced·at·the·slave·is·automatically·relayed·to·the·master.·Also,·the·file399 produced·at·the·slave·is·automatically·relayed·to·the·master.·Also,·the·file
400 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·is400 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
401 passed·to·the·new·node·and·can·be·used·for·a·variety·of·purposes;·see401 passed·to·the·new·node·and·can·be·used·for·a·variety·of·purposes;·see
402 <a·href="../../../../lib/../erts/doc/html/erl_cmd.xhtml"><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·node402 <a·href="../../../../lib/../erts/doc/html/erl_cmd.xhtml"><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
403 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·the403 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
404 master·node.</li></ul><p>The·following·code·is·executed·to·achieve·this:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">E</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="s">&quot;·-env·DISPLAY·&quot;</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="nc">net_adm</samp><samp·class="p">:</samp><samp·class="nf">localhost</samp><samp·class="p"·data-group-id="8210547763-1">(</samp><samp·class="p"·data-group-id="8210547763-1">)</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;:0·&quot;</samp><samp·class="p">,</samp><samp·class="w">404 master·node.</li></ul><p>The·following·code·is·executed·to·achieve·this:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">E</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="s">&quot;·-env·DISPLAY·&quot;</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="nc">net_adm</samp><samp·class="p">:</samp><samp·class="nf">localhost</samp><samp·class="p"·data-group-id="1785411932-1">(</samp><samp·class="p"·data-group-id="1785411932-1">)</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;:0·&quot;</samp><samp·class="p">,</samp><samp·class="w">
405 </samp><samp·class="n">Arg</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="s">&quot;-mnesia_dir·&quot;</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="n">M</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;·-pa·&quot;</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="n">Dir</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="n">E</samp><samp·class="p">,</samp><samp·class="w">405 </samp><samp·class="n">Arg</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·class="s">&quot;-mnesia_dir·&quot;</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="n">M</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="s">&quot;·-pa·&quot;</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="n">Dir</samp><samp·class="w">·</samp><samp·class="o">++</samp><samp·class="w">·</samp><samp·class="n">E</samp><samp·class="p">,</samp><samp·class="w">
406 </samp><samp·class="nc">slave</samp><samp·class="p">:</samp><samp·class="nf">start</samp><samp·class="p"·data-group-id="8210547763-2">(</samp><samp·class="n">H</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Arg</samp><samp·class="p"·data-group-id="8210547763-2">)</samp><samp·class="p">.</samp></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,406 </samp><samp·class="nc">slave</samp><samp·class="p">:</samp><samp·class="nf">start</samp><samp·class="p"·data-group-id="1785411932-2">(</samp><samp·class="n">H</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Arg</samp><samp·class="p"·data-group-id="1785411932-2">)</samp><samp·class="p">.</samp></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,
407 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.407 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.
408 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·the408 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
409 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·that409 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
410 <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>410 <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>
411 ··</section>411 ··</section>
412 </section>412 </section>
413 <section·class="detail"·id="start_link/1">413 <section·class="detail"·id="start_link/1">
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="5955884112-1">(</samp><samp·class="s">&quot;abc&quot;</samp><samp·class="p"·data-group-id="5955884112-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="7120272379-1">(</samp><samp·class="s">&quot;abc&quot;</samp><samp·class="p"·data-group-id="7120272379-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="5955884112-2">(</samp><samp·class="ss">foo</samp><samp·class="p"·data-group-id="5955884112-2">)</samp><samp·class="p">.</samp><samp·class="w">27 2&gt;·</samp><samp·class="nf">c</samp><samp·class="p"·data-group-id="7120272379-2">(</samp><samp·class="ss">foo</samp><samp·class="p"·data-group-id="7120272379-2">)</samp><samp·class="p">.</samp><samp·class="w">
28 </samp><samp·class="p"·data-group-id="5955884112-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="5955884112-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="7120272379-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="7120272379-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
    
Offset 47, 19 lines modifiedOffset 47, 19 lines modified
47 <p>The·following·functions·in·this·module·also·exist·and·provide·the·same47 <p>The·following·functions·in·this·module·also·exist·and·provide·the·same
48 functionality·in·the·<a·href="gb_sets.xhtml"><code·class="inline">gb_sets</code></a>·and·<a·href="ordsets.xhtml"><code·class="inline">ordsets</code></a>·modules.·That·is,·by·only48 functionality·in·the·<a·href="gb_sets.xhtml"><code·class="inline">gb_sets</code></a>·and·<a·href="ordsets.xhtml"><code·class="inline">ordsets</code></a>·modules.·That·is,·by·only
49 changing·the·module·name·for·each·call,·you·can·try·out·different·set49 changing·the·module·name·for·each·call,·you·can·try·out·different·set
50 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>·with50 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
51 respect·to·the·aforementioned·functions,·their·overall·<em>behavior</em>·may·differ.51 respect·to·the·aforementioned·functions,·their·overall·<em>behavior</em>·may·differ.
52 As·mentioned,·this·module·considers·elements·as·different·if·and·only·if·they52 As·mentioned,·this·module·considers·elements·as·different·if·and·only·if·they
53 do·not·match·(<code·class="inline">=:=</code>),·while·both·<a·href="ordsets.xhtml"><code·class="inline">ordsets</code></a>·and·<a·href="gb_sets.xhtml"><code·class="inline">gb_sets</code></a>·consider·elements53 do·not·match·(<code·class="inline">=:=</code>),·while·both·<a·href="ordsets.xhtml"><code·class="inline">ordsets</code></a>·and·<a·href="gb_sets.xhtml"><code·class="inline">gb_sets</code></a>·consider·elements
54 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"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="nc">sets</samp><samp·class="p">:</samp><samp·class="nf">is_element</samp><samp·class="p"·data-group-id="3510735518-1">(</samp><samp·class="mf">1.0</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="nc">sets</samp><samp·class="p">:</samp><samp·class="nf">from_list</samp><samp·class="p"·data-group-id="3510735518-2">(</samp><samp·class="p"·data-g[·...·truncated·by·diffoscope;·len:·203,·SHA:·39c0085ea9c8ef452f47bfb1673918497e0059b8dc8ea85723c94790d6e82f43·...·]-1">)</samp><samp·class="p">.</samp><samp·class="w">54 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"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="nc">sets</samp><samp·class="p">:</samp><samp·class="nf">is_element</samp><samp·class="p"·data-group-id="3035144023-1">(</samp><samp·class="mf">1.0</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="nc">sets</samp><samp·class="p">:</samp><samp·class="nf">from_list</samp><samp·class="p"·data-group-id="3035144023-2">(</samp><samp·class="p"·data-g[·...·truncated·by·diffoscope;·len:·203,·SHA:·93ebcf979ac068e65f22118d15cfdf17b135597b6e39d57580b5f963763e584b·...·]-1">)</samp><samp·class="p">.</samp><samp·class="w">
55 </samp><samp·class="ss">false</samp><samp·class="gp·unselectable">55 </samp><samp·class="ss">false</samp><samp·class="gp·unselectable">
56 2&gt;·</samp><samp·class="nc">ordsets</samp><samp·class="p">:</samp><samp·class="nf">is_element</samp><samp·class="p"·data-group-id="3510735518-4">(</samp><samp·class="mf">1.0</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="nc">ordsets</samp><samp·class="p">:</samp><samp·class="nf">from_list</samp><samp·class="p"·data-group-id="3510735518-5">(</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·206,·SHA:·76e8d67304f2c41b94139fe6a6d5cf2831eb1ecdc543143fbb5a4736032bb10f·...·]-4">)</samp><samp·class="p">.</samp><samp·class="w">56 2&gt;·</samp><samp·class="nc">ordsets</samp><samp·class="p">:</samp><samp·class="nf">is_element</samp><samp·class="p"·data-group-id="3035144023-4">(</samp><samp·class="mf">1.0</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="nc">ordsets</samp><samp·class="p">:</samp><samp·class="nf">from_list</samp><samp·class="p"·data-group-id="3035144023-5">(</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·206,·SHA:·410917141581396579007fd598a880da9cbe95446d9d5aa325bb74f95515e2a2·...·]-4">)</samp><samp·class="p">.</samp><samp·class="w">
57 </samp><samp·class="ss">true</samp><samp·class="gp·unselectable">57 </samp><samp·class="ss">true</samp><samp·class="gp·unselectable">
58 2&gt;·</samp><samp·class="nc">gb_sets</samp><samp·class="p">:</samp><samp·class="nf">is_element</samp><samp·class="p"·data-group-id="3510735518-7">(</samp><samp·class="mf">1.0</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="nc">gb_sets</samp><samp·class="p">:</samp><samp·class="nf">from_list</samp><samp·class="p"·data-group-id="3510735518-8">(</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·206,·SHA:·d69e943e9c64f8d66633b3bb7e9bbe59fc34af9c8fa60bf80ef22aea622abde2·...·]-7">)</samp><samp·class="p">.</samp><samp·class="w">58 2&gt;·</samp><samp·class="nc">gb_sets</samp><samp·class="p">:</samp><samp·class="nf">is_element</samp><samp·class="p"·data-group-id="3035144023-7">(</samp><samp·class="mf">1.0</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="nc">gb_sets</samp><samp·class="p">:</samp><samp·class="nf">from_list</samp><samp·class="p"·data-group-id="3035144023-8">(</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·206,·SHA:·e47d2c5c3a077346535e46cda4bcd34efe389436f5da464d395a2218d404330b·...·]-7">)</samp><samp·class="p">.</samp><samp·class="w">
59 </samp><samp·class="ss">true</samp></code></pre></section><h2·id="module-see-also"·class="section-heading">59 </samp><samp·class="ss">true</samp></code></pre></section><h2·id="module-see-also"·class="section-heading">
60 ··<a·href="#module-see-also"·class="hover-link">60 ··<a·href="#module-see-also"·class="hover-link">
61 ····<i·class="ri-link-m"·aria-hidden="true"></i>61 ····<i·class="ri-link-m"·aria-hidden="true"></i>
62 ··</a>62 ··</a>
63 ··<span·class="text">See·Also</span>63 ··<span·class="text">See·Also</span>
64 </h2>64 </h2>
65 <p><a·href="gb_sets.xhtml"><code·class="inline">gb_sets</code></a>,·<a·href="ordsets.xhtml"><code·class="inline">ordsets</code></a></p>65 <p><a·href="gb_sets.xhtml"><code·class="inline">gb_sets</code></a>,·<a·href="ordsets.xhtml"><code·class="inline">ordsets</code></a></p>
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="2516776626-1">(</samp><samp·class="nc">erlang</samp><samp·class="p">:</samp><samp·class="nf">phash2</samp><samp·class="p"·data-group-id="2516776626-2">(</samp><samp·class="p"·data-group-id="2516776626-3">[</samp><samp·class="nf">node</samp><samp·class="p"·[·...·truncated·by·diffoscope;·len:·184,·SHA:·c933ce93403a0abe5187b301621325c640e23a96b61a42d8a257ebecfaf3b0cd·...·]-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="6859787589-1">(</samp><samp·class="nc">erlang</samp><samp·class="p">:</samp><samp·class="nf">phash2</samp><samp·class="p"·data-group-id="6859787589-2">(</samp><samp·class="p"·data-group-id="6859787589-3">[</samp><samp·class="nf">node</samp><samp·class="p"·[·...·truncated·by·diffoscope;·len:·184,·SHA:·2b4499177fbe38410ad1f359a60de0e00d92e51abf66594eec4b8c8cb669e79f·...·]-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="2516776626-5">(</samp><samp·class="p"·data-group-id="2516776626-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="6859787589-5">(</samp><samp·class="p"·data-group-id="6859787589-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="2516776626-6">(</samp><samp·class="p"·data-group-id="2516776626-6">)</samp><samp·class="p"·data-group-id="2516776626-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="6859787589-6">(</samp><samp·class="p"·data-group-id="6859787589-6">)</samp><samp·class="p"·data-group-id="6859787589-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
400 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
    
Offset 1126, 23 lines modifiedOffset 1126, 23 lines modified
1126 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.xhtml#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked1126 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.xhtml#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked
1127 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·by1127 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
1128 <a·href="sys.xhtml#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·or·sent·to·<a·href="../../../../lib/kernel/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·status1128 <a·href="sys.xhtml#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·or·sent·to·<a·href="../../../../lib/kernel/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
1129 and·shall·return·a·map·<code·class="inline">NewStatus</code>·with·the·same·keys,1129 and·shall·return·a·map·<code·class="inline">NewStatus</code>·with·the·same·keys,
1130 but·it·may·transform·some·values.</p><p>Two·possible·use·cases·for·this·callback·is·to·remove1130 but·it·may·transform·some·values.</p><p>Two·possible·use·cases·for·this·callback·is·to·remove
1131 sensitive·information·from·the·state·to·prevent·it·from·being·printed1131 sensitive·information·from·the·state·to·prevent·it·from·being·printed
1132 in·log·files,·or·to·compact·large·irrelevant·status·items1132 in·log·files,·or·to·compact·large·irrelevant·status·items
1133 that·would·only·clutter·the·logs.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">format_status</samp><samp·class="p"·data-group-id="4338659171-1">(</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="4338659171-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1133 that·would·only·clutter·the·logs.</p><p>Example:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">format_status</samp><samp·class="p"·data-group-id="3464679516-1">(</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="3464679516-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
1134 ··</samp><samp·class="nc">maps</samp><samp·class="p">:</samp><samp·class="nf">map</samp><samp·class="p"·data-group-id="4338659171-2">(</samp><samp·class="w">1134 ··</samp><samp·class="nc">maps</samp><samp·class="p">:</samp><samp·class="nf">map</samp><samp·class="p"·data-group-id="3464679516-2">(</samp><samp·class="w">
1135 ····</samp><samp·class="nf">fun</samp><samp·class="p"·data-group-id="4338659171-3">(</samp><samp·class="ss">state</samp><samp·class="p">,</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="4338659171-3">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1135 ····</samp><samp·class="nf">fun</samp><samp·class="p"·data-group-id="3464679516-3">(</samp><samp·class="ss">state</samp><samp·class="p">,</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="3464679516-3">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
1136 ············</samp><samp·class="nc">maps</samp><samp·class="p">:</samp><samp·class="nf">remove</samp><samp·class="p"·data-group-id="4338659171-4">(</samp><samp·class="ss">private_key</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="4338659171-4">)</samp><samp·class="p">;</samp><samp·class="w">1136 ············</samp><samp·class="nc">maps</samp><samp·class="p">:</samp><samp·class="nf">remove</samp><samp·class="p"·data-group-id="3464679516-4">(</samp><samp·class="ss">private_key</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="3464679516-4">)</samp><samp·class="p">;</samp><samp·class="w">
1137 ·······</samp><samp·class="p"·data-group-id="4338659171-5">(</samp><samp·class="ss">message</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="4338659171-6">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p">_</samp><samp·class="n">Pass</[·...·truncated·by·diffoscope;·len:·99,·SHA:·99bdd97dac44ad913cc5029d167c3f49f5b8eca730fcf886680b87070714357b·...·]-5">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1137 ·······</samp><samp·class="p"·data-group-id="3464679516-5">(</samp><samp·class="ss">message</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="3464679516-6">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p">_</samp><samp·class="n">Pass</[·...·truncated·by·diffoscope;·len:·99,·SHA:·3f31d1177bb27f33c462ef52e3d756b1e3f7e7037d9704605be9a5816235b812·...·]-5">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
1138 ············</samp><samp·class="p"·data-group-id="4338659171-7">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">removed</samp><samp·class="p"·data-group-id="4338659171-7">}</samp><samp·class="p">;</samp><samp·class="w">1138 ············</samp><samp·class="p"·data-group-id="3464679516-7">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">removed</samp><samp·class="p"·data-group-id="3464679516-7">}</samp><samp·class="p">;</samp><samp·class="w">
1139 ·······</samp><samp·class="p"·data-group-id="4338659171-8">(</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="4338659171-8">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1139 ·······</samp><samp·class="p"·data-group-id="3464679516-8">(</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="3464679516-8">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
1140 ············</samp><samp·class="n">Value</samp><samp·class="w">1140 ············</samp><samp·class="n">Value</samp><samp·class="w">
1141 ····</samp><samp·class="k">end</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="4338659171-2">)</samp><samp·class="p">.</samp></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.·The1141 ····</samp><samp·class="k">end</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="3464679516-2">)</samp><samp·class="p">.</samp></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
1142 <code·class="inline">gen_server</code>·module·provides·a·default·implementation1142 <code·class="inline">gen_server</code>·module·provides·a·default·implementation
1143 of·this·function·that·returns·the·callback·module·state.</p><p>If·this·callback·is·exported·but·fails,1143 of·this·function·that·returns·the·callback·module·state.</p><p>If·this·callback·is·exported·but·fails,
1144 to·hide·possibly·sensitive·data,1144 to·hide·possibly·sensitive·data,
1145 the·default·function·will·instead·return·the·fact·that1145 the·default·function·will·instead·return·the·fact·that
1146 <a·href="#c:format_status/1"><code·class="inline">Module:format_status/1</code></a>·has·crashed.</p></section>1146 <a·href="#c:format_status/1"><code·class="inline">Module:format_status/1</code></a>·has·crashed.</p></section>
1147 ··</section>1147 ··</section>
1148 </section>1148 </section>
181 KB
OEBPS/gen_fsm.xhtml
Max HTML report size reached
6.65 KB
OEBPS/gen_event.xhtml
    
Offset 1146, 23 lines modifiedOffset 1146, 23 lines modified
1146 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.xhtml#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked1146 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.xhtml#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·is·invoked
1147 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·by1147 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
1148 <a·href="sys.xhtml#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·or·sent·to·<a·href="../../../../lib/kernel/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·status1148 <a·href="sys.xhtml#get_status/1"><code·class="inline">sys:get_status/1,2</code></a>·or·sent·to·<a·href="../../../../lib/kernel/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
1149 and·shall·return·a·map·<code·class="inline">NewStatus</code>·with·the·same·keys,1149 and·shall·return·a·map·<code·class="inline">NewStatus</code>·with·the·same·keys,
1150 but·it·may·transform·some·values.</p><p>Two·possible·use·cases·for·this·callback·is·to·remove1150 but·it·may·transform·some·values.</p><p>Two·possible·use·cases·for·this·callback·is·to·remove
1151 sensitive·information·from·the·state·to·prevent·it·from·being·printed1151 sensitive·information·from·the·state·to·prevent·it·from·being·printed
1152 in·log·files,·or·to·compact·large·irrelevant·status·items1152 in·log·files,·or·to·compact·large·irrelevant·status·items
1153 that·would·only·clutter·the·logs.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">format_status</samp><samp·class="p"·data-group-id="7264104404-1">(</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="7264104404-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1153 that·would·only·clutter·the·logs.</p><p><em>Example</em>:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nf">format_status</samp><samp·class="p"·data-group-id="7840128663-1">(</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="7840128663-1">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
1154 ··</samp><samp·class="nc">maps</samp><samp·class="p">:</samp><samp·class="nf">map</samp><samp·class="p"·data-group-id="7264104404-2">(</samp><samp·class="w">1154 ··</samp><samp·class="nc">maps</samp><samp·class="p">:</samp><samp·class="nf">map</samp><samp·class="p"·data-group-id="7840128663-2">(</samp><samp·class="w">
1155 ····</samp><samp·class="nf">fun</samp><samp·class="p"·data-group-id="7264104404-3">(</samp><samp·class="ss">state</samp><samp·class="p">,</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="7264104404-3">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1155 ····</samp><samp·class="nf">fun</samp><samp·class="p"·data-group-id="7840128663-3">(</samp><samp·class="ss">state</samp><samp·class="p">,</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="7840128663-3">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
1156 ············</samp><samp·class="nc">maps</samp><samp·class="p">:</samp><samp·class="nf">remove</samp><samp·class="p"·data-group-id="7264104404-4">(</samp><samp·class="ss">private_key</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="7264104404-4">)</samp><samp·class="p">;</samp><samp·class="w">1156 ············</samp><samp·class="nc">maps</samp><samp·class="p">:</samp><samp·class="nf">remove</samp><samp·class="p"·data-group-id="7840128663-4">(</samp><samp·class="ss">private_key</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">State</samp><samp·class="p"·data-group-id="7840128663-4">)</samp><samp·class="p">;</samp><samp·class="w">
1157 ·······</samp><samp·class="p"·data-group-id="7264104404-5">(</samp><samp·class="ss">message</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="7264104404-6">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p">_</samp><samp·class="n">Pass</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·f2c5a03ea675dd9be6578f2dbd0e4d0f59171588f1e084a0713b17442f9b0a1b·...·]-5">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1157 ·······</samp><samp·class="p"·data-group-id="7840128663-5">(</samp><samp·class="ss">message</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="7840128663-6">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p">_</samp><samp·class="n">Pass</s[·...·truncated·by·diffoscope;·len:·98,·SHA:·bc1d7ab1c7db25d0ead2cbe51037bbf9ef459a7a7bd48debe6bae052365692f0·...·]-5">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
1158 ············</samp><samp·class="p"·data-group-id="7264104404-7">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">removed</samp><samp·class="p"·data-group-id="7264104404-7">}</samp><samp·class="p">;</samp><samp·class="w">1158 ············</samp><samp·class="p"·data-group-id="7840128663-7">{</samp><samp·class="ss">password</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">removed</samp><samp·class="p"·data-group-id="7840128663-7">}</samp><samp·class="p">;</samp><samp·class="w">
1159 ·······</samp><samp·class="p"·data-group-id="7264104404-8">(</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="7264104404-8">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">1159 ·······</samp><samp·class="p"·data-group-id="7840128663-8">(</samp><samp·class="p">_</samp><samp·class="p">,</samp><samp·class="n">Value</samp><samp·class="p"·data-group-id="7840128663-8">)</samp><samp·class="w">·</samp><samp·class="p">-&gt;</samp><samp·class="w">
1160 ············</samp><samp·class="n">Value</samp><samp·class="w">1160 ············</samp><samp·class="n">Value</samp><samp·class="w">
1161 ····</samp><samp·class="k">end</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="7264104404-2">)</samp><samp·class="p">.</samp></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.1161 ····</samp><samp·class="k">end</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Status</samp><samp·class="p"·data-group-id="7840128663-2">)</samp><samp·class="p">.</samp></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.
1162 If·a·handler·does·not·export·this·function,·the·<code·class="inline">gen_event</code>·module1162 If·a·handler·does·not·export·this·function,·the·<code·class="inline">gen_event</code>·module
1163 uses·the·handler·state·directly·for·the·purposes·described·below.</p><p>If·this·callback·is·exported·but·fails,·to·hide·possibly·sensitive·data,1163 uses·the·handler·state·directly·for·the·purposes·described·below.</p><p>If·this·callback·is·exported·but·fails,·to·hide·possibly·sensitive·data,
1164 the·default·function·will·instead·return·the·fact·that1164 the·default·function·will·instead·return·the·fact·that
1165 <a·href="#c:format_status/1"><code·class="inline">format_status/1</code></a>·has·crashed.</p></section>1165 <a·href="#c:format_status/1"><code·class="inline">format_status/1</code></a>·has·crashed.</p></section>
1166 ··</section>1166 ··</section>
1167 </section>1167 </section>
1168 <section·class="detail"·id="c:format_status/2">1168 <section·class="detail"·id="c:format_status/2">
83.3 KB
OEBPS/filename.xhtml
Max HTML report size reached
5.99 KB
OEBPS/filelib.xhtml
    
Offset 865, 23 lines modifiedOffset 865, 23 lines modified
865 ································Cwd·::·<a·href="#t:filename_all/0">filename_all</a>(),865 ································Cwd·::·<a·href="#t:filename_all/0">filename_all</a>(),
866 ································SafeFilename·::·<a·href="#t:filename_all/0">filename_all</a>().</pre>866 ································SafeFilename·::·<a·href="#t:filename_all/0">filename_all</a>().</pre>
  
867 ······</div>867 ······</div>
  
868 <p>Sanitizes·the·relative·path·by·eliminating·&quot;..&quot;·and·&quot;.&quot;·components·to·protect868 <p>Sanitizes·the·relative·path·by·eliminating·&quot;..&quot;·and·&quot;.&quot;·components·to·protect
869 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.869 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.
870 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"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="p"·data-group-id="7856644090-1">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Cwd</samp><samp·class="p"·data-group-id="7856644090-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·cla[·...·truncated·by·diffoscope;·len:·168,·SHA:·2370bd4fe13d3d2671cad413e85913dc1782434fc52c642587139589f2c810a7·...·]-2">)</samp><samp·class="p">.</samp><samp·class="w">870 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"><samp·class="gp·unselectable">1&gt;·</samp><samp·class="p"·data-group-id="9058579584-1">{</samp><samp·class="ss">ok</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Cwd</samp><samp·class="p"·data-group-id="9058579584-1">}</samp><samp·class="w">·</samp><samp·class="o">=</samp><samp·class="w">·</samp><samp·cla[·...·truncated·by·diffoscope;·len:·168,·SHA:·c97bd2a0b6b21da4327bc0d30442b71cc11aacdb4eda41ebd3b3a1f70f54f7ca·...·]-2">)</samp><samp·class="p">.</samp><samp·class="w">
871 </samp><samp·class="p">.</samp><samp·class="p">.</samp><samp·class="p">.</samp><samp·class="gp·unselectable">871 </samp><samp·class="p">.</samp><samp·class="p">.</samp><samp·class="p">.</samp><samp·class="gp·unselectable">
872 2&gt;·</samp><samp·class="nc">filelib</samp><samp·class="p">:</samp><samp·class="nf">safe_relative_path</samp><samp·class="p"·data-group-id="7856644090-3">(</samp><samp·class="s">&quot;dir/sub_dir/..&quot;</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Cwd</samp><samp·class="p"·data-group-id="7856644090-3">)</samp><samp·class="p">.</samp><samp·class="w">872 2&gt;·</samp><samp·class="nc">filelib</samp><samp·class="p">:</samp><samp·class="nf">safe_relative_path</samp><samp·class="p"·data-group-id="9058579584-3">(</samp><samp·class="s">&quot;dir/sub_dir/..&quot;</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Cwd</samp><samp·class="p"·data-group-id="9058579584-3">)</samp><samp·class="p">.</samp><samp·class="w">
873 </samp><samp·class="s">&quot;dir&quot;</samp><samp·class="gp·unselectable">873 </samp><samp·class="s">&quot;dir&quot;</samp><samp·class="gp·unselectable">
874 3&gt;·</samp><samp·class="nc">filelib</samp><samp·class="p">:</samp><samp·class="nf">safe_relative_path</samp><samp·class="p"·data-group-id="7856644090-4">(</samp><samp·class="s">&quot;dir/..&quot;</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Cwd</samp><samp·class="p"·data-group-id="7856644090-4">)</samp><samp·class="p">.</samp><samp·class="w">874 3&gt;·</samp><samp·class="nc">filelib</samp><samp·class="p">:</samp><samp·class="nf">safe_relative_path</samp><samp·class="p"·data-group-id="9058579584-4">(</samp><samp·class="s">&quot;dir/..&quot;</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Cwd</samp><samp·class="p"·data-group-id="9058579584-4">)</samp><samp·class="p">.</samp><samp·class="w">
875 </samp><samp·class="p"·data-group-id="7856644090-5">[</samp><samp·class="p"·data-group-id="7856644090-5">]</samp><samp·class="gp·unselectable">875 </samp><samp·class="p"·data-group-id="9058579584-5">[</samp><samp·class="p"·data-group-id="9058579584-5">]</samp><samp·class="gp·unselectable">
876 4&gt;·</samp><samp·class="nc">filelib</samp><samp·class="p">:</samp><samp·class="nf">safe_relative_path</samp><samp·class="p"·data-group-id="7856644090-6">(</samp><samp·class="s">&quot;dir/../..&quot;</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Cwd</samp><samp·class="p"·data-group-id="7856644090-6">)</samp><samp·class="p">.</samp><samp·class="w">876 4&gt;·</samp><samp·class="nc">filelib</samp><samp·class="p">:</samp><samp·class="nf">safe_relative_path</samp><samp·class="p"·data-group-id="9058579584-6">(</samp><samp·class="s">&quot;dir/../..&quot;</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Cwd</samp><samp·class="p"·data-group-id="9058579584-6">)</samp><samp·class="p">.</samp><samp·class="w">
877 </samp><samp·class="ss">unsafe</samp><samp·class="gp·unselectable">877 </samp><samp·class="ss">unsafe</samp><samp·class="gp·unselectable">
878 5&gt;·</samp><samp·class="nc">filelib</samp><samp·class="p">:</samp><samp·class="nf">safe_relative_path</samp><samp·class="p"·data-group-id="7856644090-7">(</samp><samp·class="s">&quot;/abs/path&quot;</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Cwd</samp><samp·class="p"·data-group-id="7856644090-7">)</samp><samp·class="p">.</samp><samp·class="w">878 5&gt;·</samp><samp·class="nc">filelib</samp><samp·class="p">:</samp><samp·class="nf">safe_relative_path</samp><samp·class="p"·data-group-id="9058579584-7">(</samp><samp·class="s">&quot;/abs/path&quot;</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Cwd</samp><samp·class="p"·data-group-id="9058579584-7">)</samp><samp·class="p">.</samp><samp·class="w">
879 </samp><samp·class="ss">unsafe</samp></code></pre>879 </samp><samp·class="ss">unsafe</samp></code></pre>
880 ··</section>880 ··</section>
881 </section>881 </section>
882 <section·class="detail"·id="wildcard/1">882 <section·class="detail"·id="wildcard/1">
  
883 ··<div·class="detail-header">883 ··<div·class="detail-header">
884 ····<a·href="#wildcard/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">884 ····<a·href="#wildcard/1"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
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="8347510670-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="8347[·...·truncated·by·diffoscope;·len:·373,·SHA:·ab42b41bab0d109663040749f9c780135dcac0d89f518b75fd8461f7e696df91·...·]-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="3343623689-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="3343[·...·truncated·by·diffoscope;·len:·373,·SHA:·b2ce47316948cd6336c2aae08774cbb844109ab52c9c400ede4ae76c03138018·...·]-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="6709760380-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="67097603[·...·truncated·by·diffoscope;·len:·369,·SHA:·a96ab752abae2b381c11328a63c44ff80bf18838ee1add391fcc83bb1b6a5c9f·...·]-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="0447984409-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="04479844[·...·truncated·by·diffoscope;·len:·369,·SHA:·4729ae9d97c077e481fcb527072ce16bb41605a252a71fffea2679f2fcc3c11b·...·]-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="6963645595-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="69636455[·...·truncated·by·diffoscope;·len:·369,·SHA:·7a89f5f9c4fbc508f9bd43f3ebe2ba0e0b58b2a9f6eb421b3ffca110a9a46f18·...·]-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="1017291945-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="10172919[·...·truncated·by·diffoscope;·len:·369,·SHA:·1e1ee3afc018f8202c1041b8712faff912dc8757fd8c4e23a7ea1b86eda46067·...·]-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
    
Offset 32, 35 lines modifiedOffset 32, 35 lines modified
32 ··<span·class="text">Local·Function·Handler</span>32 ··<span·class="text">Local·Function·Handler</span>
33 </h2>33 </h2>
34 <p>During·evaluation·of·a·function,·no·calls·can·be·made·to·local·functions.·An34 <p>During·evaluation·of·a·function,·no·calls·can·be·made·to·local·functions.·An
35 undefined·function·error·would·be·generated.·However,·the·optional·argument35 undefined·function·error·would·be·generated.·However,·the·optional·argument
36 <code·class="inline">LocalFunctionHandler</code>·can·be·used·to·define·a·function·that·is·called·when36 <code·class="inline">LocalFunctionHandler</code>·can·be·used·to·define·a·function·that·is·called·when
37 there·is·a·call·to·a·local·function.·The·argument·can·have·the·following37 there·is·a·call·to·a·local·function.·The·argument·can·have·the·following
38 formats:</p><ul><li><p><strong><code·class="inline">{value,Func}</code></strong>·-·This·defines·a·local·function·handler·that·is·called38 formats:</p><ul><li><p><strong><code·class="inline">{value,Func}</code></strong>·-·This·defines·a·local·function·handler·that·is·called
39 with:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">Func</samp><samp·class="p"·data-group-id="3391336106-1">(</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Arguments</samp><samp·class="p"·data-group-id="3391336106-1">)</samp></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·list39 with:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">Func</samp><samp·class="p"·data-group-id="3417015930-1">(</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Arguments</samp><samp·class="p"·data-group-id="3417015930-1">)</samp></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
40 of·the·<em>evaluated</em>·arguments.·The·function·handler·returns·the·value·of·the40 of·the·<em>evaluated</em>·arguments.·The·function·handler·returns·the·value·of·the
41 local·function.·In·this·case,·the·current·bindings·cannot·be·accessed.·To41 local·function.·In·this·case,·the·current·bindings·cannot·be·accessed.·To
42 signal·an·error,·the·function·handler·calls·<a·href="../../../../lib/../erts/doc/html/erlang.html#exit/1"><code·class="inline">exit/1</code></a>·with·a42 signal·an·error,·the·function·handler·calls·<a·href="../../../../lib/../erts/doc/html/erlang.html#exit/1"><code·class="inline">exit/1</code></a>·with·a
43 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"><samp·class="n">Func</samp><samp·class="p"·data-group-id="8568353511-1">(</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Arguments</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Bindings</samp><samp·class="p"·data-group-id="8568353511-1">)</samp></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·of43 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"><samp·class="n">Func</samp><samp·class="p"·data-group-id="8704560807-1">(</samp><samp·class="n">Name</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Arguments</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Bindings</samp><samp·class="p"·data-group-id="8704560807-1">)</samp></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
44 the·<em>unevaluated</em>·arguments,·and·<code·class="inline">Bindings</code>·are·the·current·variable·bindings.44 the·<em>unevaluated</em>·arguments,·and·<code·class="inline">Bindings</code>·are·the·current·variable·bindings.
45 The·function·handler·returns:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="1518641887-1">{</samp><samp·class="ss">value</samp><samp·class="p">,</samp><samp·class="n">Value</samp><samp·class="p">,</samp><samp·class="n">NewBindings</samp><samp·class="p"·data-group-id="1518641887-1">}</samp></code></pre><p><code·class="inline">Value</code>·is·the·value·of·the·local·function·and·<code·class="inline">NewBindings</code>·are·the·updated45 The·function·handler·returns:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="p"·data-group-id="3145682008-1">{</samp><samp·class="ss">value</samp><samp·class="p">,</samp><samp·class="n">Value</samp><samp·class="p">,</samp><samp·class="n">NewBindings</samp><samp·class="p"·data-group-id="3145682008-1">}</samp></code></pre><p><code·class="inline">Value</code>·is·the·value·of·the·local·function·and·<code·class="inline">NewBindings</code>·are·the·updated
46 variable·bindings.·In·this·case,·the·function·handler·must·itself·evaluate·all46 variable·bindings.·In·this·case,·the·function·handler·must·itself·evaluate·all
47 the·function·arguments·and·manage·the·bindings.·To·signal·an·error,·the47 the·function·arguments·and·manage·the·bindings.·To·signal·an·error,·the
48 function·handler·calls·<a·href="../../../../lib/../erts/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">48 function·handler·calls·<a·href="../../../../lib/../erts/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">
49 ··<a·href="#module-non-local-function-handler"·class="hover-link">49 ··<a·href="#module-non-local-function-handler"·class="hover-link">
50 ····<i·class="ri-link-m"·aria-hidden="true"></i>50 ····<i·class="ri-link-m"·aria-hidden="true"></i>
51 ··</a>51 ··</a>
52 ··<span·class="text">Non-Local·Function·Handler</span>52 ··<span·class="text">Non-Local·Function·Handler</span>
53 </h2>53 </h2>
54 <p>The·optional·argument·<code·class="inline">NonLocalFunctionHandler</code>·can·be·used·to·define·a·function54 <p>The·optional·argument·<code·class="inline">NonLocalFunctionHandler</code>·can·be·used·to·define·a·function
55 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·or55 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
56 expressions.</li><li>An·operator·<code·class="inline">Op/A</code>·is·called·(this·is·handled·as·a·call·to·function56 expressions.</li><li>An·operator·<code·class="inline">Op/A</code>·is·called·(this·is·handled·as·a·call·to·function
57 <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·are57 <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
58 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·function58 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
59 may·be·called·with·two·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">Func</samp><samp·class="p"·data-group-id="3736761346-1">(</samp><samp·class="n">FuncSpec</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Arguments</samp><samp·class="p"·data-group-id="3736761346-1">)</samp></code></pre><p>or·three·arguments:</p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·324,·SHA:·2104363a70993ec36d8d111724b951371c061bcab74435b125a10b13acac51b9·...·]-1">)</samp></code></pre><p><code·class="inline">Anno</code>·is·the·<a·href="erl_anno.xhtml#t:anno/0"><code·class="inline">erl_anno:anno()</code></a>·of·the·node,·<code·class="inline">FuncSpec</code>59 may·be·called·with·two·arguments:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="n">Func</samp><samp·class="p"·data-group-id="0954988437-1">(</samp><samp·class="n">FuncSpec</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="n">Arguments</samp><samp·class="p"·data-group-id="0954988437-1">)</samp></code></pre><p>or·three·arguments:</p><pre><code·class="makeup·erlang[·...·truncated·by·diffoscope;·len:·324,·SHA:·f9eac7e36d37124627e02806c73f9762f837660b2a8787014973877cfbe2d5c1·...·]-1">)</samp></code></pre><p><code·class="inline">Anno</code>·is·the·<a·href="erl_anno.xhtml#t:anno/0"><code·class="inline">erl_anno:anno()</code></a>·of·the·node,·<code·class="inline">FuncSpec</code>
60 is·the·name·of·the·function·on·the·form·<code·class="inline">{Module,Function}</code>·or·a·fun,·and60 is·the·name·of·the·function·on·the·form·<code·class="inline">{Module,Function}</code>·or·a·fun,·and
61 <code·class="inline">Arguments</code>·is·a·list·of·the·<em>evaluated</em>·arguments.·The·function·handler61 <code·class="inline">Arguments</code>·is·a·list·of·the·<em>evaluated</em>·arguments.·The·function·handler
62 returns·the·value·of·the·function.·To·signal·an·error,·the·function·handler62 returns·the·value·of·the·function.·To·signal·an·error,·the·function·handler
63 calls·<a·href="../../../../lib/../erts/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>·or63 calls·<a·href="../../../../lib/../erts/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
64 <code·class="inline">erlang:apply(Module,·Function,·Args)</code>,·the·call·of·the·non-local·function64 <code·class="inline">erlang:apply(Module,·Function,·Args)</code>,·the·call·of·the·non-local·function
65 handler·corresponding·to·the·call·to·<code·class="inline">erlang:apply/2,3</code>·itself65 handler·corresponding·to·the·call·to·<code·class="inline">erlang:apply/2,3</code>·itself
66 (<code·class="inline">Func({erlang,·apply},·[Fun,·Args])</code>·or66 (<code·class="inline">Func({erlang,·apply},·[Fun,·Args])</code>·or
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="8538537537-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="85385375[·...·truncated·by·diffoscope;·len:·369,·SHA:·a1669134f8fb613270dd1dd014bdc836facebfc17724bc45d124ee4535428551·...·]-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="9125521397-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="91255213[·...·truncated·by·diffoscope;·len:·369,·SHA:·2c64d80c24f051564e7e4345f619792f5658ea28a815ed1e3b91c158fcf2f53f·...·]-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.19 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="8106235683-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="8106235683-2">[</samp><sa[·...·truncated·by·diffoscope;·len:·215,·SHA:·fc3e2757c454749cd569245a0f12c7a8510dc0a52a978ef2211dbbe91688034b·...·]-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="4203838260-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="4203838260-2">[</samp><sa[·...·truncated·by·diffoscope;·len:·215,·SHA:·50341f1d0711803a38fb1396a090bd1360940255147094c8bd1d302a0969c4eb·...·]-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
    
Offset 23, 15 lines modifiedOffset 23, 15 lines modified
23 <p>Assert·macros.</p><h2·id="description"·class="section-heading">23 <p>Assert·macros.</p><h2·id="description"·class="section-heading">
24 ··<a·href="#description"·class="hover-link">24 ··<a·href="#description"·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">Description</span>27 ··<span·class="text">Description</span>
28 </h2>28 </h2>
29 <p>The·include·file·<code·class="inline">assert.hrl</code>·provides·macros·for·inserting·assertions·in·your29 <p>The·include·file·<code·class="inline">assert.hrl</code>·provides·macros·for·inserting·assertions·in·your
30 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="8652781037-1">(</span><span·class="s">&quot;stdlib/include/assert.hrl&quot;</span><span·class="p"·data-group-id="8652781037-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·an30 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="8632466349-1">(</span><span·class="s">&quot;stdlib/include/assert.hrl&quot;</span><span·class="p"·data-group-id="8632466349-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
31 assertion·fails,·an·exception·of·type·<code·class="inline">error</code>·is·generated.·The·associated·error31 assertion·fails,·an·exception·of·type·<code·class="inline">error</code>·is·generated.·The·associated·error
32 term·has·the·form·<code·class="inline">{Macro,·Info}</code>.·<code·class="inline">Macro</code>·is·the·macro·name,·for·example,32 term·has·the·form·<code·class="inline">{Macro,·Info}</code>.·<code·class="inline">Macro</code>·is·the·macro·name,·for·example,
33 <code·class="inline">assertEqual</code>.·<code·class="inline">Info</code>·is·a·list·of·tagged·values,·such·as33 <code·class="inline">assertEqual</code>.·<code·class="inline">Info</code>·is·a·list·of·tagged·values,·such·as
34 <code·class="inline">[{module,·M},·{line,·L},·...]</code>,·which·gives·more·information·about·the·location34 <code·class="inline">[{module,·M},·{line,·L},·...]</code>,·which·gives·more·information·about·the·location
35 and·cause·of·the·exception.·All·entries·in·the·<code·class="inline">Info</code>·list·are·optional;·do·not35 and·cause·of·the·exception.·All·entries·in·the·<code·class="inline">Info</code>·list·are·optional;·do·not
36 rely·programmatically·on·any·of·them·being·present.</p><p>Each·assert·macro·has·a·corresponding·version·with·an·extra·argument,·for·adding36 rely·programmatically·on·any·of·them·being·present.</p><p>Each·assert·macro·has·a·corresponding·version·with·an·extra·argument,·for·adding
37 comments·to·assertions.·These·can·for·example·be·printed·as·part·of·error37 comments·to·assertions.·These·can·for·example·be·printed·as·part·of·error
Offset 51, 15 lines modifiedOffset 51, 15 lines modified
51 ····<i·class="ri-link-m"·aria-hidden="true"></i>51 ····<i·class="ri-link-m"·aria-hidden="true"></i>
52 ··</a>52 ··</a>
53 ··<span·class="text">Macros</span>53 ··<span·class="text">Macros</span>
54 </h2>54 </h2>
55 <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·normally55 <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
56 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·normally56 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
57 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>·completes57 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
58 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="2664062925-1">(</span><span·class="p"·data-group-id="2664062925-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="2664062925-2">}</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·391,·SHA:·49d3e4fffd6c01c020c20da1eac0dc2827250f83d845f14aa0c6ebe7e6223932·...·]-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>58 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="5762312413-1">(</span><span·class="p"·data-group-id="5762312413-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="5762312413-2">}</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·391,·SHA:·4cf179ef69e8b3b60f35d6db62008899fc4659c9d9fcaa8f9036bd76d680861f·...·]-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>
59 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>·completes59 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
60 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>60 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>
61 completes·normally·yielding·a·value·that·is·not·exactly·equal·to61 completes·normally·yielding·a·value·that·is·not·exactly·equal·to
62 <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>62 <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>
63 completes·abnormally·with·an·exception·of·type·<code·class="inline">Class</code>·and·with·the·associated63 completes·abnormally·with·an·exception·of·type·<code·class="inline">Class</code>·and·with·the·associated
64 <code·class="inline">Term</code>.·The·assertion·fails·if·<code·class="inline">Expr</code>·raises·a·different·exception·or·if·it64 <code·class="inline">Term</code>.·The·assertion·fails·if·<code·class="inline">Expr</code>·raises·a·different·exception·or·if·it
65 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·in65 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
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.1/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="5720987030-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="5720987030-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="5720987030-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">1[·...·truncated·by·diffoscope;·len:·1496,·SHA:·a9241bd8b29ed2ad1d11f9b613edd5c6a0c304b552a6eb2db30ed60ee31b6706·...·]-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="3297136069-1">[</span><span·class="n">DEVELOPMENT</span><span·class="p"·data-group-id="3297136069-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="3297136069-2">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">1[·...·truncated·by·diffoscope;·len:·1496,·SHA:·bb5b80d647e48869fe54f4631d8cf43183f3e2047065ad427a890a8229f03397·...·]-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="0227846136-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="0227846136-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="9201422415-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="9201422415-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.3/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.3/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.1/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="7723617980-1">(</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="7723617980-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="0708257723-1">(</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="0708257723-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="7723617980-2">(</span><span·class="p"·data-group-id="7723617980-3">&lt;&lt;</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="7723617980-3">&gt;&gt;</span><span·class="p"·data-group-id="7723617980-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="0708257723-2">(</span><span·class="p"·data-group-id="0708257723-3">&lt;&lt;</span><span·class="s">&quot;··sarah··&quot;</span><span·class="p"·data-group-id="0708257723-3">&gt;&gt;</span><span·class="p"·data-group-id="0708257723-2">)</span><span·class="p">.</span><span·class="w">
155 </span><span·class="p"·data-group-id="7723617980-4">&lt;&lt;</span><span·class="s">&quot;sarah&quot;</span><span·class="p"·data-group-id="7723617980-4">&gt;&gt;</span><span·class="gp·unselectable">155 </span><span·class="p"·data-group-id="0708257723-4">&lt;&lt;</span><span·class="s">&quot;sarah&quot;</span><span·class="p"·data-group-id="0708257723-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="7723617980-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="7723617980-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="0708257723-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="0708257723-5">)</span><span·class="p">.</span><span·class="w">
157 </span><span·class="p"·data-group-id="7723617980-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="7723617980-6">]</span><span·class="gp·unselectable">157 </span><span·class="p"·data-group-id="0708257723-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="0708257723-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="7723617980-7">(</span><span·class="p"·data-group-id="7723617980-8">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="7723617980-8">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;·&[·...·truncated·by·diffoscope;·len:·53,·SHA:·d3cffcc7be13821ca1ef9edd9042ec3ec4221704f71dfdbb351eeb4183a183f8·...·]-7">)</span><span·class="p">.</span><span·class="w">158 4&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">lexemes</span><span·class="p"·data-group-id="0708257723-7">(</span><span·class="p"·data-group-id="0708257723-8">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="0708257723-8">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot;·&[·...·truncated·by·diffoscope;·len:·53,·SHA:·f881a0b192b9ce77c8a0027b8c8ae59b6b2c4242a1f6cec0776591c3c7145dd9·...·]-7">)</span><span·class="p">.</span><span·class="w">
159 </span><span·class="p"·data-group-id="7723617980-9">[</span><span·class="p"·data-group-id="7723617980-10">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="7723617980-10">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="7723617980-11">&lt;[·...·truncated·by·diffoscope;·len:·151,·SHA:·7c4284d6d7cdf7f482016bf30ec22db8953113eb9f58d349cfb4934c29d8e3c4·...·]-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>159 </span><span·class="p"·data-group-id="0708257723-9">[</span><span·class="p"·data-group-id="0708257723-10">&lt;&lt;</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="0708257723-10">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="0708257723-11">&lt;[·...·truncated·by·diffoscope;·len:·151,·SHA:·acd4e67ca2a3f4f0e49e5b92495059ee24a75fff8fef89e3d6001cc384490882·...·]-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="5611315203-1">(</span><span·class="s">&quot;Ω·and··SHARP·S&quot;</span><span·class="p"·data-group-id="5611315203-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="3149281966-1">(</span><span·class="s">&quot;Ω·and··SHARP·S&quot;</span><span·class="p"·data-group-id="3149281966-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="6470296244-1">(</span><span·class="p"·data-group-id="6470296244-2">&lt;&lt;</span><span·class="s">&quot;\nHello\n\n&quot;</span><span·class="p"·data-group-id="6470296244-2">&gt;&gt;</span><span·class="p"·data-group-id="6470296244-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="3028487329-1">(</span><span·class="p"·data-group-id="3028487329-2">&lt;&lt;</span><span·class="s">&quot;\nHello\n\n&quot;</span><span·class="p"·data-group-id="3028487329-2">&gt;&gt;</span><span·class="p"·data-group-id="3028487329-1">)</span><span·class="p">.</span><span·class="w">
1097 </span><span·class="p"·data-group-id="6470296244-3">&lt;&lt;</span><span·class="s">&quot;\nHello&quot;</span><span·class="p"·data-group-id="6470296244-3">&gt;&gt;</span><span·class="gp·unselectable">1097 </span><span·class="p"·data-group-id="3028487329-3">&lt;&lt;</span><span·class="s">&quot;\nHello&quot;</span><span·class="p"·data-group-id="3028487329-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="6470296244-4">(</span><span·class="s">&quot;\nHello\r\r\n&quot;</span><span·class="p"·data-group-id="6470296244-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="3028487329-4">(</span><span·class="s">&quot;\nHello\r\r\n&quot;</span><span·class="p"·data-group-id="3028487329-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="0552971668-1">(</span><span·class="s">&quot;åäö&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0552971668-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:·c309c526f0bdadb394d10f75c5e980873d316c1eac40bd5923b897f7f65636cd·...·]-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="5035514289-1">(</span><span·class="s">&quot;åäö&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5035514289-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:·33ffbea7c42ae85f1b254c97dfa68b684c1b089170e2e6203ce9b489256a862d·...·]-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="0552971668-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="0552971668-4">[·...·truncated·by·diffoscope;·len:·140,·SHA:·32825176c9bfdffc2cb7f6dfe8f8e055ff59d2f971edc344a1248dd9759afd02·...·]-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="5035514289-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="5035514289-4">[·...·truncated·by·diffoscope;·len:·140,·SHA:·09c1c973ea5f8d6a2358d1caf9c2eb6bfb226f867e4b3445849b20e7b0ea21b1·...·]-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="0552971668-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="0552971668-6">[·...·truncated·by·diffoscope;·len:·291,·SHA:·dbb4af38291b6c7c3b0178ba22d1ac6864c51441f46f2be9fef65fda38d1ec19·...·]-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="5035514289-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="5035514289-6">[·...·truncated·by·diffoscope;·len:·291,·SHA:·f647ae64ce41cb86cb418e1863ab052869862f66af860530c1f27a305087415b·...·]-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="7078619877-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="7078619877-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="9272725195-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="9272725195-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="7078619877-2">(</span><span·class="p"·data-group-id="7078619877-3">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="7078619877-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·137,·SHA:·1155b4a4ace86164c4f1e3618e72c947c63ca0d220ec579f497542df09a031ef·...·]-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="9272725195-2">(</span><span·class="p"·data-group-id="9272725195-3">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="9272725195-3">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·137,·SHA:·7bc3dbee3e7729aeeb3b48f5c4bcb8d2bb5fca0868781e7d45defa1fda8806b3·...·]-2">)</span><span·class="p">.</span><span·class="w">
1263 </span><span·class="p"·data-group-id="7078619877-4">&lt;&lt;</span><span·class="s">&quot;..ef&quot;</span><span·class="p"·data-group-id="7078619877-4">&gt;&gt;</span><span·class="gp·unselectable">1263 </span><span·class="p"·data-group-id="9272725195-4">&lt;&lt;</span><span·class="s">&quot;..ef&quot;</span><span·class="p"·data-group-id="9272725195-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="7078619877-5">(</span><span·class="p"·data-group-id="7078619877-6">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="7078619877-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·135,·SHA:·84787854e3497537ad31a77bff96c0ddcefbd3f9df3df9c014b0fa836fd03288·...·]-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="9272725195-5">(</span><span·class="p"·data-group-id="9272725195-6">&lt;&lt;</span><span·class="s">&quot;ab..cd..ef&quot;</span><span·class="p"·data-group-id="9272725195-6">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="s">&quot[·...·truncated·by·diffoscope;·len:·135,·SHA:·7e58adbe64ec7c6fa7414a250222bbfa1d8fa289c592192bc0aa88305d1bed94·...·]-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="7078619877-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:·5f76ac4a1e4618b5676a618a829e77cc9771160c5c503f1884dd3584a10221d4·...·]-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="9272725195-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:·af37b939dd6440ebf71ac289c7564c8780701a4ce94053764c68f2bdfd1cfe56·...·]-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.3/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.3/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="1605194063-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="1605194063-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="9529616899-1">(</span><span·class="s">&quot;foo&quot;</span><span·class="p"·data-group-id="9529616899-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="1605194063-2">(</span><span·class="p"·data-group-id="1605194063-3">[</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="1605194063-4">&lt;&lt;</span><span·class="p"·data-group-id="1605194063-4">&gt;&gt;</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·da2a44a343376f85e290656c817e723564be37d7c9fc3918cd3a2451340a5484·...·]-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="9529616899-2">(</span><span·class="p"·data-group-id="9529616899-3">[</span><span·class="s">&quot;&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="9529616899-4">&lt;&lt;</span><span·class="p"·data-group-id="9529616899-4">&gt;&gt;</span><s[·...·truncated·by·diffoscope;·len:·92,·SHA:·304c8893c68391e5f9c6e7c7212af76600311c6add1fa59dfe72d73861277796·...·]-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.3/doc/html/erlang.html#t:float/0">float</a>().</pre>1328 ·····························Similarity·::·<a·href="../../../../erts-15.2.3/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="4768705906-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="4768705906-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="4336389297-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="4336389297-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">
1335 2&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">jaro_similarity</span><span·class="p"·data-group-id="4768705906-2">(</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="p"·data-group-id="4768705906-2">)</span><span·class="p">.</span><span·class="w">1335 2&gt;·</span><span·class="nc">string</span><span·class="p">:</span><span·class="nf">jaro_similarity</span><span·class="p"·data-group-id="4336389297-2">(</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="p"·data-group-id="4336389297-2">)</span><span·class="p">.</span><span·class="w">
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.1/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="2288931379-1">(</span><span·class="p"·data-group-id="2288931379-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="2288931379-2">#{</span><span·class="ss">strategy</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·345f402ce4129a7158d1b57125a42b37e919388947494b71103ca85573f07e00·...·]-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="8963079844-1">(</span><span·class="p"·data-group-id="8963079844-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="8963079844-2">#{</span><span·class="ss">strategy</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·179,·SHA:·47083996cf818414b0c5d08bcfd5bb9c31296a522b77512a9c6e80ab851640a6·...·]-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="2288931379-4">(</span><span·class="p"·data-group-id="2288931379-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="8963079844-4">(</span><span·class="p"·data-group-id="8963079844-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="2288931379-5">(</span><span·class="p"·data-group-id="2288931379-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="8963079844-5">(</span><span·class="p"·data-group-id="8963079844-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="2288931379-6">(</span><span·class="p"·data-group-id="2288931379-6">)</span><span·class="p"·data-group-id="2288931379-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="8963079844-6">(</span><span·class="p"·data-group-id="8963079844-6">)</span><span·class="p"·data-group-id="8963079844-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="0789000201-1">(</span><span·class="p"·data-group-id="0789000201-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="0789000201-2">#{</span><span·class="ss">id</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·173,·SHA:·74d328f2e7a31b1235f9231e49e4fd66611bdf83b93f9782ac168111357535b2·...·]-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="3836457119-1">(</span><span·class="p"·data-group-id="3836457119-1">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="p"·data-group-id="3836457119-2">#{</span><span·class="ss">id</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·173,·SHA:·a25065253774f4e2e9ad7f4cea11149f3f329ca1e0f90324552bc546b7dd9a37·...·]-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="0789000201-4">(</span><span·class="p"·data-group-id="0789000201-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="3836457119-4">(</span><span·class="p"·data-group-id="3836457119-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="0789000201-5">(</span><span·class="p"·data-group-id="0789000201-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="3836457119-5">(</span><span·class="p"·data-group-id="3836457119-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="0789000201-6">(</span><span·class="p"·data-group-id="0789000201-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="3836457119-6">(</span><span·class="p"·data-group-id="3836457119-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="0789000201-7">(</span><span·class="p"·data-group-id="0789000201-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="3836457119-7">(</span><span·class="p"·data-group-id="3836457119-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="0789000201-8">(</span><span·class="p"·data-group-id="0789000201-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="3836457119-8">(</span><span·class="p"·data-group-id="3836457119-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="0789000201-9">(</span><span·class="p"·data-group-id="0789000201-9">)</span><span·class="p"·data-group-id="0789000201-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="3836457119-9">(</span><span·class="p"·data-group-id="3836457119-9">)</span><span·class="p"·data-group-id="3836457119-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.3/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.3/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.1/doc/html/timer.html
    
Offset 142, 23 lines modifiedOffset 142, 23 lines modified
142 <a·href="../../../../erts-15.2.3/doc/html/time_correction.html"><em>Time·and·Time·Correction·in·Erlang</em></a>142 <a·href="../../../../erts-15.2.3/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="0437366942-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:·1e6a432e520888457d861db5aad7ecc422899b8b0347f643228d0001d8465749·...·]-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="3262645747-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:·927bde3a3852e506a14c57dbfd842cc08167f8f3ea933b672cd4f1c6efd1c987·...·]-1">)</span><span·class="p">.</span><span·class="w">
150 </span><span·class="p"·data-group-id="0437366942-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="0437366942-4">}</span><span·class="w">150 </span><span·class="p"·data-group-id="3262645747-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="3262645747-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="0736492727-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="0736492727-2">[</span><span·class="ss">foo</span><span[·...·truncated·by·diffoscope;·len:·163,·SHA:·f8151be211d91a055e2ac6b1b8d557277aff3325c0d818909a651c44cab1997a·...·]7-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="6009266307-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="6009266307-2">[</span><span·class="ss">foo</span><span[·...·truncated·by·diffoscope;·len:·163,·SHA:·e8f9272e8db7efd102640382422a3875eaab309f1b4b033f424aad0063bca76e·...·]7-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="0736492727-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="0736492727-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·459,·SHA:·ebb02fb1849aa5565ad72b151f4a6630b5954b1156eb9af0c22941b0b322169d·...·]7-4">)</span><span·class="p">,</span><span·class="w">154 </span><span·class="p"·data-group-id="6009266307-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="6009266307-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·459,·SHA:·218b073e6ea9dda505d47162ae6999893dbe03225a4922ef3252b5eb1504ffee·...·]7-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="0736492727-6">(</span><span·class="n">R</span><span·class="p"·data-group-id="0736492727-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="6009266307-6">(</span><span·class="n">R</span><span·class="p"·data-group-id="6009266307-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.3/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.3/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.3/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.3/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="1119143332-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="1119143332-2">(</span><span·class="p"·data-group-id="1119143332-2">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·566,·SHA:·d355a9e98a7a0973651105e9cb90a7e37e5d6f1cd39150710f5caeb8cb00f84b·...·]-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="6210234590-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="6210234590-2">(</span><span·class="p"·data-group-id="6210234590-2">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·566,·SHA:·5f5f609c5a813cdc1acf9eba52b38fd9cb2af87da93ea62aa27083f4d4a1ed77·...·]-1">)</span><span·class="p">.</span><span·class="w">
185 </span><span·class="p"·data-group-id="1119143332-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="1119143332-5">}</span><span·class="gp·unselectable">185 </span><span·class="p"·data-group-id="6210234590-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="6210234590-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.3/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.3/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="4051808100-1">(</span><span·class="p"·data-group-id="4051808100-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="3622445844-1">(</span><span·class="p"·data-group-id="3622445844-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="4051808100-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="4051808100-3">(</span><span·class="p"·data-group-id="4051808100-3">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·461,·SHA:·0205b0fd844ce7368da4f5f8abcad149e34faa57defa20c6dca365f425ca40c3·...·]-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="3622445844-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="3622445844-3">(</span><span·class="p"·data-group-id="3622445844-3">)</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·461,·SHA:·a56dc0cc8bb72d1231975bdc8dd9d166fd4df18bd9f61f3b405895997e19bb75·...·]-2">)</span><span·class="p">.</span><span·class="w">
193 </span><span·class="p"·data-group-id="4051808100-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="4051808100-5">}</span><span·class="gp·unselectable">193 </span><span·class="p"·data-group-id="3622445844-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="3622445844-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="5101773799-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="5101773799-2">(</span><span·class="n">Target</span><span·class="p"·data-group-id="5101773799-2">)</s[·...·truncated·by·diffoscope;·len:·778,·SHA:·70189d75afd12596696601954a5a76f26be654905f98b7fe9b5676d8f07d684a·...·]-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="1617772171-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="1617772171-2">(</span><span·class="n">Target</span><span·class="p"·data-group-id="1617772171-2">)</s[·...·truncated·by·diffoscope;·len:·778,·SHA:·f43fd89b394287cec35746c561199d8229ced89844d0dd8fde20bd23f29db7b5·...·]-1">)</span><span·class="p">.</span><span·class="w">
197 </span><span·class="p"·data-group-id="5101773799-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="5101773799-6">}</span><span·class="gp·unselectable">197 </span><span·class="p"·data-group-id="1617772171-6">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">TRef</span><span·class="p"·data-group-id="1617772171-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.1/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="9026830646-1">(</span><span·class="n">Data</span><span·class="p"·data-group-id="9026830646-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="9324323298-1">(</span><span·class="n">Data</span><span·class="p"·data-group-id="9324323298-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="9026830646-2">(</span><span·class="n">Data</span><span·class="p">,</span><span·class="ss">unicode</span><span·class="p"·data-group-id="9026830646-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="9324323298-2">(</span><span·class="n">Data</span><span·class="p">,</span><span·class="ss">unicode</span><span·class="p"·data-group-id="9324323298-2">)</span><span·class="w">·</span><span·class="k">of</span><span·class="w">
1040 ······</span><span·class="p"·data-group-id="9026830646-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="9026830646-3">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1040 ······</span><span·class="p"·data-group-id="9324323298-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="9324323298-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="9026830646-4">(</span><span·class="p"·data-group-id="9026830646-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="9324323298-4">(</span><span·class="p"·data-group-id="9324323298-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="9026830646-5">(</span><span·class="p"·data-group-id="9026830646-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="9026830646-6">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·637e4ecc4ff5f99b947ec1815ad37258868f1129a3185eba78f5c7064d133805·...·]-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="9324323298-5">(</span><span·class="p"·data-group-id="9324323298-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="9324323298-6">]</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·14,·SHA:·0ad4cdff637383bfe983ef8ea9037467afbbbfa439eedccf4ad8f588a79b9c4d·...·]-5">)</span><span·class="p">;</span><span·class="w">
1043 ······</span><span·class="p"·data-group-id="9026830646-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="9026830646-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">1043 ······</span><span·class="p"·data-group-id="9324323298-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="9324323298-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="9026830646-8">(</span><span·class="n">Encoded</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="9026830646-8">)</span><span·class="p">;</span><span·class="w">1044 ············</span><span·class="nf">handle_error</span><span·class="p"·data-group-id="9324323298-8">(</span><span·class="n">Encoded</span><span·class="p">,</span><span·class="n">Rest</span><span·class="p"·data-group-id="9324323298-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="2682695054-1">(</span><span·class="p"·data-group-id="2682695054-2">[</span><span·class="p"·data-group-id="2682695054-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="2682695054-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·bfae2f4d35c2d5b9de41e62ba115a9d54ae7345ede7e08f1794fb98ba60e3edb·...·]-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="0659277100-1">(</span><span·class="p"·data-group-id="0659277100-2">[</span><span·class="p"·data-group-id="0659277100-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="0659277100-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·1f60bcffa7ccd0984dd04ef51cb8cb5ef47600fec18332f6510554521f3303aa·...·]-1">)</span><span·class="p">.</span><span·class="w">
1075 </span><span·class="p"·data-group-id="2682695054-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="2682695054-7">&gt;&gt;</span></code></pre>1075 </span><span·class="p"·data-group-id="0659277100-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="0659277100-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.3/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.3/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="2772627372-1">(</span><span·class="p"·data-group-id="2772627372-2">[</span><span·class="p"·data-group-id="2772627372-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="2772627372-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·f39a76afb8206aeb5848a05cd13d791367b631987bdf566d291589ac675090a2·...·]-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="4669144268-1">(</span><span·class="p"·data-group-id="4669144268-2">[</span><span·class="p"·data-group-id="4669144268-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="4669144268-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·645,·SHA:·35a1ae2677209cd7b19dfaedcbf86d540c8636c27a99a654d6c2122d7c4225a5·...·]-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="2363312501-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="2363312501-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="6365304061-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="6365304061-1">)</span><span·class="p">.</span><span·class="w">
1135 </span><span·class="p"·data-group-id="2363312501-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:·496,·SHA:·3bbf4ea497bc80d125ecb964f5599a77046c0711963afaae635200eea6dcab71·...·]1-2">&gt;&gt;</span></code></pre>1135 </span><span·class="p"·data-group-id="6365304061-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:·496,·SHA:·df11f3a62d407848db3bf4a6ce3cac8dd112469317f03886adaf4a6b4c40e4e4·...·]1-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.3/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.3/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="8800461606-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="8800461606-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="3602537862-1">(</span><span·class="s">&quot;abc..åäö&quot;</span><span·class="p"·data-group-id="3602537862-1">)</span><span·class="p">.</span><span·class="w">
1165 </span><span·class="p"·data-group-id="8800461606-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:·2ba8a643c279c91653de401390fe7975d843d8bfcf73252e385150c8b01d3f7b·...·]-2">]</span></code></pre>1165 </span><span·class="p"·data-group-id="3602537862-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:·332448aa00eb7ff81428696ccc826c63bd5860f7ac2b2c5a4455ecda72ddc1bf·...·]-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="3235174260-1">(</span><span·class="p"·data-group-id="3235174260-2">[</span><span·class="p"·data-group-id="3235174260-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="3235174260-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·857,·SHA:·8dffe4156510f60e8a8f0ab6247a7ed3c16d1c2398097266c19b79b59cf70372·...·]-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="5985796124-1">(</span><span·class="p"·data-group-id="5985796124-2">[</span><span·class="p"·data-group-id="5985796124-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="5985796124-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·857,·SHA:·e051e3932b11853dd114a19972261574145d63c73c946df73ca19139f7bfb3bf·...·]-1">)</span><span·class="p">.</span><span·class="w">
1195 </span><span·class="p"·data-group-id="3235174260-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="3235174260-8">&gt;&gt;</span></code></pre>1195 </span><span·class="p"·data-group-id="5985796124-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="5985796124-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.3/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.3/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.3/doc/html/erlang.html#t:char/0">char</a>()]·|·{error,·[<a·href="../../../../erts-15.2.3/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="9443266049-1">(</span><span·class="p"·data-group-id="9443266049-2">[</span><span·class="p"·data-group-id="9443266049-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="9443266049-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·857,·SHA:·447547eeebbce2be2d53a582389907c59d1676aed4ea64e479dc4fe079713a55·...·]-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="2934539090-1">(</span><span·class="p"·data-group-id="2934539090-2">[</span><span·class="p"·data-group-id="2934539090-3">&lt;&lt;</span><span·class="s">&quot;abc..a&quot;</span><span·class="p"·data-group-id="2934539090-3">&gt;&gt;</span><span·class="p">,</s[·...·truncated·by·diffoscope;·len:·857,·SHA:·619fab2419e005614076c5546e0dc153f3d6cb3f5aabc369f1d4cb8ebdfca717·...·]-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.1/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="5282825239-1">(</span><span·class="p"·data-group-id="5282825239-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="5282825239-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·c8629283a1da46851cced9ff8823f1801e23b7b12863319eb668ebc8bafc2838·...·]-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="7638075136-1">(</span><span·class="p"·data-group-id="7638075136-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="7638075136-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·8d7976129821845c80ad7a8db636aeb1643f2f26f8dfffca8990c1afd227602b·...·]-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="5282825239-3">(</span><span·class="p"·data-group-id="5282825239-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="5282825239-4">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·233,·SHA:·d982716f7e214c9de1cc3d68fe0dc1b270a93140623d7e00d208199b5bd1cd9a·...·]-5">)</span><span·class="w">343 </span><span·class="nf">chardata</span><span·class="p"·data-group-id="7638075136-3">(</span><span·class="p"·data-group-id="7638075136-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="7638075136-4">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·233,·SHA:·2da42ea5590b42270c813e71809fa7106e53b2dbf70cb080b8be8416674b29bd·...·]-5">)</span><span·class="w">
  
344 </span><span·class="nf">charlist</span><span·class="p"·data-group-id="5282825239-6">(</span><span·class="p"·data-group-id="5282825239-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="5282825239-7">(</span><span·class="nf">char</span><span·class="p"·data-group-id="5282825239-8">(</span><span·class="p"·data-group-id="5282825239-8">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">unicode_binary</span><span·class="p"·data-group-id="5282825239-9">(</span><span·class="p"·data-group-id="5282825239-9">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">charlist</span><span·class="p"·data-group-id="5282825239-10">(</span><span·class="p"·data-group-id="5282825239-10">)</span><span·class="p">,</span><span·class="w"> 
345 ··</span><span·class="nf">unicode_binary</span><span·class="p"·data-group-id="5282825239-11">(</span><span·class="p"·data-group-id="5282825239-11">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span·class="nf">nil</span><s[·...·truncated·by·diffoscope;·len:·301,·SHA:·3a853f7fd5e3e6cf601d6abd461ffc3dd79da5f0d4be909e0150983d6a004b9b·...·]344 </span><span·class="nf">charlist</span><span·class="p"·data-group-id="7638075136-6">(</span><span·class="p"·data-group-id="7638075136-6">)</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">maybe_improper_list</s[·...·truncated·by·diffoscope;·len:·659,·SHA:·21bb840fa8cf131e75063542b63afe13ff73a5bf4980f96d378273f7e404f08b·...·]
 345 ··</span><span·class="nf">unicode_binary</span><span·class="p"·data-group-id="7638075136-11">(</span><span·class="p"·data-group-id="7638075136-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="7638075136-12">(</span><span·class="p"·data-group-id="7638075136-12">)</span><span·class="p"·data-group-id="7638075136-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="9400247334-1">(</span><span·class="p"·data-group-id="9400247334-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="9400247334-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·e598aadd9f8c20f58c90ac836fb339339e16b9fb407fcfad1233859ed0336350·...·]-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="5621969586-1">(</span><span·class="p"·data-group-id="5621969586-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="5621969586-2">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·41daf236fe8a2a94fdc08e4bbb6659d6bf2be1496a4f55cc982fa382a6e90cdf·...·]-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="9400247334-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:·5e301478ce2de880920d63cb11c48a7de984b51afdf663de0f36aeb599fa94c1·...·]-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="5621969586-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:·3c775facf800cf35d5aec7ecc79dfc923c08d067a589d0bb339dd1fa45fa1d8d·...·]-3">)</span><span·class="w">
  
349 </span><span·class="nf">external_chardata</span><span·class="p"·data-group-id="9400247334-4">(</span><span·class="p"·data-group-id="9400247334-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="9400247334-5">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·251,·SHA:·73779a2273b8e5b09bd611bb3bc133d444f4a97ad8fbb1aae0954bc7fe1bcd7c·...·]-6">)</span><span·class="w">349 </span><span·class="nf">external_chardata</span><span·class="p"·data-group-id="5621969586-4">(</span><span·class="p"·data-group-id="5621969586-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="5621969586-5">(</span><span·class="p"[·...·truncated·by·diffoscope;·len:·251,·SHA:·794c948a7944dbfe9d8f2d1883e420506982728ea2499146720ed84f6b5bc842·...·]-6">)</span><span·class="w">
  
350 </span><span·class="nf">external_charlist</span><span·class="p"·data-group-id="9400247334-7">(</span><span·class="p"·data-group-id="9400247334-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="9400247334-8">(</span><span·class="[·...·truncated·by·diffoscope;·len:·335,·SHA:·e986fd0cd6e6ef9dfbcd812be0d4130f56280a5ca6f289bdcde59370348b7023·...·]-10">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">350 </span><span·class="nf">external_charlist</span><span·class="p"·data-group-id="5621969586-7">(</span><span·class="p"·data-group-id="5621969586-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="5621969586-8">(</span><span·class="[·...·truncated·by·diffoscope;·len:·335,·SHA:·5063540444c51d267d9dcdee1a898da99f8cdcb966933121e9a62b6d7bfd2a03·...·]-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="9400247334-11">(</span><span·class="p"·data-group-id="9400247334-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">external_unicode_binary</span><span·class="p"·data-group-id="9400247334-12">(</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·272,·SHA:·77f81fdc2ab9d823ea08f39bfeadc02517b622a98b2c49cf03dc9d4d20d59e8e·...·]-8">)</span></code></pre><h2·id="basic-language-support"·class="section-heading">351 ··</span><span·class="nf">external_charlist</span><span·class="p"·data-group-id="5621969586-11">(</span><span·class="p"·data-group-id="5621969586-11">)</span><span·class="p">,</span><span·class="w">·</span><span·class="nf">external_unicode_binary</span><span·class="p"·data-group-id="5621969586-12">(</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·272,·SHA:·6e2cd6d1faaa3d2b362e5f386356aba503eb330aed6dd35e9af6d3686efc703b·...·]-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="8632551243-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="8632551243-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="7615877719-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="7615877719-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="8632551243-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="8632551243-2">&gt;&gt;</span><span·class="p">.</span><span·class="w">405 2&gt;·</span><span·class="p"·data-group-id="7615877719-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="7615877719-2">&gt;&gt;</span><span·class="p">.</span><span·class="w">
406 </span><span·class="p"·data-group-id="8632551243-3">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="8632551243-3">&gt;&gt;</span><span·class="gp·unselectable">406 </span><span·class="p"·data-group-id="7615877719-3">&lt;&lt;</span><span·class="s">&quot;abc&quot;</span><span·class="p"·data-group-id="7615877719-3">&gt;&gt;</span><span·class="gp·unselectable">
407 3&gt;·</span><span·class="p"·data-group-id="8632551243-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:·e13d0a86e45e4152385a8e4409264e4820b2a0b89de328059cd7091c6a721649·...·]-4">&gt;&gt;</span><span·class="p">.</span><span·class="w">407 3&gt;·</span><span·class="p"·data-group-id="7615877719-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:·ef1d52058ce41126c62200e380e3e85c20405f976dd20831d4b6b0d436df2fc9·...·]-4">&gt;&gt;</span><span·class="p">.</span><span·class="w">
408 </span><span·class="p"·data-group-id="8632551243-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="8632551243-5">&gt;&gt;</span></code></pre><p>Here·the·shell·detects·lists·containing·printable·characters·or·binaries408 </span><span·class="p"·data-group-id="7615877719-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="7615877719-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="8732150465-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="8732150465-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·7d86beaf660c4ea3b9793417856bebf2e6d3773c576d839c8623e54f5f2f3707·...·]-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="1301346162-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="1301346162-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·7366def855d59c62bea74fb3ae404d9e02c32dd13c76a4677d089b0ca31eaad8·...·]-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="8732150465-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="8732150465-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="1301346162-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="1301346162-6">)</span><span·class="gp·unselectable">
425 1&gt;·</span><span·class="p"·data-group-id="8732150465-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="8732150465-7">]</span><span·class="p">.</span><span·class="w">425 1&gt;·</span><span·class="p"·data-group-id="1301346162-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="1301346162-7">]</span><span·class="p">.</span><span·class="w">
426 </span><span·class="p"·data-group-id="8732150465-8">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="8732150465-8">]</span><span·class="gp·unselectable">426 </span><span·class="p"·data-group-id="1301346162-8">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="1301346162-8">]</span><span·class="gp·unselectable">
427 2&gt;·</span><span·class="p"·data-group-id="8732150465-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:·3924debca161d9c99013514cd4233f1a6b8ed0337319a699f79b17e45254a39f·...·]-9">]</span><span·class="p">.</span><span·class="w">427 2&gt;·</span><span·class="p"·data-group-id="1301346162-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:·81f8948fac099491225faacb82f3070538da6318df6bbe3f3d56c9f605e6b56b·...·]-9">]</span><span·class="p">.</span><span·class="w">
428 </span><span·class="p"·data-group-id="8732150465-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:·39acd5d99db2282fe04f52fea4b588b185faada0f25e2024f6f6ede9d02b8a45·...·]-10">]</span><span·class="gp·unselectable">428 </span><span·class="p"·data-group-id="1301346162-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:·b3b6d9c99a1c61c3ccb7bfa8eea6ee533cda2732e386ee6a3b5cc027cff3cebf·...·]-10">]</span><span·class="gp·unselectable">
429 3&gt;·</span><span·class="p"·data-group-id="8732150465-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="8732150465-11">]</span><span·class="p">.</span><span·class="w">429 3&gt;·</span><span·class="p"·data-group-id="1301346162-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="1301346162-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="8732150465-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:·4671ba3ce825e3557c3ae0a67cd303c8922d119f4234deae9bb8dbfc2d07bd99·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">431 4&gt;·</span><span·class="p"·data-group-id="1301346162-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:·52771e60de64f86f0395047fbebeb6051c2f5800898f2e10a1d7f3f76b4f7687·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">
432 </span><span·class="p"·data-group-id="8732150465-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:·4671ba3ce825e3557c3ae0a67cd303c8922d119f4234deae9bb8dbfc2d07bd99·...·]-13">&gt;&gt;</span><span·class="gp·unselectable">432 </span><span·class="p"·data-group-id="1301346162-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:·52771e60de64f86f0395047fbebeb6051c2f5800898f2e10a1d7f3f76b4f7687·...·]-13">&gt;&gt;</span><span·class="gp·unselectable">
433 5&gt;·</span><span·class="p"·data-group-id="8732150465-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:·cc44715ccf14ccbd405931320dd84e3276c4bbf9b1e96f979e4974ff3bf49340·...·]-14">&gt;&gt;</span><span·class="p">.</span><span·class="w">433 5&gt;·</span><span·class="p"·data-group-id="1301346162-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:·bff551605a2a125b78a27f6b36e96d8e85ea1e55b25d00a5d84930a6847ce5bb·...·]-14">&gt;&gt;</span><span·class="p">.</span><span·class="w">
434 </span><span·class="p"·data-group-id="8732150465-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="8732150465-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="1301346162-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="1301346162-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="6083778652-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="6083778652-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·283b1084091da0dd30ffef3a9b55dd34473584eb6a426d67ef38fece15923bb6·...·]-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="3509835116-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="3509835116-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·af5950293d0ac81e0b358a87ad0695fc208d074845b821a5f10cf0e596a37030·...·]-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="6083778652-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="6083778652-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="3509835116-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="3509835116-6">)</span><span·class="gp·unselectable">
437 1&gt;·</span><span·class="p"·data-group-id="6083778652-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="6083778652-7">]</span><span·class="p">.</span><span·class="w">437 1&gt;·</span><span·class="p"·data-group-id="3509835116-7">[</span><span·class="mi">1024</span><span·class="p"·data-group-id="3509835116-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="6083778652-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</spa[·...·truncated·by·diffoscope;·len:·95,·SHA:·cd6a64655679b3a81afcdce3794e20c8eafe4b068bb4006ee5ecaaacd8e795b9·...·]-8">]</span><span·class="p">.</span><span·class="w">439 2&gt;·</span><span·class="p"·data-group-id="3509835116-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</spa[·...·truncated·by·diffoscope;·len:·95,·SHA:·06b40cb76fdcf0a73d7923aa1e46bde30a870cc5cdf0f38aa9253bd382af82a7·...·]-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="6083778652-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="6083778652-9">]</span><span·class="p">.</span><span·class="w">441 3&gt;·</span><span·class="p"·data-group-id="3509835116-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="3509835116-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="6083778652-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</[·...·truncated·by·diffoscope;·len:·403,·SHA:·c078dba6ef8e2fb212c04aa00a81eac9405bf1877674f1d7be0ac604eaa751c9·...·]-10">&gt;&gt;</span><span·class="p">.</span><span·class="w">443 4&gt;·</span><span·class="p"·data-group-id="3509835116-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</[·...·truncated·by·diffoscope;·len:·403,·SHA:·8cca67da29d90455051a8bf879ccd0b89a0ce6e2e00650cf3a95ad55bbf5c623·...·]-10">&gt;&gt;</span><span·class="p">.</span><span·class="w">
444 </span><span·class="p"·data-group-id="6083778652-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="6083778652-11">&gt;&gt;</span><span·class="gp·unselectable">444 </span><span·class="p"·data-group-id="3509835116-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="3509835116-11">&gt;&gt;</span><span·class="gp·unselectable">
445 5&gt;·</span><span·class="p"·data-group-id="6083778652-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:·100,·SHA:·d8678664aa39ac4fef7c9358785d15b399eeeb1165cdfa50b5dc468b79779601·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">445 5&gt;·</span><span·class="p"·data-group-id="3509835116-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:·100,·SHA:·79cb5299f8ebc818a293af1c6d22555c6f419f8cd6813b73735540f3e0774515·...·]-12">&gt;&gt;</span><span·class="p">.</span><span·class="w">
446 </span><span·class="p"·data-group-id="6083778652-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="6083778652-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="3509835116-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="3509835116-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="4848634015-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="4848634015-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·7ba3114b38458a70e76634c7e18986e12c0edf3990aaf27ca6dd16ae2563c59e·...·]-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="6476170228-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="6476170228-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·8dff2b72e015aeb96a9db4fd707b2f65a488161f2ef401f61b542a2484f4ff6e·...·]-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="4848634015-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="4848634015-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="6476170228-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="6476170228-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="4848634015-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="4848634015-8">[</span><span·class="p"·data-group-id="4848634015-9">{</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1308,·SHA:·c924115dce2e962b1f3d2a681391056f5ad7fc2023548187f6d79c014bc5dc03·...·]-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="6476170228-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="6476170228-8">[</span><span·class="p"·data-group-id="6476170228-9">{</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1308,·SHA:·b21aa3b0d533173a74dd7b5c81805be37ec6b94f0fe4932eb012935fe133af5b·...·]-7">)</span><span·class="p">.</span><span·class="w">
457 </span><span·class="p"·data-group-id="4848634015-13">{</span><span·class="p"·data-group-id="4848634015-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="4848634015-14">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="4848634015-15">&lt[·...·truncated·by·diffoscope;·len:·938,·SHA:·fcda155788534d528a6643cae52c283f9535c732b9d2e0ed8d5938230f54a563·...·]-13">}</span><span·class="w">457 </span><span·class="p"·data-group-id="6476170228-13">{</span><span·class="p"·data-group-id="6476170228-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="6476170228-14">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="6476170228-15">&lt[·...·truncated·by·diffoscope;·len:·938,·SHA:·059330aef419335264a7f90798f6628d6fbb8dc8662eddeccbd3bfa99ce4fae0·...·]-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="0857918465-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="0857918465-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·246ba492a82bd86153155727e08725e9bb7f48a7d8f96c0cb75e8fd3d983b30f·...·]-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="8649211010-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="8649211010-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·42b7b2933df05a1a09f178882012a979bda1538b96761a5e3dbc61e376ec05c5·...·]-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="0857918465-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="0857918465-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="8649211010-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="8649211010-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="0857918465-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="0857918465-8">[</span><span·class="p"·data-group-id="0857918465-9">{</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1308,·SHA:·f77e53b7abba073d9a82dfdb6a663b4cd411fc0f6fdeecb61e9e10ee33ed2423·...·]-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="8649211010-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="8649211010-8">[</span><span·class="p"·data-group-id="8649211010-9">{</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1308,·SHA:·4be7df2058b5633909dceb7539cece2cac139535059d44061af9931a7b8a66ef·...·]-7">)</span><span·class="p">.</span><span·class="w">
462 </span><span·class="p"·data-group-id="0857918465-13">{</span><span·class="p"·data-group-id="0857918465-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="0857918465-14">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="0857918465-15">&lt[·...·truncated·by·diffoscope;·len:·443,·SHA:·d9d73d7fd6dab02d247651a2628ce1e77de45336edaee9d36135b88ef8b5b56e·...·]-13">}</span><span·class="w">462 </span><span·class="p"·data-group-id="8649211010-13">{</span><span·class="p"·data-group-id="8649211010-14">&lt;&lt;</span><span·class="s">&quot;åäö&quot;</span><span·class="p"·data-group-id="8649211010-14">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="8649211010-15">&lt[·...·truncated·by·diffoscope;·len:·443,·SHA:·312766e6edca9dea84b4bffe70d6c62c981ca9395ef8a8703d0ba275826a2ce8·...·]-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="3595832936-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="3595832936-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·430397046652a655f2b298effda3f9b28e6b415c9f1ab66df90daff03a799d31·...·]-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="2142883809-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="2142883809-1">)</span><span·class="w">·</span><span·class="p"·data-group-i[·...·truncated·by·diffoscope;·len:·782,·SHA:·cdd977f952ae7e7b2ea538a4268acfdd8c809c18a6069cc9095aae800d94f90a·...·]-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="3595832936-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="3595832936-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="2142883809-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="2142883809-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="3595832936-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:·aff682acc5b7ccba57e0c8a4d0910bb550a30727c7c777f8790d71a41c3e7e96·...·]-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="2142883809-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:·216db81e0dd9701d6e51ff9cc9237183005276f230d3932340b9fbfc618c1815·...·]-7">)</span><span·class="p">.</span><span·class="w">
492 </span><span·class="p"·data-group-id="3595832936-9">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="ss">latin1</span><span·class="p"·data-group-id="3595832936-9">}</span><span·class="gp·unselectable">492 </span><span·class="p"·data-group-id="2142883809-9">{</span><span·class="ss">encoding</span><span·class="p">,</span><span·class="ss">latin1</span><span·class="p"·data-group-id="2142883809-9">}</span><span·class="gp·unselectable">
493 2&gt;·</span><span·class="nf">q</span><span·class="p"·data-group-id="3595832936-10">(</span><span·class="p"·data-group-id="3595832936-10">)</span><span·class="p">.</span><span·class="w">493 2&gt;·</span><span·class="nf">q</span><span·class="p"·data-group-id="2142883809-10">(</span><span·class="p"·data-group-id="2142883809-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="3595832936-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="3595832936-11">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·791,·SHA:·0e0126f52332c8e4e725987fa98baa1468b7e75442b5eea418fb24e9c1a4a8fd·...·]-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="2142883809-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="2142883809-11">)</span><span·class="w">·</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·791,·SHA:·fef48eac59e39cd25f608e0bba117af9d277da80705cf4b53a92a7a1a45d9c0a·...·]-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="3595832936-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="3595832936-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="2142883809-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="2142883809-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.1/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="0161355400-1">(</span><span·class="p"·data-group-id="0161355400-2">[</span><span·class="p"·data-group-id="0161355400-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:·6a673e2eb9e010a06ff4d4839c370dd9381eeb681df52acb8fd761a7857ab9f3·...·]-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="2674791068-1">(</span><span·class="p"·data-group-id="2674791068-2">[</span><span·class="p"·data-group-id="2674791068-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:·2725a9cb2c17e26acd4479dde577757a1cdd0392d9768bb28ad9bf0f4d17bba9·...·]-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="0161355400-5">(</span><span·class="p"·data-group-id="0161355400-6">[</span><span·class="p"·data-group-id="0161355400-7">{</span><span·class="p"·data-group-id="0161355400-8">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="0161355400-8">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="0161355400-9">&lt;&lt;</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="0161355400-9">&gt;&gt;</span><span·class="p"·data-group-id="0161355400-7">}</span><span·class="p">,</span><span·class="gp·unselectable"> 
595 2&gt;·</span><span·class="p"·data-group-id="0161355400-10">{</span><span·class="p"·data-group-id="0161355400-11">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="0161355400-11">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id=[·...·truncated·by·diffoscope;·len:·383,·SHA:·61cbbe623e6cc2a29e18d652ed0c3d2b83e5f2ac9046c7666f3afe1c9750a0f5·...·]">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="2674791068-5">(</span><span·class="p"·data-group-id="2674791068-6">[</span><span·class="p"·data-group-id="2674791068-7">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·432,·SHA:·6f2cee7500cfa05bf1c0772e5c5e7fa62335e1f241353ea4a91a22e73feaa17f·...·]">
 595 2&gt;·</span><span·class="p"·data-group-id="2674791068-10">{</span><span·class="p"·data-group-id="2674791068-11">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="2674791068-11">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="2674791068-12">&lt;&lt;</span><span·class="s">&quot;örebro&quot;</span><span·class="o">/</span><span·class="ss">utf8</span><span·class="p"·data-group-id="2674791068-12">&gt;&gt;</span><span·class="p"·data-group-id="2674791068-10">}</span><span·class="p"·data-group-id="2674791068-6">]</span><span·class="p"·data-group-id="2674791068-5">)</span><span·class="p">.</span><span·class="w">
596 </span><span·class="p"·data-group-id="0161355400-13">&lt;&lt;</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="0161355400-13">&gt;&gt;</span></code></pre>596 </span><span·class="p"·data-group-id="2674791068-13">&lt;&lt;</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="2674791068-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="0666956375-1">(</span><span·class="p"·data-group-id="0666956375-2">[</span><span·class="p"·data-group-id="0666956375-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:·301,·SHA:·4d93b7856e5158c9733400380459aaec15aaf9b0d8773e651001e816a80b6be8·...·]5-2">]</span><span·class="p">,</span><span·class="gp·unselectable">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="5569892715-1">(</span><span·class="p"·data-group-id="5569892715-2">[</span><span·class="p"·data-group-id="5569892715-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:·301,·SHA:·aab9319ef484ca57ea188c624d4e725e7d2915d4bfa6355380fce192af8f1898·...·]5-2">]</span><span·class="p">,</span><span·class="gp·unselectable">
640 1&gt;·</span><span·class="p"·data-group-id="0666956375-5">[</span><span·class="p"·data-group-id="0666956375-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="0666956375-6">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·75,·SHA:·b75ed0f20a0e88ba7414bbf193c542f0631ba085cf457ef1214c808fa06f4470·...·]5-1">)</span><span·class="p">.</span><span·class="w">640 1&gt;·</span><span·class="p"·data-group-id="5569892715-5">[</span><span·class="p"·data-group-id="5569892715-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="5569892715-6">}</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·75,·SHA:·968e8d8b28dc27e9569f6a5c4c2e6acd474201c80bba36222a082de947eb96d1·...·]5-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="0666956375-7">(</span><span·class="p"·data-group-id="0666956375-8">[</span><span·class="p"·data-group-id="0666956375-9">{</span><span·class="p"·data-group-id="0666956375-10">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·258,·SHA:·40dbee5f807661960be2ed90205725e86ebd33866ddf5a2f1107f493caf3f035·...·]5-9">}</span><span·class="p">,</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="5569892715-7">(</span><span·class="p"·data-group-id="5569892715-8">[</span><span·class="p"·data-group-id="5569892715-9">{</span><span·class="p"·data-group-id="5569892715-10">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·258,·SHA:·827dff85acdb32334522fa14db707e8dddf479bcf03d17469e3427cf4aa4903e·...·]5-9">}</span><span·class="p">,</span><span·class="gp·unselectable">
643 2&gt;·</span><span·class="p"·data-group-id="0666956375-12">{</span><span·class="p"·data-group-id="0666956375-13">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="0666956375-13">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="0666956375-14">&l[·...·truncated·by·diffoscope;·len:·684,·SHA:·1f83e733b68ddd57bc997c1cd5c2d80686b8f6dbade0fac46459c74de110b257·...·]5-7">)</span><span·class="p">.</span><span·class="w">643 2&gt;·</span><span·class="p"·data-group-id="5569892715-12">{</span><span·class="p"·data-group-id="5569892715-13">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="5569892715-13">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="5569892715-14">&l[·...·truncated·by·diffoscope;·len:·684,·SHA:·7539b06664f6430ca8f711038846294470c5af0c1146b82fb2b6813bb7219ce3·...·]5-7">)</span><span·class="p">.</span><span·class="w">
644 </span><span·class="p"·data-group-id="0666956375-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="0666956375-17">&gt;&gt;</span></code></pre>644 </span><span·class="p"·data-group-id="5569892715-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="5569892715-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="8886350856-1">(</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="8886350856-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="9557164555-1">(</span><span·class="s">&quot;foo+bar=1&amp;city=%C3%B6rebro&quot;</span><span·class="p"·data-group-id="9557164555-1">)</span><span·class="p">.</span><span·class="w">
677 </span><span·class="p"·data-group-id="8886350856-2">[</span><span·class="p"·data-group-id="8886350856-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="8886350856-3">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·249,·SHA:·912d3296d8acabb38380de913e17df08d638e02852dd8519ae7a85d2c9a91fcb·...·]-2">]</span><span·class="gp·unselectable">677 </span><span·class="p"·data-group-id="9557164555-2">[</span><span·class="p"·data-group-id="9557164555-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="9557164555-3">}</span><span·class="p">,</span><s[·...·truncated·by·diffoscope;·len:·249,·SHA:·d541988eb2abd9b3633b9f37997da696b8e9047569a312b2218f3a4dc56307e0·...·]-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="8886350856-5">(</span><span·class="p"·data-group-id="8886350856-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="8886350856-6">&gt;&gt;</span><span·class="p"·data-group-id="8[·...·truncated·by·diffoscope;·len:·9,·SHA:·8fb1f81e128c816b86c96401b235da6e7e98737ab6a3e264e8e32986de9e87ad·...·]-5">)</span><span·class="p">.</span><span·class="w">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="9557164555-5">(</span><span·class="p"·data-group-id="9557164555-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="9557164555-6">&gt;&gt;</span><span·class="p"·data-group-id="9[·...·truncated·by·diffoscope;·len:·9,·SHA:·d691b1fea432c69d5aa89678641d32ee8e351c0f15a86458d15bdb5f7cea4395·...·]-5">)</span><span·class="p">.</span><span·class="w">
679 </span><span·class="p"·data-group-id="8886350856-7">[</span><span·class="p"·data-group-id="8886350856-8">{</span><span·class="p"·data-group-id="8886350856-9">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="8886350856-9">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="8886350856-10">&lt;&lt;</span><span·class="s">&quot;1&quot;</span><span·class="p"·data-group-id="8886350856-10">&gt;&gt;</span><span·class="p"·data-group-id="8886350856-8">}</span><span·class="p">,</span><span·class="w"> 
680 ·</span><span·class="p"·data-group-id="8886350856-11">{</span><span·class="p"·data-group-id="8886350856-12">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="8886350856-12">&gt;&gt;</span><span·class="p">,</span><span·cla[·...·truncated·by·diffoscope;·len:·514,·SHA:·d4f16e68da0c8efb34032f3408c68bb632fa86f55371cb7b970e5ab2349074eb·...·]>679 </span><span·class="p"·data-group-id="9557164555-7">[</span><span·class="p"·data-group-id="9557164555-8">{</span><span·class="p"·data-group-id="9557164555-9">&lt;&lt;</span><span·class="s">&quot;foo·bar&quot;</span><span·class="p"·data-group-id="9557164555[·...·truncated·by·diffoscope;·len:·293,·SHA:·b837424ac50cd0b32ad9f29c07832fcd820d4250c1cd92799de579dbd6420cdc·...·]>
 680 ·</span><span·class="p"·data-group-id="9557164555-11">{</span><span·class="p"·data-group-id="9557164555-12">&lt;&lt;</span><span·class="s">&quot;city&quot;</span><span·class="p"·data-group-id="9557164555-12">&gt;&gt;</span><span·class="p">,</span><span·class="p"·data-group-id="9557164555-13">&lt;&lt;</span><span·class="mi">230</span><span·class="p">,</span><span·class="mi">157</span><span·class="p">,</span><span·class="mi">177</span><span·class="p">,</span><span·class="mi">228</span><span·class="p">,</span><span·class="mi">186</span><span·class="p">,</span><span·class="mi">172</span><span·class="p"·data-group-id="9557164555-13">&gt;&gt;</span><span·class="p"·data-group-id="9557164555-11">}</span><span·class="p"·data-group-id="9557164555-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="5229003069-1">(</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p"·data-group-id="5229003069-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="1459387178-1">(</span><span·class="s">&quot;/a/b/c/./../../g&quot;</span><span·class="p"·data-group-id="1459387178-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="5229003069-2">(</span><span·class="p"·data-group-id="5229003069-3">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="5229003069-3">&gt;&gt;</span><span·class="p"·data-group-id="5229003069-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="1459387178-2">(</span><span·class="p"·data-group-id="1459387178-3">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="1459387178-3">&gt;&gt;</span><span·class="p"·data-group-id="1459387178-2">)</span><span·class="p">.</span><span·class="w">
715 </span><span·class="p"·data-group-id="5229003069-4">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id="5229003069-4">&gt;&gt;</span><span·class="gp·unselectable">715 </span><span·class="p"·data-group-id="1459387178-4">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id="1459387178-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="5229003069-5">(</span><span·class="s">&quot;http://localhost:80&quot;</span><span·class="p"·data-group-id="5229003069-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="1459387178-5">(</span><span·class="s">&quot;http://localhost:80&quot;</span><span·class="p"·data-group-id="1459387178-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="5229003069-6">(</span><span·class="p"·data-group-id="5229003069-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="1459387178-6">(</span><span·class="p"·data-group-id="1459387178-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="5229003069-7">}</span><span·class="p"·data-group-id="5229003069-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="1459387178-7">}</span><span·class="p"·data-group-id="1459387178-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="5703268541-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="5703268541-2">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="5703268541-2">]</[·...·truncated·by·diffoscope;·len:·46,·SHA:·b855297af39453e7f7df34cdd3a0aeff610825c3da33dfd9757d68c363600ed2·...·]-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="4405979326-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="4405979326-2">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="4405979326-2">]</[·...·truncated·by·diffoscope;·len:·46,·SHA:·f4a73e5330fad5df251fb8c74ac9e4ad03d61d2549366feafa20d22b6d3487f7·...·]-1">)</span><span·class="p">.</span><span·class="w">
755 </span><span·class="p"·data-group-id="5703268541-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="5703268541-3">}</span><span·class="gp·unselectable">755 </span><span·class="p"·data-group-id="4405979326-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="4405979326-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="5703268541-4">(</span><span·class="p"·data-group-id="5703268541-5">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="5703268541-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·168,·SHA:·b67869472b09112f8eb76e7714fba72bf907595a71d57cc55c3f010e66092881·...·]-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="4405979326-4">(</span><span·class="p"·data-group-id="4405979326-5">&lt;&lt;</span><span·class="s">&quot;mid/content=5/../6&quot;</span><span·class="p"·data-group-id="4405979326-5">&gt;&gt;</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·168,·SHA:·5764f35107f62a1ad858f27007c601e58c20490c1c11e2cc1c96fcc96f5b7c1d·...·]-4">)</span><span·class="p">.</span><span·class="w">
757 </span><span·class="p"·data-group-id="5703268541-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="5703268541-8">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·72,·SHA:·f13f0f408e095da124fd36c4bc7915a75584b32af338f27428ab32944a702bee·...·]-7">}</span><span·class="gp·unselectable">757 </span><span·class="p"·data-group-id="4405979326-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="4405979326-8">&lt;&lt;</span><span·class="s">&quot;mid/6&quot;</span><span·class="p"·data-group-id[·...·truncated·by·diffoscope;·len:·72,·SHA:·80cb9eea0ce858aaf75b9584a08cb5036b0d7a304e071621aa55900fadfb5da4·...·]-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="5703268541-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="5703268541-10">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="5703268541-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·c577564f35f4bda30afcdca1de89fffcdecb394783a6446aaad724202770523c·...·]-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="4405979326-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="4405979326-10">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="4405979326-10[·...·truncated·by·diffoscope;·len:·51,·SHA:·ac747d4d48b966780e4267bfcc436c342b4ab841bcf199df5df2ac7f0d297410·...·]-9">)</span><span·class="p">.</span><span·class="w">
759 </span><span·class="p"·data-group-id="5703268541-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:·5b9dac49aa43dab851cb7eea7cfa727bd6afbf4afdc4b19e3a44496bf0d08319·...·]-11">}</span><span·class="gp·unselectable">759 </span><span·class="p"·data-group-id="4405979326-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:·6dc7c77e93a635d56bad9b4c0d3a5da68ebefc8033ab036f28a76f970e819276·...·]-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="5703268541-12">(</span><span·class="p"·data-group-id="5703268541-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="4405979326-12">(</span><span·class="p"·data-group-id="4405979326-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="5703268541-13">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5703268541-14">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="5703268541-14">]</span><span·class="p"·data-group-id="5703268541-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="4405979326-13">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4405979326-14">[</span><span·class="ss">return_map</span><span·class="p"·data-group-id="4405979326-14">]</span><span·class="p"·data-group-id="4405979326-12">)</span><span·class="p">.</span><span·class="w">
762 </span><span·class="p"·data-group-id="5703268541-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:·2a9108eb43ac7555e8f437ca922e1eb88ab906848585c141dbd12b21a2de0afc·...·]-15">}</span></code></pre>762 </span><span·class="p"·data-group-id="4405979326-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:·a91823e899203f72c8bb1c8e8aafa638bcd70f402a1b5d81b740dc9224e989a4·...·]-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="7132460337-1">(</span><span·class="s">&quot;foo://user@example.com:8042/over/there?name=ferret#nose&quot;</span><span·class="p"·data-group-id="7132460337-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="6920796814-1">(</span><span·class="s">&quot;foo://user@example.com:8042/over/there?name=ferret#nose&quot;</span><span·class="p"·data-group-id="6920796814-1">)</span><span·class="p">.</span><span·class="w">
792 </span><span·class="p"·data-group-id="7132460337-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="6920796814-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="7132460337-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="6920796814-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="7132460337-3">(</span><span·class="p"·data-group-id="7132460337-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="7132460337-4">&gt;&gt;</span><span·class="p"·data-group-id="7132460337-3">)</span><span·class="p">.</span><span·class="w"> 
796 </span><span·class="p"·data-group-id="7132460337-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="7132460337-6">&lt;&lt;</span><span·class="s">&quot;example.c[·...·truncated·by·diffoscope;·len:·386,·SHA:·97ce4396f0e217c93ffc0a47275f09cd5d8a55da938d32bef3108644cd373602·...·]</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="6920796814-3">(</span><span·class="p"·data-group-id="6920796814-4">&lt;&lt;</span><span·class="s">&quot;foo://user@example.co[·...·truncated·by·diffoscope;·len:·172,·SHA:·ba835cd9abab423e8573a948bc8c0fcc0a21f1ef20c0481557de72499d73d4d8·...·]</span><span·class="w">
 796 </span><span·class="p"·data-group-id="6920796814-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="6920796814-6">&lt;&lt;</span><span·class="s">&quot;example.com&quot;</span><span·class="p"·data-group-id="6920796814-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="6920796814-7">&lt;&lt;</span><span·class="s">&quot;/over/there&quot;</span><span·class="p"·data-group-id="6920796814-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="7132460337-8">&lt;&lt;</span><span·class="s">&quot;name=ferret&quot;</span><span·class="p"·data-group-id="7132460337-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:·86053b51fb86af7adad4d62ee019ca93a451ec91e36d714044f422ef690a0f1d·...·]-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="6920796814-8">&lt;&lt;</span><span·class="s">&quot;name=ferret&quot;</span><span·class="p"·data-group-id="6920796814-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:·60376c93a3e90c6e12dcf8d3488c8157f2d214f5ff8a7119461b73ec0bfe3ee9·...·]-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="7132460337-10">&lt;&lt;</span><span·class="s">&quot;user&quot;</span><span·class="p"·data-group-id="7132460337-10">&gt;&gt;</span><span·class="p"·data-group-id="7132460337-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="6920796814-10">&lt;&lt;</span><span·class="s">&quot;user&quot;</span><span·class="p"·data-group-id="6920796814-10">&gt;&gt;</span><span·class="p"·data-group-id="6920796814-5">}</span></code></pre>
799 ··</section>799 ··</section>
Max diff block lines reached; 45446/91571 bytes (49.63%) of diff not shown.
39.0 KB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/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="7691425946-1">(</span><span·class="s">&quot;http://cities/örebro?foo·bar&quot;</span><span·class="p"·data-group-id="7691425946-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="2253400698-1">(</span><span·class="s">&quot;http://cities/örebro?foo·bar&quot;</span><span·class="p"·data-group-id="2253400698-1">)</span><span·class="p">.</span><span·class="w">
198 ··</span><span·class="p"·data-group-id="7691425946-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="7691425946-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="2253400698-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="2253400698-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="7778846142-1">(</span><span·class="p"·data-group-id="7778846142-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="8227595836-1">(</span><span·class="p"·data-group-id="8227595836-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="7778846142-2">}</span><span·class="p"·data-group-id="7778846142-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="8227595836-2">}</span><span·class="p"·data-group-id="8227595836-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="0210683401-1">(</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="0210683401-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:·075f64f227d03c1f77d9d6557429c4c86c8a30f192f2c0cee7b3743935035f2a·...·]-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="7630916085-1">(</span><span·class="nc">uri_string</span><span·class="p">:</span><span·class="nf">parse</span><span·class="p"·data-group-id="7630916085-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:·18f7ce25fb71be2c1b4f0bc5581536e8c0b6107300762bce20629408e17cbb59·...·]-1">)</span><span·class="p">.</span><span·class="w">
208 ··</span><span·class="p"·data-group-id="0210683401-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="7630916085-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="0210683401-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="7630916085-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="4949760908-1">(</span><span·class="p"·data-group-id="4949760908-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="5918341858-1">(</span><span·class="p"·data-group-id="5918341858-1">)</span><span·class="p">.</span><span·class="w">
233 ····</span><span·class="p"·data-group-id="4949760908-2">[</span><span·class="p"·data-group-id="4949760908-3">{</span><span·class="ss">scheme</span><span·class="p">,</span><span·class="w">233 ····</span><span·class="p"·data-group-id="5918341858-2">[</span><span·class="p"·data-group-id="5918341858-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="4949760908-3">}</span><span·class="p">,</span><span·class="w">234 ·····</span><span·class="s">&quot;+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&quot;</span><span·class="p"·data-group-id="5918341858-3">}</span><span·class="p">,</span><span·class="w">
235 ····</span><span·class="p"·data-group-id="4949760908-4">{</span><span·class="ss">userinfo</span><span·class="p">,</span><span·class="w">235 ····</span><span·class="p"·data-group-id="5918341858-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="4949760908-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="5918341858-4">}</span><span·class="p">,</span><span·class="w">
237 ····</span><span·class="p"·data-group-id="4949760908-5">{</span><span·class="ss">host</span><span·class="p">,</span><span·class="w">237 ····</span><span·class="p"·data-group-id="5918341858-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="4949760908-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="5918341858-5">}</span><span·class="p">,</span><span·class="w">
239 ····</span><span·class="p"·data-group-id="4949760908-6">{</span><span·class="ss">ipv4</span><span·class="p">,</span><span·class="s">&quot;.0123456789&quot;</span><span·class="p"·data-group-id="4949760908-6">}</span><span·class="p">,</span><span·class="w">239 ····</span><span·class="p"·data-group-id="5918341858-6">{</span><span·class="ss">ipv4</span><span·class="p">,</span><span·class="s">&quot;.0123456789&quot;</span><span·class="p"·data-group-id="5918341858-6">}</span><span·class="p">,</span><span·class="w">
240 ····</span><span·class="p"·data-group-id="4949760908-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="4949760908-7">}</span><span·class="p">,</span><span·class="w">240 ····</span><span·class="p"·data-group-id="5918341858-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="5918341858-7">}</span><span·class="p">,</span><span·class="w">
241 ····</span><span·class="p"·data-group-id="4949760908-8">{</span><span·class="ss">regname</span><span·class="p">,</span><span·class="w">241 ····</span><span·class="p"·data-group-id="5918341858-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="4949760908-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="5918341858-8">}</span><span·class="p">,</span><span·class="w">
243 ····</span><span·class="p"·data-group-id="4949760908-9">{</span><span·class="ss">path</span><span·class="p">,</span><span·class="w">243 ····</span><span·class="p"·data-group-id="5918341858-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="4949760908-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="5918341858-9">}</span><span·class="p">,</span><span·class="w">
245 ····</span><span·class="p"·data-group-id="4949760908-10">{</span><span·class="k">query</span><span·class="p">,</span><span·class="w">245 ····</span><span·class="p"·data-group-id="5918341858-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="4949760908-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="5918341858-10">}</span><span·class="p">,</span><span·class="w">
247 ····</span><span·class="p"·data-group-id="4949760908-11">{</span><span·class="ss">fragment</span><span·class="p">,</span><span·class="w">247 ····</span><span·class="p"·data-group-id="5918341858-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="4949760908-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="5918341858-11">}</span><span·class="p">,</span><span·class="w">
249 ····</span><span·class="p"·data-group-id="4949760908-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="4949760908-12">}</span><span·class="p">,</span><span·class="w">249 ····</span><span·class="p"·data-group-id="5918341858-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="5918341858-12">}</span><span·class="p">,</span><span·class="w">
250 ····</span><span·class="p"·data-group-id="4949760908-13">{</span><span·class="ss">unreserved</span><span·class="p">,</span><span·class="w">250 ····</span><span·class="p"·data-group-id="5918341858-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="4949760908-13">}</span><span·class="p"·data-group-id="4949760908-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="5918341858-13">}</span><span·class="p"·data-group-id="5918341858-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="3690112838-1">(</span><span·class="p"·data-group-id="3690112838-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:·d610050415933edc1877d8822433baf5619948009975d04da0c92181697a76a1·...·]-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="4562777455-1">(</span><span·class="p"·data-group-id="4562777455-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:·654c21c1bd18d3c876a9ff5927dfc7b037934922c864529dc2aac071bcb9819e·...·]-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="3492771348-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="3492771348-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="4861441037-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="4861441037-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="3492771348-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="3492771348-3">[</span><span·class="ss">return_map</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·896edd3071d93263a8fa69372f3214170ac761e8d5661dc0cb1d4a444783eb8f·...·]-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="4861441037-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="4861441037-3">[</span><span·class="ss">return_map</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·68,·SHA:·0d592d859ac1f63c9ded04d2a4083539a1b324fe28c0e89a69d883a11317b8db·...·]-2">)</span><span·class="p">.</span><span·class="w">
267 ····</span><span·class="p"·data-group-id="3492771348-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="4861441037-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="3492771348-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="4861441037-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="9973260206-1">(</span><span·class="s">&quot;local%23host&quot;</span><span·class="p"·data-group-id="9973260206-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="0432158017-1">(</span><span·class="s">&quot;local%23host&quot;</span><span·class="p"·data-group-id="0432158017-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="9973260206-2">(</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="9973260206-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="0432158017-2">(</span><span·class="s">&quot;/%F6re%26bro%20&quot;</span><span·class="p"·data-group-id="0432158017-2">)</span><span·class="p">.</span><span·class="w">
275 ····</span><span·class="p"·data-group-id="9973260206-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="9973260206-4">&lt;&lt;</span><span·class="s">&quot;/öre&amp;bro·&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·88,·SHA:·c1f0f062c390e051cfa9d546fdb62639181a2bfdb2663da191fcbdf2e6d50c45·...·]-3">}</span><span·class="w">275 ····</span><span·class="p"·data-group-id="0432158017-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="0432158017-4">&lt;&lt;</span><span·class="s">&quot;/öre&amp;bro·&quot;</span><span·class="[·...·truncated·by·diffoscope;·len:·88,·SHA:·bd51a1ba0b12b15764e90e22004641d3f30390918f201aca62b9b085b3873e53·...·]-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="9973260206-5">(</span><span·class="p"·data-group-id="9973260206-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="0432158017-5">(</span><span·class="p"·data-group-id="0432158017-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="9973260206-6">}</span><span·class="p"·data-group-id="9973260206-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="0432158017-6">}</span><span·class="p"·data-group-id="0432158017-5">)</span><span·class="p">.</span><span·class="w">
278 ····</span><span·class="p"·data-group-id="9973260206-7">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="9973260206-8">{</span><span·class="ss">invalid</span><span·class="p">,</span><span·class="p"·data-group-id="9973260206-9">{</span><span·class="ss">pat[·...·truncated·by·diffoscope;·len:·517,·SHA:·37af7c4ac12017f41ade1607b3240b08aa8fb26879cdadbe6ff91789a9e40d6d·...·]-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="0432158017-7">{</span><span·class="ss">error</span><span·class="p">,</span><span·class="p"·data-group-id="0432158017-8">{</span><span·class="ss">invalid</span><span·class="p">,</span><span·class="p"·data-group-id="0432158017-9">{</span><span·class="ss">pat[·...·truncated·by·diffoscope;·len:·517,·SHA:·f4a479694d85c13c4d0a854ab1ee5eb802f641d9b334d7ba670fad4e81044c64·...·]-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="4912190615-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="4912190615-2">[</span><span·class="p"·data-group-id="4912190615-3">{</span><span·class="ss">in_encoding</[·...·truncated·by·diffoscope;·len:·230,·SHA:·c7c0efef1277e7dfbe5cc66098858f39fd98458f2d2b7bac9b9b36ed8c3e1059·...·]-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="9195524679-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="9195524679-2">[</span><span·class="p"·data-group-id="9195524679-3">{</span><span·class="ss">in_encoding</[·...·truncated·by·diffoscope;·len:·230,·SHA:·d6029cc0170d3556156265f6e9e3e309476cf4097a2fb39d67ecf7c85c603ff0·...·]-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="4912190615-4">(</span><span·class="s">&quot;/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="4912190615-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="9195524679-4">(</span><span·class="s">&quot;/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="9195524679-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="8064504139-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="8064504139-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="9629726998-1">(</span><span·class="s">&quot;http://%6C%6Fcal%23host/%C3%B6re%26bro%20&quot;</span><span·class="p"·data-group-id="9629726998-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="8064504139-2">(</span><span·class="s">&quot;http://local#host/öre&amp;bro·&quot;</span><span·class="p"·data-group-id="8064504139-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="9629726998-2">(</span><span·class="s">&quot;http://local#host/öre&amp;bro·&quot;</span><span·class="p"·data-group-id="9629726998-2">)</span><span·class="p">.</span><span·class="w">
289 ····</span><span·class="p"·data-group-id="8064504139-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="8064504139-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="9629726998-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="9629726998-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.1/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="3499497748-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3499497748-2">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·[·...·truncated·by·diffoscope;·len:·1460,·SHA:·15e7f088a30adcc4b843e8dd63d919f94d5c0543704d3324f4db3f96c5397241·...·]-3">)</span><span·class="p">.</span><span·class="w">1027 &gt;·</span><span·class="p"·data-group-id="8030138402-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8030138402-2">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><span·[·...·truncated·by·diffoscope;·len:·1460,·SHA:·1dd9e5a9ae477c24dbe0b3abd4f2e1a6c60bff3e17025b8aeee8ca02e3f1165f·...·]-3">)</span><span·class="p">.</span><span·class="w">
1028 </span><span·class="p"·data-group-id="3499497748-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3499497748-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="8030138402-10">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8030138402-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="3499497748-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="8030138402-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="3499497748-12">&gt;&gt;</span><span·class="p"·data-group-id="3499497748-11">}</span><span·class="p"·data-group-id="3499497748-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="8030138402-12">&gt;&gt;</span><span·class="p"·data-group-id="8030138402-11">}</span><span·class="p"·data-group-id="8030138402-10">}</span><span·class="gp·unselectable">
1031 &gt;·</span><span·class="p"·data-group-id="3499497748-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="3499497748-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·1787,·SHA:·7876400ee91d164a5f55b6b981464c24d03c35af7f0e70a31e0fc10b34dd5c00·...·]-14">)</span><span·class="p">.</span><span·class="w">1031 &gt;·</span><span·class="p"·data-group-id="8030138402-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="8030138402-13">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·1787,·SHA:·82f5a9c22ea7c5a6743216d8e71f489bdd4df0453a55c0f98e1386cb8b9fd134·...·]-14">)</span><span·class="p">.</span><span·class="w">
1032 </span><span·class="p"·data-group-id="3499497748-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3499497748-23">[</span><span·class="p"·data-group-id="3499497748-24">{</span><span·class="s">&quot;bar&quot;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·127,·SHA:·ce7a05e4d2b76c5ebbd714985fb50254611fcec1786d8f19cb73dc1d257c3772·...·]-25">&gt;&gt;</span><span·class="p">,</span><span·class="w">1032 </span><span·class="p"·data-group-id="8030138402-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8030138402-23">[</span><span·class="p"·data-group-id="8030138402-24">{</span><span·class="s">&quot;bar&quot;</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·127,·SHA:·1e354050420f0eefbc98ed0e8ad4c539b91276d27024fc1eaae5065a7cdbf453·...·]-25">&gt;&gt;</span><span·class="p">,</span><span·class="w">
1033 ······</span><span·class="p"·data-group-id="3499497748-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="8030138402-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="3499497748-27">{</span><span·class="p"·data-group-id="3499497748-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="3499497748-28">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·331512b16e06b9b9c38280ca8552c6f20175d95ff536a2f0b562e5564971bb46·...·]-27">}</span><span·class="p">,</span><span·class="w">1034 ·················</span><span·class="p"·data-group-id="8030138402-27">{</span><span·class="p"·data-group-id="8030138402-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="8030138402-28">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·159ce0116b850e4ec95a11e6c70502e850e6de0c64e4d3d05197785ae1ed0a7a·...·]-27">}</span><span·class="p">,</span><span·class="w">
1035 ·················</span><span·class="p"·data-group-id="3499497748-30">{</span><span·class="p"·data-group-id="3499497748-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="3499497748-31">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·69f0692856f4dcfbf558a24a923639780b399621e03b232304248830bbf20717·...·]-30">}</span><span·class="p">,</span><span·class="w">1035 ·················</span><span·class="p"·data-group-id="8030138402-30">{</span><span·class="p"·data-group-id="8030138402-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="8030138402-31">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·9375e679532af2e3b400619d4533b503c35f5b1b3600da0c90a44120f012b896·...·]-30">}</span><span·class="p">,</span><span·class="w">
1036 ·················</span><span·class="p"·data-group-id="3499497748-33">{</span><span·class="p"·data-group-id="3499497748-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="3499497748-34">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·77fce01226b10ffba0fdf33a15f1eb9898b8f996514d28008a7e1bc21fda6643·...·]-33">}</span><span·class="p">,</span><span·class="w">1036 ·················</span><span·class="p"·data-group-id="8030138402-33">{</span><span·class="p"·data-group-id="8030138402-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="8030138402-34">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·5e73020dc7db59ce315f4cad21974484c475cf35356f1820483edfaaaf20bc90·...·]-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="3499497748-26">}</span><span·class="p"·data-group-id="3499497748-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="8030138402-26">}</span><span·class="p"·data-group-id="8030138402-24">}</span><span·class="p">,</span><span·class="w">
1038 ·····</span><span·class="p"·data-group-id="3499497748-36">{</span><span·class="s">&quot;foo&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="3499497748-37">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="3499497748-37">&gt;&gt;</span><span·class="p">,</span><span·class="w">1038 ·····</span><span·class="p"·data-group-id="8030138402-36">{</span><span·class="s">&quot;foo&quot;</span><span·class="p">,</span><span·class="p"·data-group-id="8030138402-37">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="8030138402-37">&gt;&gt;</span><span·class="p">,</span><span·class="w">
1039 ······</span><span·class="p"·data-group-id="3499497748-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="8030138402-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="3499497748-39">{</span><span·class="p"·data-group-id="3499497748-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="3499497748-40">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·2f283e78586cf93295770e6709ea920698f204e622b128b0d618a77199283511·...·]-39">}</span><span·class="p">,</span><span·class="w">1040 ·················</span><span·class="p"·data-group-id="8030138402-39">{</span><span·class="p"·data-group-id="8030138402-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="8030138402-40">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·e7e34991e4acd293b315488dc93c0064f2576327a962352f2318adc8f5f2a39c·...·]-39">}</span><span·class="p">,</span><span·class="w">
1041 ·················</span><span·class="p"·data-group-id="3499497748-42">{</span><span·class="p"·data-group-id="3499497748-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="3499497748-43">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·c8d4f19fadf5540352123c51f2215a306e98ada5d687675f028c3f28d90948ba·...·]-42">}</span><span·class="p">,</span><span·class="w">1041 ·················</span><span·class="p"·data-group-id="8030138402-42">{</span><span·class="p"·data-group-id="8030138402-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="8030138402-43">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·343cd66015cea95d5c481511f5384ba8ac06e6aa0b9b0c4705a6dcb89604f7f3·...·]-42">}</span><span·class="p">,</span><span·class="w">
1042 ·················</span><span·class="p"·data-group-id="3499497748-45">{</span><span·class="p"·data-group-id="3499497748-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="3499497748-46">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·e477cf128416afbed7e53b711596b42b6be3ea63b986ba97a32d22f038a80444·...·]-45">}</span><span·class="p">,</span><span·class="w">1042 ·················</span><span·class="p"·data-group-id="8030138402-45">{</span><span·class="p"·data-group-id="8030138402-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="8030138402-46">}</span[·...·truncated·by·diffoscope;·len:·299,·SHA:·bfbb9c6f43cafb7cf4cda0f33bc97a80bb56dae4be2354771937a40c5684b137·...·]-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="3499497748-38">}</span><span·class="p"·data-group-id="3499497748-36">}</span><span·class="p"·data-group-id="3499497748-23">]</span><span·class="p"·data-group-id="3499497748-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="8030138402-38">}</span><span·class="p"·data-group-id="8030138402-36">}</span><span·class="p"·data-group-id="8030138402-23">]</span><span·class="p"·data-group-id="8030138402-22">}</span><span·class="gp·unselectable">
1044 &gt;·</span><span·class="p"·data-group-id="3499497748-48">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3499497748-49">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><spa[·...·truncated·by·diffoscope;·len:·836,·SHA:·ca9f8f42d438204cdc3cfc6e913f2560b67908a40bfb381daec375b0fde67035·...·]-50">)</span><span·class="p">.</span><span·class="w">1044 &gt;·</span><span·class="p"·data-group-id="8030138402-48">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8030138402-49">{</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Bin</span><spa[·...·truncated·by·diffoscope;·len:·836,·SHA:·70f5e114f3454e57bc3be71fbaafe72a5667df962e999bd715df9dbd3307d9d1·...·]-50">)</span><span·class="p">.</span><span·class="w">
1045 </span><span·class="p"·data-group-id="3499497748-53">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="3499497748-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="8030138402-53">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8030138402-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="3499497748-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="8030138402-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="3499497748-55">&gt;&gt;</span><span·class="p"·data-group-id="3499497748-54">}</span><span·class="p"·data-group-id="3499497748-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="8030138402-55">&gt;&gt;</span><span·class="p"·data-group-id="8030138402-54">}</span><span·class="p"·data-group-id="8030138402-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="3499497748-56">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="3499497748-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:·1433,·SHA:·626de4f8deafa21de377cbb67a302aef76180bfa66f85c5eef6ba55d19866711·...·]-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="8030138402-56">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8030138402-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:·1433,·SHA:·833691d218f8c1f62ca2cf19784e7158bb10e1bc524bfb3adb88910e1c51be18·...·]-56">)</span><span·class="p">.</span><span·class="w">
1049 </span><span·class="p"·data-group-id="3499497748-63">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="3499497748-63">&gt;&gt;</span></code></pre>1049 </span><span·class="p"·data-group-id="8030138402-63">&lt;&lt;</span><span·class="s">&quot;FOO&quot;</span><span·class="p"·data-group-id="8030138402-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.2/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="4449215176-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="4449215176-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="6033684824-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="6033684824-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="0148582651-1">(</span><span·class="p"·data-group-id="0148582651-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="0148582651-2">]</span><span·c[·...·truncated·by·diffoscope;·len:·106,·SHA:·97948c5e1e8c5111dade4007027ebf3047543a6355a59b2169c8f298d367c59f·...·]-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="1108790378-1">(</span><span·class="p"·data-group-id="1108790378-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="1108790378-2">]</span><span·c[·...·truncated·by·diffoscope;·len:·106,·SHA:·54db2b08ccc2f1632befcfb145fbe9ed10a5336880264bc6e7c1a1c6002cac16·...·]-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="0148582651-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="0148582651-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="0148582651-4">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·3d6ca344f747be5e02cfb40a9a60ab11a6ebd28557c42b8b976d860b1988df0f·...·]-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="1108790378-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="1108790378-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="1108790378-4">)</span><spa[·...·truncated·by·diffoscope;·len:·37,·SHA:·b88bde40fb56351c25366e8754d67b5c126c96bc3af57e0516cc7c7eb69c0faf·...·]-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="6406073330-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="6406073330-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="6406073330-2">{</span><span·class="ss">bar</span><[·...·truncated·by·diffoscope;·len:·112,·SHA:·f1d300c8eaf3d1af509f79495d963a339acd770a6412f6ac2453f9a265a0560c·...·]-2">}</span><span·class="p">.</span></code></pre><p>If·possible,·the·comment·should·be·moved·before·any·preceding·separator6641 </span><span·class="nf">foo</span><span·class="p"·data-group-id="8772384359-1">(</span><span·class="n">X</span><span·class="p"·data-group-id="8772384359-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-group-id="8772384359-2">{</span><span·class="ss">bar</span><[·...·truncated·by·diffoscope;·len:·112,·SHA:·9f316a19b68cddc774554557c4ff585f1b7721da92e180cbe08e0c4360a0c9bb·...·]-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="4668304334-1">(</span><span·class="p"·data-group-id="4668304334-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="4668304334-2">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·fb2e82bb966ec8ff47f67957c485d2b704ad60af5c81226b1fb7f199a64da83c·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">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="2457633372-1">(</span><span·class="p"·data-group-id="2457633372-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="2457633372-2">]</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·d57f789c75be6a37edff2f477bd6a993bf53f414557d0d81fbd54118aaa9d074·...·]-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="4668304334-3">[</span><span·class="nf">bar</span><span·class="p"·data-group-id="4668304334-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="4668304334-4">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·194,·SHA:·9143fa301fa2f37bb4488bafa40746954203d4d8de4c59d8ecc2b0eca17bfb95·...·]-3">]</span><span·class="p">;</span><span·class="w">6644 ····</span><span·class="p"·data-group-id="2457633372-3">[</span><span·class="nf">bar</span><span·class="p"·data-group-id="2457633372-4">(</span><span·class="n">X</span><span·class="p"·data-group-id="2457633372-4">)</span><span·class="w">·</span><span·class="p">|</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·194,·SHA:·d70d1cf9a591af8ea82723634ef8bb43de116290615dd06a6088431a56896467·...·]-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.2/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="1525144474-1">(</span><span·class="s">&quot;syntax_tools/include/merl.hrl&quot;</span><span·class="p"·data-group-id="1525144474-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="8672669803-1">(</span><span·class="s">&quot;syntax_tools/include/merl.hrl&quot;</span><span·class="p"·data-group-id="8672669803-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="1276535887-1">(</span><span·class="s">&quot;{foo,·42}&quot;</span><span·class="p"·data-group-id="1276535887-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="6168164786-1">(</span><span·class="s">&quot;{foo,·42}&quot;</span><span·class="p"·data-group-id="6168164786-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="1276535887-2">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="1276535887-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="6168164786-2">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="6168164786-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="1276535887-3">(</span><span·class="s">&quot;foo:bar(_@Number)&quot;</span><span·class="p"·data-group-id="1276535887-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:·7d84acb4cca6682cec9ee2368e8d5d0b366428c2bcd8c2daad25662cacd178ee·...·]-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="6168164786-3">(</span><span·class="s">&quot;foo:bar(_@Number)&quot;</span><span·class="p"·data-group-id="6168164786-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:·7cef937fc1933de4a6ba7b3f34ed5cd4ede2e556a01ce929e7811be1880211b0·...·]-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="4986090966-1">(</span><span·class="s">&quot;{foo,·_@Foo}&quot;</span><span·class="p"·data-group-id="4986090966-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:·9c79786f0cf00b1fe6aa5bbd1982e2fb3fa543cecd3ec623834f18b3e0dcce7a·...·]-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="3774649004-1">(</span><span·class="s">&quot;{foo,·_@Foo}&quot;</span><span·class="p"·data-group-id="3774649004-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:·4d0c8f247c108f72b574d208dfb69563d1f64b0e42e32ebcc41de29ad0353f0c·...·]-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="4986090966-3">(</span><span·class="s">&quot;{bar,·_@Bar}&quot;</span><span·class="p"·data-group-id="4986090966-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:·381a0d9400bccb568446df4adac70062ba76acf447fa7b2752e74d6d3fd26363·...·]-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="3774649004-3">(</span><span·class="s">&quot;{bar,·_@Bar}&quot;</span><span·class="p"·data-group-id="3774649004-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:·11bafa56b3b1d40f01f497c33654c85270955289c2fc78a7c248228976a6ec7b·...·]-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="4986090966-6">(</span><span·class="p"·data-group-id="4986090966-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="3774649004-6">(</span><span·class="p"·data-group-id="3774649004-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="8324428720-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="8324428720-2">[</span><span·class="p"·data-group-id="8324428720-3">{</span><span·class="ss">bar</span[·...·truncated·by·diffoscope;·len:·452,·SHA:·c7878b02404ddce7a175ef5ec7bdb46e079c491bc01af985e9388c233c20dcf5·...·]0-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="4836460370-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="4836460370-2">[</span><span·class="p"·data-group-id="4836460370-3">{</span><span·class="ss">bar</span[·...·truncated·by·diffoscope;·len:·452,·SHA:·db2dec4007e6472ded4e0c08172da0c457f7b452feb53149ef6fc1201f646874·...·]0-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="0848823213-1">(</span><span·class="p"·data-group-id="0848823213-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="9138816309-1">(</span><span·class="p"·data-group-id="9138816309-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="0848823213-2">]</span><span·class="p"·data-group-id="0848823213-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="9138816309-2">]</span><span·class="p"·data-group-id="9138816309-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="9166880103-1">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="9166880103-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:·12dbc20a67867c0ce81c66c0f965ae8c798bb49c3606b58f34b06d58e18e0027·...·]-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="7623907412-1">(</span><span·class="s">&quot;{foo,·_@Number}&quot;</span><span·class="p"·data-group-id="7623907412-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:·d07f5858c7232f102ec7eeafa07f554498321e7ef2a636a42ad8386592082627·...·]-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="4538940951-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="4538940951-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="1414352635-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="1414352635-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="4538940951-2">(</span><span·class="s">&quot;{foo,·_@Bar@}&quot;</span><span·class="p"·data-group-id="4538940951-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="1414352635-2">(</span><span·class="s">&quot;{foo,·_@Bar@}&quot;</span><span·class="p"·data-group-id="1414352635-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="3014032639-1">(</span><span·class="n">Bar</span><span·class="p"·data-group-id="3014032639-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="5188767760-1">(</span><span·class="n">Bar</span><span·class="p"·data-group-id="5188767760-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="3014032639-2">(</span><span·class="s">&quot;{foo,·_@TmpBar}&quot;</span><span·class="p"·data-group-id="3014032639-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="5188767760-2">(</span><span·class="s">&quot;{foo,·_@TmpBar}&quot;</span><span·class="p"·data-group-id="5188767760-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="9546103918-1">(</span><span·class="s">&quot;-export([f/90919]).&quot;</span><span·class="p"·data-group-id="9546103918-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="5511853232-1">(</span><span·class="s">&quot;-export([f/90919]).&quot;</span><span·class="p"·data-group-id="5511853232-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="9546103918-2">(</span><span·class="n">Q1</span><span·class="p"·data-group-id="9546103918-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="5511853232-2">(</span><span·class="n">Q1</span><span·class="p"·data-group-id="5511853232-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="9546103918-3">(</span><span·class="s">&quot;-export([f/909299]).&quot;</span><span·class="p"·data-group-id="9546103918-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="5511853232-3">(</span><span·class="s">&quot;-export([f/909299]).&quot;</span><span·class="p"·data-group-id="5511853232-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="5475238110-1">(</span><span·class="s">&quot;f(_@Arg)&quot;</span><span·class="p"·data-group-id="5475238110-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="7355286456-1">(</span><span·class="s">&quot;f(_@Arg)&quot;</span><span·class="p"·data-group-id="7355286456-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="2989848595-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="3435465962-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="7075875896-1">(</span><span·class="s">&quot;-file(\&quot;&#39;@File\&quot;,·9090).&quot;</span><span·class="p"·data-group-id="7075875896-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:·d8f6428be291f084e749b1e7440b5688d351673137229aad23ec3cf644d0f0de·...·]-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="1430206672-1">(</span><span·class="s">&quot;-file(\&quot;&#39;@File\&quot;,·9090).&quot;</span><span·class="p"·data-group-id="1430206672-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:·c9f63a24fcdbbb622e3064041830a56ade8b2605ab211569da4bec929f029f2a·...·]-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="2928489008-1">(</span><span·class="s">&quot;{_@@Elements}&quot;</span><span·class="p"·data-group-id="2928489008-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:·1026c3eaaf6c3e63984d06a3dd291f0391de912af333e4be05a2f573888a3912·...·]-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="1251620930-1">(</span><span·class="s">&quot;{_@@Elements}&quot;</span><span·class="p"·data-group-id="1251620930-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:·18aa120bd739dff877a7187ea15dcfde1af7d490cdf34338f8a35235177318c0·...·]-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="8231850727-1">(</span><span·class="s">&quot;{a,·b,·_@@Elements}&quot;</span><span·class="p"·data-group-id="8231850727-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="8231850727-2">(</span><span·class="p"·data-group-id="8231850727-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="8231850727-3">}</span><span·class="p"·data-group-id="8231850727-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="5853036062-1">(</span><span·class="s">&quot;{_@@Elements,·c,·d}&quot;</span><span·class="p"·data-group-id="5853036062-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="5853036062-2">(</span><span·class="p"·data-group-id="5853036062-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="5853036062-3">}</span><span·class="p"·data-group-id="5853036062-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="5067165944-1">(</span><span·class="s">&quot;{_@First,·_@@Rest}&quot;</span><span·[·...·truncated·by·diffoscope;·len:·1421,·SHA:·788107efca896e237d0a0e3a740adb3a917421d587f57d127e12951956646498·...·]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="9778008165-1">(</span><span·class="s">&quot;{a,·b,·_@@Elements}&quot;</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·1720,·SHA:·cce2a1b9c76ed071fd46d9955a2524db2ab1db290a6428ccbed0affe260e47d4·...·]
 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="2524625960-1">(</span><span·class="s">&quot;{_@First,·_@@Rest}&quot;</span><span·class="p"·data-group-id="2524625960-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="2524625960-2">(</span><span·class="p"·data-group-id="2524625960-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="2524625960-3">}</span><span·class="p"·data-group-id="2524625960-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="9269902311-1">(</span><span·class="s">&quot;{_@@_,·_@Last}&quot;</span><span·class="p"·data-group-id="9269902311-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="9269902311-2">(</span><span·class="p"·data-group-id="9269902311-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="9269902311-3">}</span><span·class="p"·data-group-id="9269902311-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="3003973051-1">(</span><span·class="s">&quot;-export([_@@Name]).&quot;</span><span·class="p"·data-group-id="3003973051-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="5511944764-1">(</span><span·class="s">&quot;-export([_@@Name]).&quot;</span><span·class="p"·data-group-id="5511944764-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="2906005007-1">(</span><span·class="s">&quot;-export([&#39;@_@Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="2906005007-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="3027811218-1">(</span><span·class="s">&quot;-export([&#39;@_@Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="3027811218-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="5328732576-1">(</span><span·class="s">&quot;-export([&#39;@__Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="5328732576-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="8781288529-1">(</span><span·class="s">&quot;-export([&#39;@__Name&#39;/0]).&quot;</span><span·class="p"·data-group-id="8781288529-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="6242153884-1">(</span><span·class="p"·data-group-id="6242153884-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="6969635418-1">(</span><span·class="p"·data-group-id="6969635418-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="6923052279-1">(</span><span·class="nc">merl</span><span·class="p">:</span><span·class="nf">quote</span><span·class="p"·data-group-id="6923052279-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:·64,·SHA:·6f515ccec2f089089a984c722ea555c5095da61f191c1f2433ace79cd7d5a212·...·]-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="6277015490-1">(</span><span·class="nc">merl</span><span·class="p">:</span><span·class="nf">quote</span><span·class="p"·data-group-id="6277015490-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:·64,·SHA:·fee7b4224f2530bb7d5f53587e378b24f195c4d6aa098041fdce47812163a5de·...·]-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 ····+
626 B
./usr/share/doc/erlang-doc/html/lib/tftp-1.2.2/doc/html/.build
    
Offset 14, 15 lines modifiedOffset 14, 15 lines modified
14 dist/lato-latin-300-normal-YUMVEFOL.woff214 dist/lato-latin-300-normal-YUMVEFOL.woff2
15 dist/lato-latin-400-normal-W7754I4D.woff215 dist/lato-latin-400-normal-W7754I4D.woff2
16 dist/lato-latin-700-normal-2XVSBPG4.woff216 dist/lato-latin-700-normal-2XVSBPG4.woff2
17 dist/lato-latin-ext-300-normal-VPGGJKJL.woff217 dist/lato-latin-ext-300-normal-VPGGJKJL.woff2
18 dist/lato-latin-ext-400-normal-N27NCBWW.woff218 dist/lato-latin-ext-400-normal-N27NCBWW.woff2
19 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff219 dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2
20 dist/remixicon-NKANDIL5.woff220 dist/remixicon-NKANDIL5.woff2
21 dist/search_data-BA5DB564.js21 dist/search_data-7B342769.js
22 dist/sidebar_items-3CBBBF05.js22 dist/sidebar_items-3CBBBF05.js
23 getting_started.html23 getting_started.html
24 index.html24 index.html
25 introduction.html25 introduction.html
26 notes.html26 notes.html
27 search.html27 search.html
28 tftp.html28 tftp.html
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="0446906772-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="0446906772-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·483,·SHA:·04f58391b621eb4e2032de566c011fe00f056bcacf195bac66c9c80eadb89d4d·...·]-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="8735003917-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="8735003917-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cla[·...·truncated·by·diffoscope;·len:·483,·SHA:·fd2eab54434db1fcc4c45de3da67f244a100ede089e6900ccf69e9a88b1e60a2·...·]-2">)</span><span·class="p">.</span><span·class="w">
130 ······</span><span·class="p"·data-group-id="0446906772-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="0446906772-5">}</span>[·...·truncated·by·diffoscope;·len:·896,·SHA:·86d6036af8a6cdb67c4f7950cdd7a8b18b04a3f702c24e6e94fc35891622e3dc·...·]-1">)</span><span·class="p">.</span><span·class="w">130 ······</span><span·class="p"·data-group-id="8735003917-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="8735003917-5">}</span>[·...·truncated·by·diffoscope;·len:·896,·SHA:·90e52cde33b703ff1f3965d577c08a2826ec1aa50c0b47aca2a03af1202e0468·...·]-1">)</span><span·class="p">.</span><span·class="w">
131 ······</span><span·class="p"·data-group-id="7621961772-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="7621961772-5">&lt;&lt;</span><span·class="s">&quot;Erlang/OTP·21\n&quot;</span><span·class="p"·data-group-id="7621961772-5">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·08e3517bffdd48c9a4d8e8068d6c1cfd9c47a400eeee6262b8a9c345615bf69a·...·]-4">}</span></code></pre>131 ······</span><span·class="p"·data-group-id="1178834019-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1178834019-5">&lt;&lt;</span><span·class="s">&quot;Erlang/OTP·21\n&quot;</span><span·class="p"·data-group-id="1178834019-5">&gt;&gt;</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·e49e8071b9d5746a44f53599b8a8a4aedc87b1d6b743d4769ad711ad5e31e383·...·]-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">
626 B
./usr/share/doc/erlang-doc/html/lib/tftp-1.2.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-BA5DB564.js"></script>124 <script·src="dist/search_data-7B342769.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>
87.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:·28824·bytes,·number·of·entries:·141 Zip·file·size:·28827·bytes,·number·of·entries:·14
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:57·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:52·mimetype
3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Mar-18·07:57·OEBPS/title.xhtml3 ?rw-r--r--··6.1·unx······712·bx·defN·25-Mar-18·08:52·OEBPS/title.xhtml
4 ?rw-r--r--··6.1·unx·····5937·bx·defN·25-Mar-18·07:57·OEBPS/tftp_logger.xhtml4 ?rw-r--r--··6.1·unx·····5937·bx·defN·25-Mar-18·08:52·OEBPS/tftp_logger.xhtml
5 ?rw-r--r--··6.1·unx····38407·bx·defN·25-Mar-18·07:57·OEBPS/tftp.xhtml5 ?rw-r--r--··6.1·unx····38407·bx·defN·25-Mar-18·08:52·OEBPS/tftp.xhtml
6 ?rw-r--r--··6.1·unx·····8733·bx·defN·25-Mar-18·07:57·OEBPS/notes.xhtml6 ?rw-r--r--··6.1·unx·····8733·bx·defN·25-Mar-18·08:52·OEBPS/notes.xhtml
7 ?rw-r--r--··6.1·unx·····1184·bx·defN·25-Mar-18·07:57·OEBPS/nav.xhtml7 ?rw-r--r--··6.1·unx·····1184·bx·defN·25-Mar-18·08:52·OEBPS/nav.xhtml
8 ?rw-r--r--··6.1·unx·····1908·bx·defN·25-Mar-18·07:57·OEBPS/introduction.xhtml8 ?rw-r--r--··6.1·unx·····1908·bx·defN·25-Mar-18·08:52·OEBPS/introduction.xhtml
9 ?rw-r--r--··6.1·unx·····3736·bx·defN·25-Mar-18·07:57·OEBPS/getting_started.xhtml9 ?rw-r--r--··6.1·unx·····3736·bx·defN·25-Mar-18·08:52·OEBPS/getting_started.xhtml
10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-erlang-ESPT6BQV.css10 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:52·OEBPS/dist/epub-erlang-ESPT6BQV.css
11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:57·OEBPS/dist/epub-LSJCIYTM.js11 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:52·OEBPS/dist/epub-LSJCIYTM.js
12 ?rw-r--r--··6.1·unx·····1787·bx·defN·25-Mar-18·07:57·OEBPS/content.opf12 ?rw-r--r--··6.1·unx·····1787·bx·defN·25-Mar-18·08:52·OEBPS/content.opf
13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:57·OEBPS/assets/logo.png13 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:52·OEBPS/assets/logo.png
14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:57·META-INF/container.xml14 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:52·META-INF/container.xml
15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:57·META-INF/com.apple.ibooks.display-options.xml15 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:52·META-INF/com.apple.ibooks.display-options.xml
16 14·files,·83736·bytes·uncompressed,·26382·bytes·compressed:··68.5%16 14·files,·83736·bytes·uncompressed,·26385·bytes·compressed:··68.5%
74.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,·Mar·18·2025·07:57: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,·Mar·18·2025·08:52:04,·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="6622351976-1">(</samp><samp·class="ss">revision</samp><samp·class="w">·</samp><samp·class="mi">2</samp><samp·class="p"·data-group-id="6622351976-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="0540152678-1">(</samp><samp·class="ss">revision</samp><samp·class="w">·</samp><samp·class="mi">2</samp><samp·class="p"·data-group-id="0540152678-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
    
Offset 19, 13 lines modifiedOffset 19, 13 lines modified
  
19 ····<h1·id="content">19 ····<h1·id="content">
20 Examples20 Examples
21 ····</h1>21 ····</h1>
22 <p>The·<a·href="tftp.xhtml#start/1">start/1</a>·function·starts·a·daemon·process·listening·for·UDP22 <p>The·<a·href="tftp.xhtml#start/1">start/1</a>·function·starts·a·daemon·process·listening·for·UDP
23 packets·on·a·port.·When·it·receives·a·request·for·read·or·write,·it·spawns·a23 packets·on·a·port.·When·it·receives·a·request·for·read·or·write,·it·spawns·a
24 temporary·server·process·handling·the·transfer.</p><p>This·is·a·simple·example·of·starting·the·TFTP·server·and·reading·the·content·of24 temporary·server·process·handling·the·transfer.</p><p>This·is·a·simple·example·of·starting·the·TFTP·server·and·reading·the·content·of
25 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="3883461604-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="3883461604-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">tftp</span><span·class="p">:</span><span·class="nf">start</span><span·class="p"·data-group-id="3883461604-2">(</span><span·class="p"·data-group-id="3883461604-3">[</span><span·class="p"·data-group-id="3883461604-4">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">19999</span><span·class="p"·data-group-id="3883461604-4">}</span><span·class="p"·data-group-id="3883461604-3">]</span><span·class="p"·data-group-id="3883461604-2">)</span><span·class="p">.</span><span·class="w"> 
26 ······</span><span·class="p"·data-group-id="3883461604-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·cla[·...·truncated·by·diffoscope;·len:·942,·SHA:·cf446b4b2799e83aba03658876db7f29b0c4db55a3b2db0f0861332ee46773e1·...·]">)</span><span·class="p">.</span><span·class="w">25 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><co[·...·truncated·by·diffoscope;·len:·917,·SHA:·d4864db2451384d3560be32389c69076430b963e65299f015fc2783a40ce1c67·...·]">)</span><span·class="p">.</span><span·class="w">
 26 ······</span><span·class="p"·data-group-id="0399839655-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="0399839655-5">}</span></code></pre><p><em>Step·3.</em>·Start·the·TFTP·client·(in·another·shell):</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">tftp</span><span·class="p">:</span><span·class="nf">read_file</span><span·class="p"·data-group-id="1208889497-1">(</span><span·class="s">&quot;file.txt&quot;</span><span·class="p">,</span><span·class="w">·</span><span·class="ss">binary</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="1208889497-2">[</span><span·class="p"·data-group-id="1208889497-3">{</span><span·class="ss">port</span><span·class="p">,</span><span·class="w">·</span><span·class="mi">19999</span><span·class="p"·data-group-id="1208889497-3">}</span><span·class="p"·data-group-id="1208889497-2">]</span><span·class="p"·data-group-id="1208889497-1">)</span><span·class="p">.</span><span·class="w">
27 ······</span><span·class="p"·data-group-id="1811116218-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1811116218-5">&lt;&lt;</span><span·class="s">&quot;Erlang/OTP·21\n&quot;</span><span·class="p"·data-group-id="1811116218-5">&gt;&gt;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·3134e708a18ec56bfacd141b25f97ce10b554497b2af80c42718aef711e1471d·...·]-4">}</span></code></pre>27 ······</span><span·class="p"·data-group-id="1208889497-4">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1208889497-5">&lt;&lt;</span><span·class="s">&quot;Erlang/OTP·21\n&quot;</span><span·class="p"·data-group-id="1208889497-5">&gt;&gt;</span><span·class="p"[·...·truncated·by·diffoscope;·len:·26,·SHA:·96dc9848ed88c4904c430f4c8dfd8eeba0dc13258405eb6b9739ef696f9bccc1·...·]-4">}</span></code></pre>
  
28 ··</body>28 ··</body>
29 </html>29 </html>
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="6431407611-1">(</span><span·class="ss">revision</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="6431407611-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="4324309440-1">(</span><span·class="ss">revision</span><span·class="w">·</span><span·class="mi">2</span><span·class="p"·data-group-id="4324309440-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="4072894543-1">(</span><span·class="p"·data-group-id="4072894543-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="4072894543-2">]</span><span·class="p"·data-group-id="4072894543-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="2864572960-1">(</span><span·class="p"·data-group-id="2864572960-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="2864572960-2">]</span><span·class="p"·data-group-id="2864572960-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="5510645598-1">(</span><span·class="p"·data-group-id="5510645598-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="5510645598-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:·09b16029612a694daf1e3d6298b69892c3bd79610128eb9dbd171e6562e090da·...·]-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="4935620874-1">(</span><span·class="p"·data-group-id="4935620874-2">[</span><span·class="ss">calls</span><span·class="p"·data-group-id="4935620874-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:·d3aa9c9af2b0dbf9825e1df1a1624b50ca4a4863ba6ad4f3b9ab0efc6da04dd2·...·]-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="8395839020-1">(</span><span·class="p"·data-group-id="8395839020-2">[</span><span·class="ss">html</span><span·class="p"·data-group-id="8395839020-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8395839020-3">[</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·4458f642b5f9a812c1c4e34a84e6bcc35248182ea02b4b04b078ae087fbf9798·...·]-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="3336931734-1">(</span><span·class="p"·data-group-id="3336931734-2">[</span><span·class="ss">html</span><span·class="p"·data-group-id="3336931734-2">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3336931734-3">[</span[·...·truncated·by·diffoscope;·len:·95,·SHA:·6fb3dcdc1463e2c0c316e7e344c14a95293ccdda6883493c6970735dbb2b8c4b·...·]-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="7511896620-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="7511896620-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="5150645520-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="5150645520-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="7511896620-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="7511896620-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="5150645520-2">(</span><span·class="ss">gen_server</span><span·class="p"·data-group-id="5150645520-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="7511896620-3">(</span><span·class="p"·data-group-id="7511896620-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</sp[·...·truncated·by·diffoscope;·len:·95,·SHA:·c9e8a26035daa12f8ede1fa15190ddeed452d59b53344bc0b026886079743f7a·...·]20-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="5150645520-3">(</span><span·class="p"·data-group-id="5150645520-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</sp[·...·truncated·by·diffoscope;·len:·95,·SHA:·8931edab7b5c1eb62935ecc30153f6cb4092674eebd408ec4dc29bde1b80c29f·...·]20-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="7511896620-5">(</span><span·class="p"·data-group-id="7511896620-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><s[·...·truncated·by·diffoscope;·len:·90,·SHA:·5478a3b0f1e652971e7e116245b014ae08278e71c5c6d944fa5abc24192a750d·...·]20-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="5150645520-5">(</span><span·class="p"·data-group-id="5150645520-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><s[·...·truncated·by·diffoscope;·len:·90,·SHA:·977b27bca329e0240debb47f5407eeb9d13271e87fd8c88dca4b4b9982967e5b·...·]20-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="7511896620-7">(</span><span·class="p"·data-group-id="7511896620-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</s[·...·truncated·by·diffoscope;·len:·202,·SHA:·68848c4e03ee9e8a472e86572eb4d34462f5e1ffe32a126523791a64b83c880a·...·]20-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="5150645520-7">(</span><span·class="p"·data-group-id="5150645520-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</s[·...·truncated·by·diffoscope;·len:·202,·SHA:·754e7e1c632bb1da6468c4d583b250ddba5f1afecafd1698fe65127e3a01594a·...·]20-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="7511896620-9">(</span><span·class="p"·data-group-id="7511896620-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="5150645520-9">(</span><span·class="p"·data-group-id="5150645520-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="7511896620-10">(</span><span·class="p"·data-group-id="7511896620-11">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="7511896620-11">}</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·389,·SHA:·418bd593e1d3243edf7e684c9ba07dd17887fc4585f1e9d2bc44b3deaa19b1dd·...·]20-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="5150645520-10">(</span><span·class="p"·data-group-id="5150645520-11">{</span><span·class="ss">local</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="5150645520-11">}</span><span·class="p">,</span><span·class="w">·[·...·truncated·by·diffoscope;·len:·389,·SHA:·bf27503f8020caa3cc22f66f727c8b64a5c4bf09be4f274edf7f46c600595c79·...·]20-10">)</span><span·class="p">.</span><span·class="w">
  
157 </span><span·class="nf">stop</span><span·class="p"·data-group-id="7511896620-14">(</span><span·class="p"·data-group-id="7511896620-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="5150645520-14">(</span><span·class="p"·data-group-id="5150645520-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="7511896620-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="7511896620-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="5150645520-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="5150645520-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="7511896620-16">(</span><span·class="p"·data-group-id="7511896620-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="5150645520-16">(</span><span·class="p"·data-group-id="5150645520-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="7511896620-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="7511896620-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="5150645520-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="5150645520-17">)</span><span·class="p">.</span><span·class="w">
  
162 </span><span·class="nf">free</span><span·class="p"·data-group-id="7511896620-18">(</span><span·class="n">Channel</span><span·class="p"·data-group-id="7511896620-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="5150645520-18">(</span><span·class="n">Channel</span><span·class="p"·data-group-id="5150645520-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="7511896620-19">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7511896620-20">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·75,·SHA:·39de818779fa91ad023f0c26761146e86e1cf9aa223c0e61ac7cce747f4607d7·...·]20-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="5150645520-19">(</span><span·class="ss">channel</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5150645520-20">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·da[·...·truncated·by·diffoscope;·len:·75,·SHA:·2a3b177c700430c6b60646dae16dc313b89d0b1a605faeab61a4bd024c79b5ef·...·]20-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="7511896620-21">(</span><span·class="p">_</span><span·class="n">Arg</span><span·class="p"·data-group-id="7511896620-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="5150645520-21">(</span><span·class="p">_</span><span·class="n">Arg</span><span·class="p"·data-group-id="5150645520-21">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
166 ····</span><span·class="p"·data-group-id="7511896620-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="nf">channels</span><span·class="p"·data-group-id="7511896620-23">(</span><span·class="p"·data-group-id="7511896620-23">)</span><span·class="p"·data-group-id="7511896620-22">}</span><span·class="p">.</span><span·class="w">166 ····</span><span·class="p"·data-group-id="5150645520-22">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="nf">channels</span><span·class="p"·data-group-id="5150645520-23">(</span><span·class="p"·data-group-id="5150645520-23">)</span><span·class="p"·data-group-id="5150645520-22">}</span><span·class="p">.</span><span·class="w">
  
167 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="7511896620-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-grou[·...·truncated·by·diffoscope;·len:·14,·SHA:·5e13980566b2d1e657705fede6547c25fbead7ea51cbf8058a860c2badbb8256·...·]20-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="5150645520-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-grou[·...·truncated·by·diffoscope;·len:·14,·SHA:·22bae865671ddcfb882913f1dc1707c5e840e31e9326c0b22b024f5505f76961·...·]20-24">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
168 ····</span><span·class="p"·data-group-id="7511896620-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="7511896620-25">}</span><span·class="p">;</span><span·class="w">168 ····</span><span·class="p"·data-group-id="5150645520-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="5150645520-25">}</span><span·class="p">;</span><span·class="w">
  
169 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="7511896620-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-gro[·...·truncated·by·diffoscope;·len:·15,·SHA:·2573119d14f67d5f28ffb9f1f662ffc08b961c3c998402216ff672148e445223·...·]20-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="5150645520-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-gro[·...·truncated·by·diffoscope;·len:·15,·SHA:·70bad1399def6c54f714818c8fff21b2b559880d4d1bea81a73d1d14b6da67cd·...·]20-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
170 ····</span><span·class="p"·data-group-id="7511896620-27">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="n">Channels2</span><span·class="p"·data-group-id="7511896620-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">alloc</sp[·...·truncated·by·diffoscope;·len:·127,·SHA:·68591f4685b79ca5ebac4cb7db33af8a6aa9968794fbe90310237b89b6e775b3·...·]20-28">)</span><span·class="p">,</span><span·class="w">170 ····</span><span·class="p"·data-group-id="5150645520-27">{</span><span·class="n">Ch</span><span·class="p">,</span><span·class="n">Channels2</span><span·class="p"·data-group-id="5150645520-27">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nf">alloc</sp[·...·truncated·by·diffoscope;·len:·127,·SHA:·8faf742435814742c43d8b0c512fe6bb7075a1dcfbc8d899ef0e5a68d1ff2d0a·...·]20-28">)</span><span·class="p">,</span><span·class="w">
171 ····</span><span·class="p"·data-group-id="7511896620-29">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="p"·data-group-id="7511896620-30">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch</span><span·class="p"·data-group-id="7511896620-30">}</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·1c444a88e613c175f662ff32dbb0685afc8fc4f8d4b1966f6c16adc80d8e981c·...·]20-29">}</span><span·class="p">;</span><span·class="w">171 ····</span><span·class="p"·data-group-id="5150645520-29">{</span><span·class="ss">reply</span><span·class="p">,</span><span·class="p"·data-group-id="5150645520-30">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch</span><span·class="p"·data-group-id="5150645520-30">}</sp[·...·truncated·by·diffoscope;·len:·98,·SHA:·4a8e8ca987501a6898e72712b0fab6ad8b360e5d291a413e1b4ec296e885da9d·...·]20-29">}</span><span·class="p">;</span><span·class="w">
  
172 </span><span·class="nf">handle_call</span><span·class="p"·data-group-id="7511896620-31">(</span><span·class="p"·data-group-id="7511896620-32">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·data-group-id="7511896620-32">}</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·176,·SHA:·61a4a853d5a00fd0d8ba76b4ce89b901527bbfcb9a4cf8a8dd049043fd76f00a·...·]20-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="5150645520-31">(</span><span·class="p"·data-group-id="5150645520-32">{</span><span·class="ss">free</span><span·class="p">,</span><span·class="n">Channel</span><span·class="p"·data-group-id="5150645520-32">}</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·176,·SHA:·e6a228d0708e71854591fc664b72cd11a8320bd07db0f1a06a7663dfed113deb·...·]20-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="7511896620-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="7511896620-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="5150645520-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="5150645520-33">)</span><span·class="p">,</span><span·class="w">
174 ····</span><span·class="p"·data-group-id="7511896620-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="7511896620-34">}</span><span·class="p">.</span><span·class="w">174 ····</span><span·class="p"·data-group-id="5150645520-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="5150645520-34">}</span><span·class="p">.</span><span·class="w">
  
175 </span><span·class="nf">terminate</span><span·class="p"·data-group-id="7511896620-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="7511896620-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="5150645520-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="5150645520-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="7511896620-36">(</span><span·class="p"·data-group-id="7511896620-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="5150645520-36">(</span><span·class="p"·data-group-id="5150645520-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
179 ····</span><span·class="p"·data-group-id="7511896620-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="7511896620-37">]</span><span·class="p">.</span><span·class="w">179 ····</span><span·class="p"·data-group-id="5150645520-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="5150645520-37">]</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="7511896620-38">(</span><span·class="p"·data-group-id="7511896620-39">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="7511896620-39">]</span><span·class="p"·data-group-id="7511896620-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="5150645520-38">(</span><span·class="p"·data-group-id="5150645520-39">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="5150645520-39">]</span><span·class="p"·data-group-id="5150645520-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
181 ····</span><span·class="p"·data-group-id="7511896620-40">{</span><span·class="n">Channel</span><span·class="p">,</span><span·class="n">Channels</span><span·class="p"·data-group-id="7511896620-40">}</span><span·class="p">;</span><span·class="w">181 ····</span><span·class="p"·data-group-id="5150645520-40">{</span><span·class="n">Channel</span><span·class="p">,</span><span·class="n">Channels</span><span·class="p"·data-group-id="5150645520-40">}</span><span·class="p">;</span><span·class="w">
182 </span><span·class="nf">alloc</span><span·class="p"·data-group-id="7511896620-41">(</span><span·class="p"·data-group-id="7511896620-42">[</span><span·class="p"·data-group-id="7511896620-42">]</span><span·class="p"·data-group-id="7511896620-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="5150645520-41">(</span><span·class="p"·data-group-id="5150645520-42">[</span><span·class="p"·data-group-id="5150645520-42">]</span><span·class="p"·data-group-id="5150645520-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="7511896620-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="7511896620-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="5150645520-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="5150645520-43">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
185 ····</span><span·class="p"·data-group-id="7511896620-44">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="7511896620-44">]</span><span·class="p">.</span></code></pre><p>The·test·case·is·implemented·as·follows:</p><pre><code[·...·truncated·by·diffoscope;·len:·213,·SHA:·23cdf0c4917f730541459f485038e4fcac06b1631beb1b9729635ffce2bd51f7·...·]2-1">)</span><span·class="p">.</span><span·class="w">185 ····</span><span·class="p"·data-group-id="5150645520-44">[</span><span·class="n">Channel</span><span·class="p">|</span><span·class="n">Channels</span><span·class="p"·data-group-id="5150645520-44">]</span><span·class="p">.</span></code></pre><p>The·test·case·is·implemented·as·follows:</p><pre><code[·...·truncated·by·diffoscope;·len:·213,·SHA:·843a683ce3dab53541ec1454fd49f59d549618ab0816adeb00fb3b1d4ffe9595·...·]2-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="1588944112-2">(</span><span·class="p"·data-group-id="1588944112-3">[</span><span·class="ss">s</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="1588944112-3">]</span><span·class="p"·data-group-id="1588944112-2">)</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="9220162802-2">(</span><span·class="p"·data-group-id="9220162802-3">[</span><span·class="ss">s</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9220162802-3">]</span><span·class="p"·data-group-id="9220162802-2">)</span><span·class="p">.</span><span·class="w">
  
187 </span><span·class="nf">s</span><span·class="p"·data-group-id="1588944112-4">(</span><span·class="p"·data-group-id="1588944112-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="9220162802-4">(</span><span·class="p"·data-group-id="9220162802-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
188 ····</span><span·class="p"·data-group-id="1588944112-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Pid</span><span·class="p"·data-group-id="1588944112-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·149,·SHA:·662f5d13a755abb18aa026a5bfd5babebaebdd80398a05632d47c443bb6a462d·...·]2-6">)</span><span·class="p">,</span><span·class="w">188 ····</span><span·class="p"·data-group-id="9220162802-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Pid</span><span·class="p"·data-group-id="9220162802-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·149,·SHA:·b32329a6bc298388c2975aeea63f8ff8167810eb4baeb10ac744fe6757ebb33a·...·]2-6">)</span><span·class="p">,</span><span·class="w">
189 ····</span><span·class="p"·data-group-id="1588944112-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch1</span><span·class="p"·data-group-id="1588944112-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·144,·SHA:·4e4732b64b9a84ec328c9876b892af741d24ea124e194ce87ecdc3c98bce6dd1·...·]2-8">)</span><span·class="p">,</span><span·class="w">189 ····</span><span·class="p"·data-group-id="9220162802-7">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">Ch1</span><span·class="p"·data-group-id="9220162802-7">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class="nc">channel</span><s[·...·truncated·by·diffoscope;·len:·144,·SHA:·24ce71d59fcda45b42748221f2f4ef60003a806b1ec5f73807cff21d03f4f803·...·]2-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="1588944112-9">(</span><span·class="n">Ch1</span><span·class="p"·data-group-id="1588944112-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="9220162802-9">(</span><span·class="n">Ch1</span><span·class="p"·data-group-id="9220162802-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="1588944112-10">(</span><span·class="p"·data-group-id="1588944112-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="9220162802-10">(</span><span·class="p"·data-group-id="9220162802-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="7793030161-1">(</span><span·class="p"·data-group-id="7793030161-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="0918016853-1">(</span><span·class="p"·data-group-id="0918016853-1">)</span><span·class="p">.</span><span·class="w">
199 </span><span·class="p"·data-group-id="7793030161-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="7793030161-2">}</span></code></pre><p>To·include·other·nodes·in·the·coverage·analysis,·use199 </span><span·class="p"·data-group-id="0918016853-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="0918016853-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="1024966080-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="1024966080-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="9002814307-1">(</span><span·class="ss">channel</span><span·class="p"·data-group-id="9002814307-1">)</span><span·class="p">.</span><span·class="w">
207 </span><span·class="p"·data-group-id="1024966080-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="1024966080-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="9002814307-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">channel</span><span·class="p"·data-group-id="9002814307-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="9266100029-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="9266100029-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="1158606116-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="1158606116-1">)</span><span·class="p">.</span><span·class="w">
242 </span><span·class="p"·data-group-id="9266100029-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9266100029-3">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="p"·data-group-id="9266100029-4">{</span><span·class="mi">14</sp[·...·truncated·by·diffoscope;·len:·199,·SHA:·8ea65b4a2734433b9c0a60d246bc3e24519eb78958e8901ca094ec8ccda90a6f·...·]-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="1158606116-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="1158606116-3">{</span><span·class="ss">channel</span><span·class="p">,</span><span·class="p"·data-group-id="1158606116-4">{</span><span·class="mi">14</sp[·...·truncated·by·diffoscope;·len:·199,·SHA:·01b1d002704b2db64212b4e468f71886880b7ca39478561acbd06809b9397ad2·...·]-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="0175713594-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="0175713594-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="6545550406-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="6545550406-1">)</span><span·class="p">.</span><span·class="w">
246 </span><span·class="p"·data-group-id="0175713594-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0175713594-3">[</span><span·class="p"·data-group-id="0175713594-4">{</span><span·class="p"·data-group-id="0175713594-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·411,·SHA:·8c756f06f55ed511733f6e90dcf823912cc799528e48a3222cffaed1a889be12·...·]-4">}</span><span·class="p">,</span><span·class="w">246 </span><span·class="p"·data-group-id="6545550406-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6545550406-3">[</span><span·class="p"·data-group-id="6545550406-4">{</span><span·class="p"·data-group-id="6545550406-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·411,·SHA:·25e6dab1490f90de866fc85e1547836717e32e9334c5840ab2a2e5c848c2ef26·...·]-4">}</span><span·class="p">,</span><span·class="w">
247 ·····</span><span·class="p"·data-group-id="0175713594-7">{</span><span·class="p"·data-group-id="0175713594-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="0175713594-8">}</s[·...·truncated·by·diffoscope;·len:·249,·SHA:·3be82b297484516a23285b1c9b1bbcf98eb785bb7784880a3294e267e1df1250·...·]-7">}</span><span·class="p">,</span><span·class="w">247 ·····</span><span·class="p"·data-group-id="6545550406-7">{</span><span·class="p"·data-group-id="6545550406-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="6545550406-8">}</s[·...·truncated·by·diffoscope;·len:·249,·SHA:·c7af460dd358c22baeb32926511cb6909d597707b2ba321b872ee4e566d72da5·...·]-7">}</span><span·class="p">,</span><span·class="w">
248 ·····</span><span·class="p"·data-group-id="0175713594-10">{</span><span·class="p"·data-group-id="0175713594-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="0175713594-11">[·...·truncated·by·diffoscope;·len:·255,·SHA:·2e74eb4ea1c2fa57d1280fdb9dfbd9f08b9d6d32aa0531539033db3fba557e88·...·]-10">}</span><span·class="p">,</span><span·class="w">248 ·····</span><span·class="p"·data-group-id="6545550406-10">{</span><span·class="p"·data-group-id="6545550406-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="6545550406-11">[·...·truncated·by·diffoscope;·len:·255,·SHA:·4f1a919925d6c58bc74b87e1beecc8581c1e6944110506408474130ce4946f2d·...·]-10">}</span><span·class="p">,</span><span·class="w">
249 ·····</span><span·class="p"·data-group-id="0175713594-13">{</span><span·class="p"·data-group-id="0175713594-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="0175713594-14">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·cfce04ff3b4f099732f8eaa3ba4f3f6f99da3cbaff46776f37b0e83c4b8ccefe·...·]-13">}</span><span·class="p">,</span><span·class="w">249 ·····</span><span·class="p"·data-group-id="6545550406-13">{</span><span·class="p"·data-group-id="6545550406-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="6545550406-14">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·2a0111c923330a8ae720d83f7d6c2349c0642aafcdb789335d1572f130fda9d5·...·]-13">}</span><span·class="p">,</span><span·class="w">
250 ·····</span><span·class="p"·data-group-id="0175713594-16">{</span><span·class="p"·data-group-id="0175713594-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="0175713594-17">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·323fea7b42362d432c6e3cedf9d293d01359d9182c539ba532fb285d0f3c52e5·...·]-16">}</span><span·class="p">,</span><span·class="w">250 ·····</span><span·class="p"·data-group-id="6545550406-16">{</span><span·class="p"·data-group-id="6545550406-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="6545550406-17">}[·...·truncated·by·diffoscope;·len:·254,·SHA:·b0d1095bc117717a6355ae2854ecb48ad77a71d35cf5aa9e8d0b534e0c1d8f52·...·]-16">}</span><span·class="p">,</span><span·class="w">
251 ·····</span><span·class="p"·data-group-id="0175713594-19">{</span><span·class="p"·data-group-id="0175713594-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="017571359[·...·truncated·by·diffoscope;·len:·261,·SHA:·bde56115aa2e14f8e65fd36a14957f6d6da36a3f6a5ec53ba100acab91d2fe6b·...·]-19">}</span><span·class="p">,</span><span·class="w">251 ·····</span><span·class="p"·data-group-id="6545550406-19">{</span><span·class="p"·data-group-id="6545550406-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="654555040[·...·truncated·by·diffoscope;·len:·261,·SHA:·3a3daeb0ff3675641d058aa615eb82b6eefec7bf50205fde0cf4cfe9aa3b69d8·...·]-19">}</span><span·class="p">,</span><span·class="w">
252 ·····</span><span·class="p"·data-group-id="0175713594-22">{</span><span·class="p"·data-group-id="0175713594-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="0175713594-[·...·truncated·by·diffoscope;·len:·259,·SHA:·2482fc19c340cabfb22a58aa63eb7723d47dd37852b6d1a6a9af2450cd5751c2·...·]-22">}</span><span·class="p">,</span><span·class="w">252 ·····</span><span·class="p"·data-group-id="6545550406-22">{</span><span·class="p"·data-group-id="6545550406-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="6545550406-[·...·truncated·by·diffoscope;·len:·259,·SHA:·3822fe37926ffb0231d7dc4e5b23e2c9e708f8edff8e028f94be2fbb50393a7b·...·]-22">}</span><span·class="p">,</span><span·class="w">
253 ·····</span><span·class="p"·data-group-id="0175713594-25">{</span><span·class="p"·data-group-id="0175713594-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="0175713594-2[·...·truncated·by·diffoscope;·len:·258,·SHA:·ddedc11631c827b3dc7e914f944369ccc77fa621b928b5f31f0f5dd535600093·...·]-25">}</span><span·class="p">,</span><span·class="w">253 ·····</span><span·class="p"·data-group-id="6545550406-25">{</span><span·class="p"·data-group-id="6545550406-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="6545550406-2[·...·truncated·by·diffoscope;·len:·258,·SHA:·435e1db3c93cd86be857e7720eb7b0310b0e2fd355fe4be599afa479ffea6dc9·...·]-25">}</span><span·class="p">,</span><span·class="w">
254 ·····</span><span·class="p"·data-group-id="0175713594-28">{</span><span·class="p"·data-group-id="0175713594-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="0175713594-29">[·...·truncated·by·diffoscope;·len:·255,·SHA:·b1fe11d187f7e7ab0f15a7f6672cd306666acecb138fd1f2314a6931b0dc0c54·...·]-28">}</span><span·class="p">,</span><span·class="w">254 ·····</span><span·class="p"·data-group-id="6545550406-28">{</span><span·class="p"·data-group-id="6545550406-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="6545550406-29">[·...·truncated·by·diffoscope;·len:·255,·SHA:·50791726ec143123399a391e3b569fb09c592a16be57e4b1a620e6387eface0b·...·]-28">}</span><span·class="p">,</span><span·class="w">
255 ·····</span><span·class="p"·data-group-id="0175713594-31">{</span><span·class="p"·data-group-id="0175713594-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="0175713594-32">}[·...·truncated·by·diffoscope;·len:·361,·SHA:·ff72d0dadf64024f3ddb0a00a180246a775fc3d5dcc3773632253c8706807a92·...·]-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="6545550406-31">{</span><span·class="p"·data-group-id="6545550406-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="6545550406-32">}[·...·truncated·by·diffoscope;·len:·361,·SHA:·7964ba22f2519765167d260efe24ba4c4d31a9b906c25b083d878433a563a5bd·...·]-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="9410094663-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="9410094663-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="6023928451-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="6023928451-1">)</span><span·class="p">.</span><span·class="w">
260 </span><span·class="p"·data-group-id="9410094663-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9410094663-3">[</span><span·class="p"·data-group-id="9410094663-4">{</span><span·class="p"·data-group-id="9410094663-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·460,·SHA:·d80db85cb041253a33c8788f71b047eea59e6704f51c3c36d12c6dc86d0a2157·...·]-4">}</span><span·class="p">,</span><span·class="w">260 </span><span·class="p"·data-group-id="6023928451-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="6023928451-3">[</span><span·class="p"·data-group-id="6023928451-4">{</span><span·class="p"·data-group-id="6023928451-5">{</span><span·class="ss">channel<[·...·truncated·by·diffoscope;·len:·460,·SHA:·b4d3f43b5cb4e29ea7198106c451c16a03417da6331b3bf710660cb19cac1819·...·]-4">}</span><span·class="p">,</span><span·class="w">
261 ·····</span><span·class="p"·data-group-id="9410094663-7">{</span><span·class="p"·data-group-id="9410094663-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:·e550f901bc061c8aa73bde1697490c7f06ed841bc7be2cd771c8bb6b0dea7205·...·]-7">}</span><span·class="p">,</span><span·class="w">261 ·····</span><span·class="p"·data-group-id="6023928451-7">{</span><span·class="p"·data-group-id="6023928451-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:·0d60b2c7be63e74dc05b5dd6f7051a374183bf9d46d13a2b03d80eadea1e5ba3·...·]-7">}</span><span·class="p">,</span><span·class="w">
262 ·····</span><span·class="p"·data-group-id="9410094663-10">{</span><span·class="p"·data-group-id="9410094663-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:·16d7b94c255793f24b282acc906727db9afcc316ba4fd9cb3f443ec4cac10ec3·...·]-10">}</span><span·class="p">,</span><span·class="w">262 ·····</span><span·class="p"·data-group-id="6023928451-10">{</span><span·class="p"·data-group-id="6023928451-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:·ea9307c952eb1246666388155b907e86ded033faa4324434ddc42d520bf4a873·...·]-10">}</span><span·class="p">,</span><span·class="w">
263 ·····</span><span·class="p"·data-group-id="9410094663-13">{</span><span·class="p"·data-group-id="9410094663-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:·1a77b2140e4b13a42891b97690eb6e18036e0acd0380f3ef0713f0e91f8cbbf5·...·]-13">}</span><span·class="p">,</span><span·class="w">263 ·····</span><span·class="p"·data-group-id="6023928451-13">{</span><span·class="p"·data-group-id="6023928451-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:·6254c388cebbd13c12c3b6611c8c24099c2908dbb825f771d5f2a5acbd73cb5d·...·]-13">}</span><span·class="p">,</span><span·class="w">
264 ·····</span><span·class="p"·data-group-id="9410094663-16">{</span><span·class="p"·data-group-id="9410094663-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:·b501885fef7e6803df1c8e52ffdf2723a24eefb68f1a1fd5e2ce68fe88a82932·...·]-16">}</span><span·class="p">,</span><span·class="w">264 ·····</span><span·class="p"·data-group-id="6023928451-16">{</span><span·class="p"·data-group-id="6023928451-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:·6dba4d1ae9201937763222c9d960d33513098eb3ccb9123d3b3935652589f858·...·]-16">}</span><span·class="p">,</span><span·class="w">
265 ·····</span><span·class="p"·data-group-id="9410094663-19">{</span><span·class="p"·data-group-id="9410094663-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:·5eb9e6daedfbd339f4cc9b914945da34371bb54e4025ac42d304ef1a9fa4b92b·...·]-19">}</span><span·class="p">,</span><span·class="w">265 ·····</span><span·class="p"·data-group-id="6023928451-19">{</span><span·class="p"·data-group-id="6023928451-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:·2febd0b5cc4ba1c8efe7632ac494b7d6e0608aae4beb470df629201ab68c3e2d·...·]-19">}</span><span·class="p">,</span><span·class="w">
266 ·····</span><span·class="p"·data-group-id="9410094663-22">{</span><span·class="p"·data-group-id="9410094663-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:·3bc50d4da84fcb09598d61ffe0dc31d8e05a58f53b2e93f883b8378bcf24a547·...·]-22">}</span><span·class="p">,</span><span·class="w">266 ·····</span><span·class="p"·data-group-id="6023928451-22">{</span><span·class="p"·data-group-id="6023928451-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:·a51835170e26661d889f6a71269330c2bdbb59942a27191f6db2920dfaa6d9e1·...·]-22">}</span><span·class="p">,</span><span·class="w">
267 ·····</span><span·class="p"·data-group-id="9410094663-25">{</span><span·class="p"·data-group-id="9410094663-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:·f38578006cec7d68edb586deec0b754ff9e66dca70979468026197950e44f9be·...·]-25">}</span><span·class="p">,</span><span·class="w">267 ·····</span><span·class="p"·data-group-id="6023928451-25">{</span><span·class="p"·data-group-id="6023928451-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:·76d7b84125d0e5f38cf48d16c7e32ec58da1c037bcb77730cb9770f562020802·...·]-25">}</span><span·class="p">,</span><span·class="w">
268 ·····</span><span·class="p"·data-group-id="9410094663-28">{</span><span·class="p"·data-group-id="9410094663-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:·0ad1e9361803b4bf3b1889623d8aa470721365c04df919183358bc00822b306f·...·]-28">}</span><span·class="p">,</span><span·class="w">268 ·····</span><span·class="p"·data-group-id="6023928451-28">{</span><span·class="p"·data-group-id="6023928451-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:·2902ce3fd84f9c0ed27064e46f27d5a79b80d38486632ff48f02414de0c4d8fb·...·]-28">}</span><span·class="p">,</span><span·class="w">
269 ·····</span><span·class="p"·data-group-id="9410094663-31">{</span><span·class="p"·data-group-id="9410094663-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:·cb7e6484ef8d548db760b5ad733b7664a6ef991adef95ba72098e286defcbae7·...·]-31">}</span><span·class="p">,</span><span·class="w">269 ·····</span><span·class="p"·data-group-id="6023928451-31">{</span><span·class="p"·data-group-id="6023928451-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:·77192ec911097ba4b164a1977fd031da70bffda205173a0a37cef3dfdb696337·...·]-31">}</span><span·class="p">,</span><span·class="w">
270 ·····</span><span·class="p"·data-group-id="9410094663-34">{</span><span·class="p"·data-group-id="9410094663-35">{</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">,</span><span·class="mi">1</sp[·...·truncated·by·diffoscope;·len:·304,·SHA:·b868502e6a224c7d6bc22a08f9e019e445f507c1e9f1b19e70540111e0d704a1·...·]-34">}</span><span·class="p">,</span><span·class="w">270 ·····</span><span·class="p"·data-group-id="6023928451-34">{</span><span·class="p"·data-group-id="6023928451-35">{</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">,</span><span·class="mi">1</sp[·...·truncated·by·diffoscope;·len:·304,·SHA:·278cfd357402c2d2154f6e325f0a8dc9272110c5c5605fadfa9df74d3ba8e67d·...·]-34">}</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.3/doc/html/erlang.html#t:module/0">module</a>(),·Limit·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:non_neg_integer/0">non_neg_integer</a>().</pre>576 ·················when·Mod·::·<a·href="../../../../erts-15.2.3/doc/html/erlang.html#t:module/0">module</a>(),·Limit·::·<a·href="../../../../erts-15.2.3/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="3932038657-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="39320[·...·truncated·by·diffoscope;·len:·651,·SHA:·098ab3c5e90c8f3807772ff66c6497b38272294e60c4add8c18c2d4dcf205d1d·...·]-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="7875693665-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="78756[·...·truncated·by·diffoscope;·len:·651,·SHA:·1c7da2bc54dcb1da096f480c7d4d7ada534fa578ad62407c39aff890c8d443e4·...·]-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="1293065162-1">(</span><span·class="p"·data-group-id="1293065162-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="1293065162-2">(</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·ee330209f6ed014bdd5ad456f61df624724522479bef8f811780fb5a232e67ae·...·]-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="4647298686-1">(</span><span·class="p"·data-group-id="4647298686-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="4647298686-2">(</spa[·...·truncated·by·diffoscope;·len:·43,·SHA:·a090307072a1a3f05d6bf3131d87e9e2b5e9e7b2d1e76bda32c742d73cf3dca0·...·]-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="1293065162-3">(</span><span·class="p"·data-group-id="1293065162-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="4647298686-3">(</span><span·class="p"·data-group-id="4647298686-3">)</span><span·class="p">.</span><span·class="w">
162 </span><span·class="p"·data-group-id="1293065162-4">{</span><span·class="mi">539</span><span·class="p">,</span><span·class="w">162 </span><span·class="p"·data-group-id="4647298686-4">{</span><span·class="mi">539</span><span·class="p">,</span><span·class="w">
163 ·</span><span·class="p"·data-group-id="1293065162-5">[</span><span·class="p"·data-group-id="1293065162-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="4647298686-5">[</span><span·class="p"·data-group-id="4647298686-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="1293065162-7">[</span><span·class="p"·data-group-id="1293065162-8">{</span><span·class="p"·data-group-id="1293065162-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:·9eb840b95fcb1a7817ffeb8f798a4843389a4ea947685c81e15096a60e67c3c4·...·]-8">}</span><span·class="p">,</span><span·class="w">164 ·········</span><span·class="p"·data-group-id="4647298686-7">[</span><span·class="p"·data-group-id="4647298686-8">{</span><span·class="p"·data-group-id="4647298686-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:·4c8daa8995cd84d6776694ce8d760bb6da683e17796da500d8a1180b1c15b7d3·...·]-8">}</span><span·class="p">,</span><span·class="w">
165 ··········</span><span·class="p"·data-group-id="1293065162-10">{</span><span·class="p"·data-group-id="1293065162-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="1293065162[·...·truncated·by·diffoscope;·len:·104,·SHA:·dd293296aa9e90fec21357671d354da4c6c83108992c35036e235a4122427d23·...·]-10">}</span><span·class="p">,</span><span·class="w">165 ··········</span><span·class="p"·data-group-id="4647298686-10">{</span><span·class="p"·data-group-id="4647298686-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="4647298686[·...·truncated·by·diffoscope;·len:·104,·SHA:·5daaad8c3275ce991c3de3d9f260806bf757e0140bb49fdb7effdb832c607394·...·]-10">}</span><span·class="p">,</span><span·class="w">
166 ··········</span><span·class="p"·data-group-id="1293065162-12">{</span><span·class="p"·data-group-id="1293065162-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="1293065162[·...·truncated·by·diffoscope;·len:·104,·SHA:·963b63b321acf587c682161c8335fc24c92d3bee3ad99eb3e650440761fbc88e·...·]-12">}</span><span·class="p">,</span><span·class="w">166 ··········</span><span·class="p"·data-group-id="4647298686-12">{</span><span·class="p"·data-group-id="4647298686-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="4647298686[·...·truncated·by·diffoscope;·len:·104,·SHA:·a69fda6676e450aecbc137765ab75a065d13d559fd63337b756b5404bd023d1f·...·]-12">}</span><span·class="p">,</span><span·class="w">
167 ··········</span><span·class="p"·data-group-id="1293065162-14">{</span><span·class="p"·data-group-id="1293065162-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="129306[·...·truncated·by·diffoscope;·len:·107,·SHA:·b40f14844e00bb1ae71936eba80dd9dc93475b45dd1fa8e9103326a3a944bfb1·...·]-14">}</span><span·class="p">,</span><span·class="w">167 ··········</span><span·class="p"·data-group-id="4647298686-14">{</span><span·class="p"·data-group-id="4647298686-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="464729[·...·truncated·by·diffoscope;·len:·107,·SHA:·29753349295bf6c2c4998224736858c98e838da2636ac47556e4351dbdd64a44·...·]-14">}</span><span·class="p">,</span><span·class="w">
168 ··········</span><span·class="p"·data-group-id="1293065162-16">{</span><span·class="p"·data-group-id="1293065162-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="1293065162-[·...·truncated·by·diffoscope;·len:·102,·SHA:·430897ab756630bc0b4e4ad4d26a6ae1ecfec2448cc1d54783eebaf59cc03b2d·...·]-16">}</span><span·class="p">,</span><span·class="w">168 ··········</span><span·class="p"·data-group-id="4647298686-16">{</span><span·class="p"·data-group-id="4647298686-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="4647298686-[·...·truncated·by·diffoscope;·len:·102,·SHA:·6a0d7077e1b1a18f347e794572771dc7482baa27f59d4beec15a688299b170ca·...·]-16">}</span><span·class="p">,</span><span·class="w">
169 ··········</span><span·class="p"·data-group-id="1293065162-18">{</span><span·class="p"·data-group-id="1293065162-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="1293065[·...·truncated·by·diffoscope;·len:·106,·SHA:·b23a236e15639114976754ede7360e1ef4a9821428f041e1e95322dbbc6270f5·...·]-18">}</span><span·class="p">,</span><span·class="w">169 ··········</span><span·class="p"·data-group-id="4647298686-18">{</span><span·class="p"·data-group-id="4647298686-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="4647298[·...·truncated·by·diffoscope;·len:·106,·SHA:·006000ff6e00276b37ca85406fcaa48b798cd84c28d0574d079f7b5e10a8865e·...·]-18">}</span><span·class="p">,</span><span·class="w">
170 ··········</span><span·class="p"·data-group-id="1293065162-20">{</span><span·class="p"·data-group-id="1293065162-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="1293065162-21">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·9548ebbbde1c838a3ae3556fdbbf8357e27ef8ad6aa0e3d3be9da661554088e1·...·]-20">}</span><span·class="p">,</span><span·class="w">170 ··········</span><span·class="p"·data-group-id="4647298686-20">{</span><span·class="p"·data-group-id="4647298686-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="4647298686-21">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·0d7c910ccd8f05ec642a50c6bde51923bf9e44f35ee64afd71c6b7cdb4c61d17·...·]-20">}</span><span·class="p">,</span><span·class="w">
171 ··········</span><span·class="p"·data-group-id="1293065162-22">{</span><span·class="p"·data-group-id="1293065162-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="1293065162-23">}</[·...·truncated·by·diffoscope;·len:·95,·SHA:·a49327fcc33b4d3605a03a01dd984e72ee7c7449bd1a3bbf48709045a2527d54·...·]-22">}</span><span·class="p">,</span><span·class="w">171 ··········</span><span·class="p"·data-group-id="4647298686-22">{</span><span·class="p"·data-group-id="4647298686-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="4647298686-23">}</[·...·truncated·by·diffoscope;·len:·95,·SHA:·f814b039719f3f42fd449f7c5e21d9c58000961de04f591964ebf74049437aa0·...·]-22">}</span><span·class="p">,</span><span·class="w">
172 ··········</span><span·class="p"·data-group-id="1293065162-24">{</span><span·class="p"·data-group-id="1293065162-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="12930651[·...·truncated·by·diffoscope;·len:·105,·SHA:·518af9d528b81f5c3a28aa01b77d15910f05843535f35501e0c6ca588b345c22·...·]-24">}</span><span·class="p">,</span><span·class="w">172 ··········</span><span·class="p"·data-group-id="4647298686-24">{</span><span·class="p"·data-group-id="4647298686-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="46472986[·...·truncated·by·diffoscope;·len:·105,·SHA:·058310c94a083a14778f6cbff51850d0c0183e7f2717af12d931f389e36466dd·...·]-24">}</span><span·class="p">,</span><span·class="w">
173 ··········</span><span·class="p"·data-group-id="1293065162-26">{</span><span·class="p"·data-group-id="1293065162-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="129306516[·...·truncated·by·diffoscope;·len:·104,·SHA:·6a84a1b13fac634cabb2dae54098cf2d7bdb9c0d63d54452080f50506f34afc1·...·]-26">}</span><span·class="p">,</span><span·class="w">173 ··········</span><span·class="p"·data-group-id="4647298686-26">{</span><span·class="p"·data-group-id="4647298686-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="464729868[·...·truncated·by·diffoscope;·len:·104,·SHA:·7d3fd9ee22e034356e00024ec8288eca3fded6e0add7cd3833645669a09ad04d·...·]-26">}</span><span·class="p">,</span><span·class="w">
174 ··········</span><span·class="p"·data-group-id="1293065162-28">{</span><span·class="p"·data-group-id="1293065162-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="1293065162-29[·...·truncated·by·diffoscope;·len:·100,·SHA:·a4d3aff067369d1ea5e9658133435fa1b80a505443e87add07513c470481a1dc·...·]-28">}</span><span·class="p">,</span><span·class="w">174 ··········</span><span·class="p"·data-group-id="4647298686-28">{</span><span·class="p"·data-group-id="4647298686-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="4647298686-29[·...·truncated·by·diffoscope;·len:·100,·SHA:·45ff34cbf2e166aa6752c2c22e179ab181403aeeedf511be24a83f42c89fe6ae·...·]-28">}</span><span·class="p">,</span><span·class="w">
175 ··········</span><span·class="p"·data-group-id="1293065162-30">{</span><span·class="p"·data-group-id="1293065162-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:·a71a943cb2964a8c906f3722b5a15f2c0d18bf27e6ffe9c3a0956a09f17c1d3b·...·]-30">}</span><span·class="p">,</span><span·class="w">175 ··········</span><span·class="p"·data-group-id="4647298686-30">{</span><span·class="p"·data-group-id="4647298686-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:·a06a7c5a01f2cc0695ef58d36c440643705557a68e3cfd7a6529dd1b415ee183·...·]-30">}</span><span·class="p">,</span><span·class="w">
176 ··········</span><span·class="p"·data-group-id="1293065162-32">{</span><span·class="p"·data-group-id="1293065162-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:·3769e3d0a946d4ee25505c2c20220f8e8f9e930460ada830e8db02ba7304cd9f·...·]-6">}</span><span·class="p">,</span><span·class="w">176 ··········</span><span·class="p"·data-group-id="4647298686-32">{</span><span·class="p"·data-group-id="4647298686-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:·993ea01ecab4aa084bfc2136cb3906799d52f047cad7106cd44f129ea337c598·...·]-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="1293065162-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="1293065162-35">[</span><span·class="p"·data-group-id="1293065162-36">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·438,·SHA:·57e979c461394df4a8e816f35b31d7aeb575a77ae759d80b44d9b751c7ae2dd5·...·]-34">}</span><span·class="p">,</span><span·class="w">182 ··</span><span·class="p"·data-group-id="4647298686-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="4647298686-35">[</span><span·class="p"·data-group-id="4647298686-36">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·438,·SHA:·c794341a42c94141a4510b72eac284ac70a8f10f3390d05ff2d83f2a4903d7f7·...·]-34">}</span><span·class="p">,</span><span·class="w">
183 ··</span><span·class="p"·data-group-id="1293065162-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="1293065162-39">[</span><span·class="p"·data-group-id="1293065162-40">{</span><span·class="p"·data-group-id="1293065162-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="1293065162-41">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1293065162-40">}</span><span·class="p"·data-group-id="1293065162-39">]</span><span·class="p"·data-group-id="1293065162-38">}</span><span·class="p">,</span><span·class="w"> 
184 ··</span><span·class="p"·data-group-id="1293065162-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="1293065162-43">[</span><span·class="p"·data-group-id="1293065162-44">{</span><span·class="p"·data-group-id="1293065162-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="1293065162-45">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1293065162-44">}</span><span·class="p"·data-group-id="1293065162-43">]</span><span·class="p"·data-group-id="1293065162-42">}</span><span·class="p">,</span><span·class="w"> 
185 ··</span><span·class="p"·data-group-id="1293065162-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="1293065162-47">[</span><span·class="p"·data-group-id="1293065162-48">{</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·573,·SHA:·9d39811d731e6a984dd2bbc3a49df644dcdf4ee42d4cceda3cbd32b10c2084d0·...·]">183 ··</span><span·class="p"·data-group-id="4647298686-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="4647298686-39">[</span><span·class="p"·data-group-id="4647298686-40">{</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·482,·SHA:·4cad304c25a0a49a694d68ade80b496efe35ddf1ad19e6baea535730355691b7·...·]">
 184 ··</span><span·class="p"·data-group-id="4647298686-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="4647298686-43">[</span><span·class="p"·data-group-id="4647298686-44">{</span><span·class="p"·data-group-id="4647298686-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="4647298686-45">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4647298686-44">}</span><span·class="p"·data-group-id="4647298686-43">]</span><span·class="p"·data-group-id="4647298686-42">}</span><span·class="p">,</span><span·class="w">
 185 ··</span><span·class="p"·data-group-id="4647298686-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="4647298686-47">[</span><span·class="p"·data-group-id="4647298686-48">{</span><span·class="p"·data-group-id="4647298686-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="4647298686-49">}</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="4647298686-48">}</span><span·class="p"·data-group-id="4647298686-47">]</span><span·class="p"·data-group-id="4647298686-46">}</span><span·class="p"·data-group-id="4647298686-5">]</span><span·class="p"·data-group-id="4647298686-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="1293065162-50">(</span><span·class="ss">cprof</span><span·class="p"·data-group-id="1293065162-50">)</span><span·class="p">.</span><span·class="w">186 3&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">analyse</span><span·class="p"·data-group-id="4647298686-50">(</span><span·class="ss">cprof</span><span·class="p"·data-group-id="4647298686-50">)</span><span·class="p">.</span><span·class="w">
187 </span><span·class="p"·data-group-id="1293065162-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="1293065162-52">[</span><span·class="p"·data-group-id="1293065162-53">{</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·831,·SHA:·2e1055b264755034330978b39374955243432bf0c979517c5a79dd2640bfe8a9·...·]-51">}</span><span·class="gp·unselectable">187 </span><span·class="p"·data-group-id="4647298686-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="4647298686-52">[</span><span·class="p"·data-group-id="4647298686-53">{</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·831,·SHA:·d66cc02e907b8435b2f13c01c6a6fe6e6ecd310288dfb8616854620e54f50df1·...·]-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="1293065162-57">(</span><span·class="p"·data-group-id="1293065162-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="4647298686-57">(</span><span·class="p"·data-group-id="4647298686-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="9785043033-1">(</span><span·class="p"·data-group-id="9785043033-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:·4778d8c8ef051fd8d2b40794397b8e01d8f6d78e3ea78d138adcf19a06bbc016·...·]-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="6849720630-1">(</span><span·class="p"·data-group-id="6849720630-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:·0a5fa379393f32af9b76bb434da62bd484f4de6a9611f86b665e43a774528fd7·...·]-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="9785043033-4">(</span><span·class="ss">calendar</span><span·class="p"·data-group-id="9785043033-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="6849720630-4">(</span><span·class="ss">calendar</span><span·class="p"·data-group-id="6849720630-4">)</span><span·class="p">.</span><span·class="w">
201 </span><span·class="p"·data-group-id="9785043033-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="6849720630-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="9785043033-6">[</span><span·class="p"·data-group-id="9785043033-7">{</span><span·class="p"·data-group-id="9785043033-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:·bef4989e888ef4d25a449b10fbe716a4efacdec394b3af7d50b4024d4b463a38·...·]-7">}</span><span·class="p">,</span><span·class="w">202 ··········</span><span·class="p"·data-group-id="6849720630-6">[</span><span·class="p"·data-group-id="6849720630-7">{</span><span·class="p"·data-group-id="6849720630-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:·45f3c75252bb63ee84eaaf2093663097e402328a25a3edcbcb9d45a6e7184551·...·]-7">}</span><span·class="p">,</span><span·class="w">
203 ···········</span><span·class="p"·data-group-id="9785043033-9">{</span><span·class="p"·data-group-id="9785043033-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:·0fa088dc49d8d02bea30e6f2f4c092f957162dfc40e24c56c1263a9b97d2a979·...·]-9">}</span><span·class="p">,</span><span·class="w">203 ···········</span><span·class="p"·data-group-id="6849720630-9">{</span><span·class="p"·data-group-id="6849720630-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:·5311e07e8b7ba06f2fb60d61bb3aa2351319dc5f720fafeb4a0660565a9ac7d7·...·]-9">}</span><span·class="p">,</span><span·class="w">
204 ···········</span><span·class="p"·data-group-id="9785043033-11">{</span><span·class="p"·data-group-id="9785043033-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="978504[·...·truncated·by·diffoscope;·len:·107,·SHA:·0cae0a51089cd2ae4fafd1547532465f9ff47d5cbd8b90a9eb7f12881b042569·...·]-11">}</span><span·class="p">,</span><span·class="w">204 ···········</span><span·class="p"·data-group-id="6849720630-11">{</span><span·class="p"·data-group-id="6849720630-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="684972[·...·truncated·by·diffoscope;·len:·107,·SHA:·5d7ce43dcf76fc1b8d1ad255996eca9079b1ad6968bf6b86feb8b50713fdca5d·...·]-11">}</span><span·class="p">,</span><span·class="w">
205 ···········</span><span·class="p"·data-group-id="9785043033-13">{</span><span·class="p"·data-group-id="9785043033-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="9785043[·...·truncated·by·diffoscope;·len:·106,·SHA:·dd57f141a113988dbec3474dceef77264c20bbd163b6b2ec5dc9ee94ffbb97ab·...·]-13">}</span><span·class="p">,</span><span·class="w">205 ···········</span><span·class="p"·data-group-id="6849720630-13">{</span><span·class="p"·data-group-id="6849720630-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="6849720[·...·truncated·by·diffoscope;·len:·106,·SHA:·013dce1c62d5ddd55c202fc18e9bdcd7f06b569056725357ab115ba3a1ec835b·...·]-13">}</span><span·class="p">,</span><span·class="w">
206 ···········</span><span·class="p"·data-group-id="9785043033-15">{</span><span·class="p"·data-group-id="9785043033-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="9785043033-16">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·37a804de7017e2c1c1bd222d18e15094456a76e00f1636ad6cf23d01d60c433e·...·]-15">}</span><span·class="p">,</span><span·class="w">206 ···········</span><span·class="p"·data-group-id="6849720630-15">{</span><span·class="p"·data-group-id="6849720630-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="6849720630-16">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·d5e4cf2e9261fda8a2eac95bb4e886f26f4cf1c264a602efa3b1aa8360e74e38·...·]-15">}</span><span·class="p">,</span><span·class="w">
207 ···········</span><span·class="p"·data-group-id="9785043033-17">{</span><span·class="p"·data-group-id="9785043033-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="9785043033-18">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·37a804de7017e2c1c1bd222d18e15094456a76e00f1636ad6cf23d01d60c433e·...·]-17">}</span><span·class="p">,</span><span·class="w">207 ···········</span><span·class="p"·data-group-id="6849720630-17">{</span><span·class="p"·data-group-id="6849720630-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="6849720630-18">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·d5e4cf2e9261fda8a2eac95bb4e886f26f4cf1c264a602efa3b1aa8360e74e38·...·]-17">}</span><span·class="p">,</span><span·class="w">
208 ···········</span><span·class="p"·data-group-id="9785043033-19">{</span><span·class="p"·data-group-id="9785043033-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="9785043033-20">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·37a804de7017e2c1c1bd222d18e15094456a76e00f1636ad6cf23d01d60c433e·...·]-19">}</span><span·class="p">,</span><span·class="w">208 ···········</span><span·class="p"·data-group-id="6849720630-19">{</span><span·class="p"·data-group-id="6849720630-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="6849720630-20">}<[·...·truncated·by·diffoscope;·len:·96,·SHA:·d5e4cf2e9261fda8a2eac95bb4e886f26f4cf1c264a602efa3b1aa8360e74e38·...·]-19">}</span><span·class="p">,</span><span·class="w">
209 ···········</span><span·class="p"·data-group-id="9785043033-21">{</span><span·class="p"·data-group-id="9785043033-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="9785[·...·truncated·by·diffoscope;·len:·109,·SHA:·618d24e81e241d30e6b034867ec3a4f99439425947e57f68fdf90fe333078459·...·]-21">}</span><span·class="p">,</span><span·class="w">209 ···········</span><span·class="p"·data-group-id="6849720630-21">{</span><span·class="p"·data-group-id="6849720630-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="6849[·...·truncated·by·diffoscope;·len:·109,·SHA:·81d03ec78c4e6f524c32138b1d5ac3d91e0b3ecf4ffc45c635999401d4d91e75·...·]-21">}</span><span·class="p">,</span><span·class="w">
210 ···········</span><span·class="p"·data-group-id="9785043033-23">{</span><span·class="p"·data-group-id="9785043033-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:·9c0aed7223f5f0d91808f9e5360ce06bdcde09121476cbe838553e40dde3c7e2·...·]-5">}</span><span·class="gp·unselectable">210 ···········</span><span·class="p"·data-group-id="6849720630-23">{</span><span·class="p"·data-group-id="6849720630-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:·f5ea7ab450bb0d2eba21ad698e084a33e43f921f15d49eb590ed51a8ef9163a5·...·]-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="9785043033-25">(</span><span·class="p"·data-group-id="9785043033-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="6849720630-25">(</span><span·class="p"·data-group-id="6849720630-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="5267250625-1">(</span><span·class="ss">sort</span><span·class="p"·data-group-id="5267250625-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="5267250625-2">(</span><span·class="p"·data-group-id="5267250625-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:·7fbd00e81bff91005a1e0c3d2b83f7d2e9f75ad9086f5b1874badd96fe2fd9ed·...·]">)</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="9600750736-1">(</span><span·class="ss">sort</span><span·class="p"·data-group-id="9600750736-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="9600750736-2">(</span><span·class="p"·data-group-id="9600750736-3">[</span><span·class="ss">do</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9600750736-3">]</span><span·class="p"·data-group-id="9600750736-2">)</span><span·class="p">.</span><span·class="w">
  
223 </span><span·class="nf">do</span><span·class="p"·data-group-id="5267250625-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="5267250625-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="9600750736-4">(</span><span·class="n">N</span><span·class="p"·data-group-id="9600750736-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="5267250625-5">(</span><span·class="p"·data-group-id="5267250625-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="9600750736-5">(</span><span·class="p"·data-group-id="9600750736-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="5267250625-6">(</span><span·class="p"·data-group-id="5267250625-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="9600750736-6">(</span><span·class="p"·data-group-id="9600750736-6">)</span><span·class="p">,</span><span·class="w">
226 ····</span><span·class="nf">do</span><span·class="p"·data-group-id="5267250625-7">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5267250625-8">[</span><span·class="p"·data-group-id="5267250625-8">]</span><span·class="p"·data-group-id="5267250625-7">)</span><span·class="p">.</span><span·class="w">226 ····</span><span·class="nf">do</span><span·class="p"·data-group-id="9600750736-7">(</span><span·class="n">N</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9600750736-8">[</span><span·class="p"·data-group-id="9600750736-8">]</span><span·class="p"·data-group-id="9600750736-7">)</span><span·class="p">.</span><span·class="w">
  
227 </span><span·class="nf">do</span><span·class="p"·data-group-id="5267250625-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="5267250625-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="9600750736-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="9600750736-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="5267250625-10">(</span><span·class="n">L</span><span·class="p"·data-group-id="5267250625-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="9600750736-10">(</span><span·class="n">L</span><span·class="p"·data-group-id="9600750736-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="5267250625-11">(</span><span·class="p"·data-group-id="5267250625-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="9600750736-11">(</span><span·class="p"·data-group-id="9600750736-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="5267250625-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="5267250625-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="9600750736-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="9600750736-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="5267250625-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="5267250625-14">[</span><span·class="nc">rand</span><span·class="p">:</span><span·[·...·truncated·by·diffoscope;·len:·717,·SHA:·5c673cef2209a60f033b9db2dd0bbd0c1bf6caed8ec191fb2bb73c5608d4d53e·...·]-1">)</span><span·class="p">.</span><span·class="w">232 ····</span><span·class="nf">do</span><span·class="p"·data-group-id="9600750736-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="9600750736-14">[</span><span·class="nc">rand</span><span·class="p">:</span><span·[·...·truncated·by·diffoscope;·len:·717,·SHA:·fc611f54b6ce7327d1191403c1b726356a806eb237226dcf4e6d10086b5ca486·...·]-1">)</span><span·class="p">.</span><span·class="w">
233 </span><span·class="p"·data-group-id="5050712122-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">sort</span><span·class="p"·data-group-id="5050712122-2">}</span><span·class="gp·unselectable">233 </span><span·class="p"·data-group-id="0355572813-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">sort</span><span·class="p"·data-group-id="0355572813-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="5050712122-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="5050712122-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="0355572813-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="0355572813-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="5050712122-4">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="5050712122-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="0355572813-4">(</span><span·class="mi">1000</span><span·class="p"·data-group-id="0355572813-4">)</span><span·class="p">.</span><span·class="w">
237 </span><span·class="p"·data-group-id="5050712122-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:·3d17350f248f4158fc56bfa3f3be43bcae2d6d5ef191426b8b9914925c336702·...·]-5">]</span><span·class="gp·unselectable">237 </span><span·class="p"·data-group-id="0355572813-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:·6cf36eb1e380c61c570361a0a672634ef6ff48bcc0927857626b6e1af6ca3723·...·]-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="5050712122-6">(</span><span·class="p"·data-group-id="5050712122-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="0355572813-6">(</span><span·class="p"·data-group-id="0355572813-6">)</span><span·class="p">.</span><span·class="w">
239 </span><span·class="p"·data-group-id="5050712122-7">{</span><span·class="mi">13180</span><span·class="p">,</span><span·class="w">239 </span><span·class="p"·data-group-id="0355572813-7">{</span><span·class="mi">13180</span><span·class="p">,</span><span·class="w">
240 ·</span><span·class="p"·data-group-id="5050712122-8">[</span><span·class="p"·data-group-id="5050712122-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="0355572813-8">[</span><span·class="p"·data-group-id="0355572813-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="5050712122-10">[</span><span·class="p"·data-group-id="5050712122-11">{</span><span·class="p"·data-group-id="5050712122-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:·f0552c593c5ebffc6f51ecf31cd641fd7c5be6dec8507139254eda78d6f360c2·...·]-11">}</span><span·class="p">,</span><span·class="w">241 ·········</span><span·class="p"·data-group-id="0355572813-10">[</span><span·class="p"·data-group-id="0355572813-11">{</span><span·class="p"·data-group-id="0355572813-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:·b59ce9511b4a20c4ec0707952dc3a8ff25d3c8710d12e429732e7b876b68f594·...·]-11">}</span><span·class="p">,</span><span·class="w">
242 ··········</span><span·class="p"·data-group-id="5050712122-13">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-14[·...·truncated·by·diffoscope;·len:·102,·SHA:·b6277eaf3945fbd8affb85136463a5d843e10fe0ecf93b846c811f673237dfe3·...·]-13">}</span><span·class="p">,</span><span·class="w">242 ··········</span><span·class="p"·data-group-id="0355572813-13">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-14[·...·truncated·by·diffoscope;·len:·102,·SHA:·1f304f306767417ba7cf4d871a50d202db4c3f36d307e8d8cf2391d8536baf92·...·]-13">}</span><span·class="p">,</span><span·class="w">
243 ··········</span><span·class="p"·data-group-id="5050712122-15">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-16">[·...·truncated·by·diffoscope;·len:·100,·SHA:·f71edfe268eb03461a9afcbe370a070941ddd5ee09a72b975605f86d4363f28d·...·]-15">}</span><span·class="p">,</span><span·class="w">243 ··········</span><span·class="p"·data-group-id="0355572813-15">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-16">[·...·truncated·by·diffoscope;·len:·100,·SHA:·e66f150122e34ed12c453e0a1c6efe9e195f30d38e1847008d061b368ace53d9·...·]-15">}</span><span·class="p">,</span><span·class="w">
244 ··········</span><span·class="p"·data-group-id="5050712122-17">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-18"[·...·truncated·by·diffoscope;·len:·101,·SHA:·ef71d9afa57b1eba9076be2eebdf5703a32e7d4eddcebbc01e5a65e5242d416a·...·]-17">}</span><span·class="p">,</span><span·class="w">244 ··········</span><span·class="p"·data-group-id="0355572813-17">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-18"[·...·truncated·by·diffoscope;·len:·101,·SHA:·c90a5f7cfadf8a185a0c20f3e531be0269faf5fbc0541bcdcaeb5c793d7ca509·...·]-17">}</span><span·class="p">,</span><span·class="w">
245 ··········</span><span·class="p"·data-group-id="5050712122-19">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-20"[·...·truncated·by·diffoscope;·len:·101,·SHA:·5068ad53fd5538530026abf0729a389aba834746b8d088f6007e34172849fc36·...·]-19">}</span><span·class="p">,</span><span·class="w">245 ··········</span><span·class="p"·data-group-id="0355572813-19">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-20"[·...·truncated·by·diffoscope;·len:·101,·SHA:·33e3de563cf62585b6f55c1453ff5d79b56747761e8d0c0bebd6600719f66257·...·]-19">}</span><span·class="p">,</span><span·class="w">
246 ··········</span><span·class="p"·data-group-id="5050712122-21">{</span><span·class="p"·data-group-id="5050712122-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="5050712122[·...·truncated·by·diffoscope;·len:·105,·SHA:·66f9e0ed0900b45f986a95f787dbeb138c3f09aadf5c65a7db528c7b604bad05·...·]-21">}</span><span·class="p">,</span><span·class="w">246 ··········</span><span·class="p"·data-group-id="0355572813-21">{</span><span·class="p"·data-group-id="0355572813-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="0355572813[·...·truncated·by·diffoscope;·len:·105,·SHA:·b1686d2664aaf63113a782a1a12bdfe1305121ca160a1d6f8f9ef9b27184e1cf·...·]-21">}</span><span·class="p">,</span><span·class="w">
247 ··········</span><span·class="p"·data-group-id="5050712122-23">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-24[·...·truncated·by·diffoscope;·len:·102,·SHA:·cff3ded9d1d8393f84486e022b9d1dbb8878ee84ffe9128e7f839d2101cb4448·...·]-23">}</span><span·class="p">,</span><span·class="w">247 ··········</span><span·class="p"·data-group-id="0355572813-23">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-24[·...·truncated·by·diffoscope;·len:·102,·SHA:·7a1afff8c55284940d76f6c00873b6e246e89944c225ad63d0660bf282609716·...·]-23">}</span><span·class="p">,</span><span·class="w">
248 ··········</span><span·class="p"·data-group-id="5050712122-25">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-[·...·truncated·by·diffoscope;·len:·104,·SHA:·2e7c5e640ebec22a070e5f2e0dc8db4c981a0459abfbda3b5fd9285e16852417·...·]-25">}</span><span·class="p">,</span><span·class="w">248 ··········</span><span·class="p"·data-group-id="0355572813-25">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-[·...·truncated·by·diffoscope;·len:·104,·SHA:·ca41cea535e9c50ff382009e45bde2999af646f7e0fe02af07f61d5f3caf4d77·...·]-25">}</span><span·class="p">,</span><span·class="w">
249 ··········</span><span·class="p"·data-group-id="5050712122-27">{</span><span·class="p"·data-group-id="5050712122-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="5050712122[·...·truncated·by·diffoscope;·len:·105,·SHA:·131e8d00634b4fed3c2b430bd7da881d6717fe224cb2c5c6f0f5c7e3b21dc109·...·]-27">}</span><span·class="p">,</span><span·class="w">249 ··········</span><span·class="p"·data-group-id="0355572813-27">{</span><span·class="p"·data-group-id="0355572813-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="0355572813[·...·truncated·by·diffoscope;·len:·105,·SHA:·71647039f1c3256bd883882c4b47ba7195b23b7b88a2833e77d0be8d960e48c6·...·]-27">}</span><span·class="p">,</span><span·class="w">
250 ··········</span><span·class="p"·data-group-id="5050712122-29">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-[·...·truncated·by·diffoscope;·len:·104,·SHA:·fe3c8771a3e3de0aa3d38dbfb2554ce22ed8ce9a13adb237743ccf06887765be·...·]-29">}</span><span·class="p">,</span><span·class="w">250 ··········</span><span·class="p"·data-group-id="0355572813-29">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-[·...·truncated·by·diffoscope;·len:·104,·SHA:·067636ac98ec9c9d2527aa3564162d87d84b7322e2677979b7c49a5a0261b345·...·]-29">}</span><span·class="p">,</span><span·class="w">
251 ··········</span><span·class="p"·data-group-id="5050712122-31">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-32"[·...·truncated·by·diffoscope;·len:·101,·SHA:·a8ba26549a5e552e1ad595a3308f98e86566b68cbfc39669fb9f9a80bc4ede7f·...·]-31">}</span><span·class="p">,</span><span·class="w">251 ··········</span><span·class="p"·data-group-id="0355572813-31">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-32"[·...·truncated·by·diffoscope;·len:·101,·SHA:·10e910774fc860172cc82d67a31f50954a4f6c669a312148af30a66dd63b69e7·...·]-31">}</span><span·class="p">,</span><span·class="w">
252 ··········</span><span·class="p"·data-group-id="5050712122-33">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-34"[·...·truncated·by·diffoscope;·len:·101,·SHA:·91c8e6a50ec27a1cd235583fef7ad43ede82bdf3608432af00a976b76d6da899·...·]-33">}</span><span·class="p">,</span><span·class="w">252 ··········</span><span·class="p"·data-group-id="0355572813-33">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-34"[·...·truncated·by·diffoscope;·len:·101,·SHA:·965889a61a3190e194a393938a9d834d5267e163473ce607b84689f8dff4e1e8·...·]-33">}</span><span·class="p">,</span><span·class="w">
253 ··········</span><span·class="p"·data-group-id="5050712122-35">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-36">[·...·truncated·by·diffoscope;·len:·100,·SHA:·0d1f6d67cc34ed6d526ffa4c024e44204783c3f546c9f21802a7eea1687660ad·...·]-35">}</span><span·class="p">,</span><span·class="w">253 ··········</span><span·class="p"·data-group-id="0355572813-35">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-36">[·...·truncated·by·diffoscope;·len:·100,·SHA:·e9b517045d4eaa0858151d0e131cfa72bf36237efe9af35e6e4ff73224c17af1·...·]-35">}</span><span·class="p">,</span><span·class="w">
254 ··········</span><span·class="p"·data-group-id="5050712122-37">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-38[·...·truncated·by·diffoscope;·len:·101,·SHA:·e74bf9cd6a15ffec4cf7d8ccd71c7c3f3c5549fa257e0313e688e38e715509e0·...·]-37">}</span><span·class="p">,</span><span·class="w">254 ··········</span><span·class="p"·data-group-id="0355572813-37">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-38[·...·truncated·by·diffoscope;·len:·101,·SHA:·2a3e7bb848d5bac0864e51aac462e7bc034c59c46a16a88327477c92432fa9a3·...·]-37">}</span><span·class="p">,</span><span·class="w">
255 ··········</span><span·class="p"·data-group-id="5050712122-39">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-40">[·...·truncated·by·diffoscope;·len:·99,·SHA:·77a54d7c339efe4c7d0af863070f21719872e422463f8d42d5738ed7ee391a21·...·]-39">}</span><span·class="p">,</span><span·class="w">255 ··········</span><span·class="p"·data-group-id="0355572813-39">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-40">[·...·truncated·by·diffoscope;·len:·99,·SHA:·5a9574ab606680387977d7af10aa58282a2f5ab174a2d3e35c7298558826f9f0·...·]-39">}</span><span·class="p">,</span><span·class="w">
256 ··········</span><span·class="p"·data-group-id="5050712122-41">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-42[·...·truncated·by·diffoscope;·len:·101,·SHA:·44051186672ea813680377b8ba6c79ae3c4599b722ca1320bd101c5bf5978ba7·...·]-41">}</span><span·class="p">,</span><span·class="w">256 ··········</span><span·class="p"·data-group-id="0355572813-41">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-42[·...·truncated·by·diffoscope;·len:·101,·SHA:·c9ae6ff8ba920251ec877a58f8721d5f074a816a3d3f80140ddf5b7af2c50785·...·]-41">}</span><span·class="p">,</span><span·class="w">
257 ··········</span><span·class="p"·data-group-id="5050712122-43">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-44">}[·...·truncated·by·diffoscope;·len:·98,·SHA:·42bae6be263341e24d26c51213e887c0a66ae94f69f6bcb7c063e0f5339b693b·...·]-43">}</span><span·class="p">,</span><span·class="w">257 ··········</span><span·class="p"·data-group-id="0355572813-43">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-44">}[·...·truncated·by·diffoscope;·len:·98,·SHA:·57dedc7a0dfc0d6b82933ad3b56e5089d2622e42c8569c25e68d739b3564c4d0·...·]-43">}</span><span·class="p">,</span><span·class="w">
258 ··········</span><span·class="p"·data-group-id="5050712122-45">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-46">[·...·truncated·by·diffoscope;·len:·98,·SHA:·ac7fce3427b2a719f1c8cc47bafe3a3a25f85b73ceca89427f8e7dddd1af4c68·...·]-45">}</span><span·class="p">,</span><span·class="w">258 ··········</span><span·class="p"·data-group-id="0355572813-45">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-46">[·...·truncated·by·diffoscope;·len:·98,·SHA:·bb21905debcfacb214522f7de0312d9677c6f6285b8a551acb63f8e202a2b996·...·]-45">}</span><span·class="p">,</span><span·class="w">
259 ··········</span><span·class="p"·data-group-id="5050712122-47">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-48">}</[·...·truncated·by·diffoscope;·len:·203,·SHA:·870b6fd4e11deb9b0a802761ef14b38a5055ddb3064925b66f77c5b78031542a·...·]-9">}</span><span·class="p">,</span><span·class="w">259 ··········</span><span·class="p"·data-group-id="0355572813-47">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-48">}</[·...·truncated·by·diffoscope;·len:·203,·SHA:·459b8e2da81dca64719dafbec38dcd493252f5604709bf9ca273c74ae3200bc1·...·]-9">}</span><span·class="p">,</span><span·class="w">
260 ··</span><span·class="p"·data-group-id="5050712122-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="0355572813-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="5050712122-50">[</span><span·class="p"·data-group-id="5050712122-51">{</span><span·class="p"·data-group-id="5050712122-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:·b749412a961cf84033360807d856077932d8d76487e4882daa5ab525199fabdd·...·]-51">}</span><span·class="p">,</span><span·class="w">261 ········</span><span·class="p"·data-group-id="0355572813-50">[</span><span·class="p"·data-group-id="0355572813-51">{</span><span·class="p"·data-group-id="0355572813-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:·f91d137b80f859ab75cbaff95089df39781167e3d0ce79dbd244378aafb1d828·...·]-51">}</span><span·class="p">,</span><span·class="w">
262 ·········</span><span·class="p"·data-group-id="5050712122-53">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-54">}[·...·truncated·by·diffoscope;·len:·100,·SHA:·35961b17bb6ea1c3c07117751dd2a006d995149c5290485948c3596b5a30c259·...·]-53">}</span><span·class="p">,</span><span·class="w">262 ·········</span><span·class="p"·data-group-id="0355572813-53">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-54">}[·...·truncated·by·diffoscope;·len:·100,·SHA:·f7563c8e47a97a27327d1f4da45b65c297627e9ebba8a2758f656f7cb5f9e0f5·...·]-53">}</span><span·class="p">,</span><span·class="w">
263 ·········</span><span·class="p"·data-group-id="5050712122-55">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-56">[·...·truncated·by·diffoscope;·len:·101,·SHA:·2ceead7e13cd232af502da538d84e49a1e7dee55129490aee46f4a974688c4b7·...·]-55">}</span><span·class="p">,</span><span·class="w">263 ·········</span><span·class="p"·data-group-id="0355572813-55">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-56">[·...·truncated·by·diffoscope;·len:·101,·SHA:·ae36a0b370f5973f04e1865568be575c3160fec0e2fadfe9ddea373111243561·...·]-55">}</span><span·class="p">,</span><span·class="w">
264 ·········</span><span·class="p"·data-group-id="5050712122-57">{</span><span·class="p"·data-group-id="5050712122-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="5050712122-58">[·...·truncated·by·diffoscope;·len:·101,·SHA:·2ceead7e13cd232af502da538d84e49a1e7dee55129490aee46f4a974688c4b7·...·]-57">}</span><span·class="p">,</span><span·class="w">264 ·········</span><span·class="p"·data-group-id="0355572813-57">{</span><span·class="p"·data-group-id="0355572813-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="0355572813-58">[·...·truncated·by·diffoscope;·len:·101,·SHA:·ae36a0b370f5973f04e1865568be575c3160fec0e2fadfe9ddea373111243561·...·]-57">}</span><span·class="p">,</span><span·class="w">
265 ·········</span><span·class="p"·data-group-id="5050712122-59">{</span><span·class="p"·data-group-id="5050712122-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="5050712122[·...·truncated·by·diffoscope;·len:·214,·SHA:·82af15fd3667a596acfbc4bea1e3df86122fbf0bafec69d15e4f63d42938243f·...·]-49">}</span><span·class="p">,</span><span·class="w">265 ·········</span><span·class="p"·data-group-id="0355572813-59">{</span><span·class="p"·data-group-id="0355572813-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="0355572813[·...·truncated·by·diffoscope;·len:·214,·SHA:·9b4d499c1f05a96e3b44752da6703752ea91aa3cf00a9c0d7a950020c2cf552f·...·]-49">}</span><span·class="p">,</span><span·class="w">
266 ··</span><span·class="p"·data-group-id="5050712122-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="0355572813-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="5050712122-62">[</span><span·class="p"·data-group-id="5050712122-63">{</span><span·class="p"·data-group-id="5050712122-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:·9ff4e47cc915a925b3431a0a79ff37ac562dec94a9938c4620ab07001d1eb042·...·]-63">}</span><span·class="p">,</span><span·class="w">267 ··········</span><span·class="p"·data-group-id="0355572813-62">[</span><span·class="p"·data-group-id="0355572813-63">{</span><span·class="p"·data-group-id="0355572813-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:·55d1f918612bc1ef79559a4e0df87978733dccbf61bac721821b5bdf03d6887b·...·]-63">}</span><span·class="p">,</span><span·class="w">
268 ···········</span><span·class="p"·data-group-id="5050712122-65">{</span><span·class="p"·data-group-id="5050712122-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="50507121[·...·truncated·by·diffoscope;·len:·105,·SHA:·3441ebe4cdc848397b3a09d6afa83860aa5da27927ca102286f44dc7a8578421·...·]-65">}</span><span·class="p">,</span><span·class="w">268 ···········</span><span·class="p"·data-group-id="0355572813-65">{</span><span·class="p"·data-group-id="0355572813-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="03555728[·...·truncated·by·diffoscope;·len:·105,·SHA:·933fdfc857fabaeab30bf5c5c3d206258ebf299ce94bfe1f88e2a5f7c145875e·...·]-65">}</span><span·class="p">,</span><span·class="w">
269 ···········</span><span·class="p"·data-group-id="5050712122-67">{</span><span·class="p"·data-group-id="5050712122-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-grou[·...·truncated·by·diffoscope;·len:·227,·SHA:·3c12bc64f2a199b8f406b2525df7d18828d8a078919cf9788635360651918fac·...·]-61">}</span><span·class="p">,</span><span·class="w">269 ···········</span><span·class="p"·data-group-id="0355572813-67">{</span><span·class="p"·data-group-id="0355572813-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-grou[·...·truncated·by·diffoscope;·len:·227,·SHA:·48a89019b8e53f0408c5ec760ed411338e16287da964532e1bb3db1a40292b49·...·]-61">}</span><span·class="p">,</span><span·class="w">
270 ··</span><span·class="p"·data-group-id="5050712122-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="5050712122-70">[</span><span·class="p"·data-group-id="5050712122-71">{</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·415,·SHA:·98b5757c04c5e0144f8c3d598318ae70bb08e258e08f22c1a14a20624f9a5774·...·]-69">}</span><span·class="p">,</span><span·class="w">270 ··</span><span·class="p"·data-group-id="0355572813-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="0355572813-70">[</span><span·class="p"·data-group-id="0355572813-71">{</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·415,·SHA:·74be7e3bddfdfaa1a2d9ed0a038d153c002643a37ed847c7510fb55994676d9b·...·]-69">}</span><span·class="p">,</span><span·class="w">
271 ··</span><span·class="p"·data-group-id="5050712122-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="5050712122-74">[</span><span·class="p"·data-group-id="5050712122-75">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·545,·SHA:·8469e8deb7265c8ff942f068cf57b51b71ab55b7103769f47321c3f4ca0aee33·...·]-7">}</span><span·class="gp·unselectable">271 ··</span><span·class="p"·data-group-id="0355572813-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="0355572813-74">[</span><span·class="p"·data-group-id="0355572813-75">{</span><span·class="p"[·...·truncated·by·diffoscope;·len:·545,·SHA:·265442512eb96cbb7385881e010356cdbe0264309bd2ed280d6e8bc4206eb47c·...·]-7">}</span><span·class="gp·unselectable">
272 5&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="5050712122-77">(</span><span·class="p"·data-group-id="5050712122-77">)</span><span·class="p">.</span><span·class="w">272 5&gt;·</span><span·class="nc">cprof</span><span·class="p">:</span><span·class="nf">stop</span><span·class="p"·data-group-id="0355572813-77">(</span><span·class="p"·data-group-id="0355572813-77">)</span><span·class="p">.</span><span·class="w">
273 </span><span·class="mi">12625</span></code></pre><p>The·example·shows·some·details·of·how·<a·href="../../../../lib/stdlib-6.2.1/doc/html/lists.html#sort/1"><code·class="inline">lists:sort/1</code></a>·works.·It·used·6173273 </span><span·class="mi">12625</span></code></pre><p>The·example·shows·some·details·of·how·<a·href="../../../../lib/stdlib-6.2.1/doc/html/lists.html#sort/1"><code·class="inline">lists:sort/1</code></a>·works.·It·used·6173
Max diff block lines reached; 158/84913 bytes (0.19%) 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="9055181684-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="9055181684-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="9055181684-2">(</span><[·...·truncated·by·diffoscope;·len:·137,·SHA:·0effb34460f075a821fda2b9b23b7c91b274a525d6129602afc1c31f528d293a·...·]-2">)</span><span·class="p">.</span><span·class="w">213 </span><span·class="nf">sum</span><span·class="p"·data-group-id="8038312027-1">(</span><span·class="n">L</span><span·class="p"·data-group-id="8038312027-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="8038312027-2">(</span><[·...·truncated·by·diffoscope;·len:·137,·SHA:·76f6173a329c7cf1d432372a07386275d63a71263ff9936391ab196c89729a47·...·]-2">)</span><span·class="p">.</span><span·class="w">
214 </span><span·class="nf">sum</span><span·class="p"·data-group-id="9055181684-3">(</span><span·class="p"·data-group-id="9055181684-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9055181684-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·17bb113636d56b0438b24967589cc20d391ff12b70a183b03692a911a21707a3·...·]-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="8038312027-3">(</span><span·class="p"·data-group-id="8038312027-4">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="8038312027-4">]</span><span·class="p">,</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·462,·SHA:·612c15241aeb5ec8d6d5c5cb7e36120dc9b108f2ed216552bc260c70564b875b·...·]-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="9055181684-6">(</span><span·class="p"·data-group-id="9055181684-7">[</span><span·class="p"·data-group-id="9055181684-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="9055181684-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="8038312027-6">(</span><span·class="p"·data-group-id="8038312027-7">[</span><span·class="p"·data-group-id="8038312027-7">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="8038312027-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="9055181684-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="9055181684-9">(</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·9f69f94906d38b45769c6fbb3c38053a3b3043bbad7dd64b2c56f2f5f4c7f9d3·...·]-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="8038312027-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="8038312027-9">(</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·179c0e6cbcca03dead013f01faad3c14c2e992ab1d7dbfb54d908865a4ad6912·...·]-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="9055181684-10">(</span><span·class="p"·data-group-id="9055181684-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="8038312027-10">(</span><span·class="p"·data-group-id="8038312027-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="9055181684-11">(</span><span·class="p"·data-group-id="9055181684-11">)</span><span·class="w">·</span><span·class="p"·data-group-id="9055181684-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="8038312027-11">(</span><span·class="p"·data-group-id="8038312027-11">)</span><span·class="w">·</span><span·class="p"·data-group-id="8038312027-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="9055181684-12">(</span><span·class="n">L</span><span·class="p"·data-group-id="9055181684-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="9055181684-13">(</spa[·...·truncated·by·diffoscope;·len:·140,·SHA:·3159c8414d026b09df1415b5b7c0dbbaef5c50a72690e6142da0838c9460d29c·...·]-13">)</span><span·class="p">.</span><span·class="w">221 </span><span·class="nf">sum</span><span·class="p"·data-group-id="8038312027-12">(</span><span·class="n">L</span><span·class="p"·data-group-id="8038312027-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="8038312027-13">(</spa[·...·truncated·by·diffoscope;·len:·140,·SHA:·6a54dd12c18e59e933acb0f928e5f6c2c670f8f16c32cf692846383b4f304074·...·]-13">)</span><span·class="p">.</span><span·class="w">
222 </span><span·class="nf">sum</span><span·class="p"·data-group-id="9055181684-14">(</span><span·class="p"·data-group-id="9055181684-15">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="9055181684-15">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·467,·SHA:·7f7258f35e11175ae3c6c1cce69a60c9f5b0d9ccd69a376bd28864814450c4ca·...·]-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="8038312027-14">(</span><span·class="p"·data-group-id="8038312027-15">[</span><span·class="n">H</span><span·class="p">|</span><span·class="n">T</span><span·class="p"·data-group-id="8038312027-15">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·467,·SHA:·cfc4ead4bce7d88de637f29835cce66aa7ae6b09af825379969a192f19713c3b·...·]-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="9055181684-17">(</span><span·class="p"·data-group-id="9055181684-18">[</span><span·class="p"·data-group-id="9055181684-18">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="9055181684-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="8038312027-17">(</span><span·class="p"·data-group-id="8038312027-18">[</span><span·class="p"·data-group-id="8038312027-18">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Sum</span><span·class="p"·data-group-id="8038312027-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="9055181684-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="9055181684-20">(</[·...·truncated·by·diffoscope;·len:·46,·SHA:·722672a047c2dab307275f6148737628057a4bf103691243f5f196c14af03f06·...·]-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="8038312027-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="8038312027-20">(</[·...·truncated·by·diffoscope;·len:·46,·SHA:·a7df3ae93c4bd2cb030b4eec779ee575227a7f25b030222ef1c0f9d2b58dec93·...·]-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="9055181684-21">(</span><span·class="p"·data-group-id="9055181684-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="8038312027-21">(</span><span·class="p"·data-group-id="8038312027-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="9055181684-22">(</span><span·class="p"·data-group-id="9055181684-22">)</span><span·class="w">·</span><span·class="p"·data-group-id="9055181684-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="8038312027-22">(</span><span·class="p"·data-group-id="8038312027-22">)</span><span·class="w">·</span><span·class="p"·data-group-id="8038312027-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.1/doc/html/erl_scan.html"><code·class="inline">erl_scan</code></a>·and·<a·href="../../../../lib/stdlib-6.2.1/doc/html/erl_parse.html"><code·class="inline">erl_parse</code></a>,·<a·href="../../../../lib/kernel-10.2.3/doc/html/file.html#consult/1"><code·class="inline">file:consult/1</code></a>,·or·<a·href="../../../../lib/stdlib-6.2.1/doc/html/io.html#read/2"><code·class="inline">io:read/2</code></a>.·The173 <a·href="../../../../lib/stdlib-6.2.1/doc/html/erl_scan.html"><code·class="inline">erl_scan</code></a>·and·<a·href="../../../../lib/stdlib-6.2.1/doc/html/erl_parse.html"><code·class="inline">erl_parse</code></a>,·<a·href="../../../../lib/kernel-10.2.3/doc/html/file.html#consult/1"><code·class="inline">file:consult/1</code></a>,·or·<a·href="../../../../lib/stdlib-6.2.1/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.3/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="4174619091-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="4174619091-1">)</span><span·class="p">.</span><span·class="w">178 slightly·modified·benchmark·function·from·module·<a·href="../../../../lib/kernel-10.2.3/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="9051771355-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="9051771355-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="4174619091-2">(</span><span·class="p"·data-group-id="4174619091-3">[</span><span·class="ss">create_file_slow</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="4174619091-3">]</span><span·class="p"·data-group-id="41746190[·...·truncated·by·diffoscope;·len:·2,·SHA:·1da51b8d8ff98f6a48f80ae79fe3ca6c26e1abb7b7d125259255d6d2b875ea08·...·]-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="9051771355-2">(</span><span·class="p"·data-group-id="9051771355-3">[</span><span·class="ss">create_file_slow</span><span·class="p">/</span><span·class="mi">2</span><span·class="p"·data-group-id="9051771355-3">]</span><span·class="p"·data-group-id="90517713[·...·truncated·by·diffoscope;·len:·2,·SHA:·02d20bbd7e394ad5999a4cebabac9619732c343a4cac99470c03e23ba2bdc2bc·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
180 </span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="4174619091-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="4174619091-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·145,·SHA:·632ca59244f3bcd7124f8ea62c4208bd679a49bbcc208682ea384186ea3e3326·...·]-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="9051771355-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="9051771355-4">)</span><span·class="w">·</span><span·class="k">when</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·145,·SHA:·344e91e58ff59aab1a9b929d0e95698a748103c2b9d97dc1e56643da71966f1a·...·]-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="4174619091-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="4174619091-6">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">181 ····</span><span·class="p"·data-group-id="9051771355-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="9051771355-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="4174619091-7">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4174619091-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:·3ae346d5b5ff554f027dcd87c49824ecd7404e678a2dba8531a3fb232a7b44e6·...·]-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="9051771355-7">(</span><span·class="n">Name</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9051771355-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:·34d4d0eb6e94faa58942676883b829e3e7ac7cbfbb4fae281084d2abff9abf8e·...·]-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="4174619091-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="9051771355-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="4174619091-10">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="4174619091-11">(</span><span·class="n">X</span><span·class="p"·data-group-id="4174619091-11">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·258,·SHA:·49dc18ff4ec30752262f985667d496fc53385d9cabd6d30d0813c110e9ceffbf·...·]-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="9051771355-10">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="9051771355-11">(</span><span·class="n">X</span><span·class="p"·data-group-id="9051771355-11">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·258,·SHA:·90fef643c243cc14480806e9088eab460c202fa6754ffb66dccc6c339dc31c23·...·]-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="4174619091-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="4174619091-13">)</span><span·class="p"·data-group-id="4174619091-10">)</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·1aef793d4de70738b01d1c7208b05aebe614072998ffaba44ee010ddd1a9795c·...·]-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="9051771355-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="9051771355-13">)</span><span·class="p"·data-group-id="9051771355-10">)</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·16,·SHA:·eb7d905b863b6f2d438dc06fafa4dc80b6b7e1e77a5636b3dc0a48200e7e3ec9·...·]-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="4174619091-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="4174619091-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="9051771355-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="9051771355-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="4174619091-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="4174619091-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="9051771355-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="9051771355-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="4174619091-16">(</span><span·class="n">FD</span><span·class="p"·data-group-id="4174619091-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="9051771355-16">(</span><span·class="n">FD</span><span·class="p"·data-group-id="9051771355-16">)</span><span·class="p">.</span><span·class="w">
  
192 </span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="4174619091-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="4174619091-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="9051771355-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="9051771355-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="4174619091-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="4174619091-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="9051771355-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="9051771355-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="4174619091-19">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4174619091-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:·0a71de5b3a358890a48614bf2fcd3e312b53fcf101187194f29b3398d64117c8·...·]-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="9051771355-19">(</span><span·class="n">FD</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9051771355-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:·ab61d535b1849a21a04bd55b0d46a498696acc846aeb9452d3e170abfde67215·...·]-19">)</span><span·class="p">,</span><span·class="w">
196 ····</span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="4174619091-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"[·...·truncated·by·diffoscope;·len:·772,·SHA:·b89f0df72899ab7f253a2296df7226fe0994a63ec17d83dc0879b2f0386aa30a·...·]-1">)</span><span·class="p">.</span><span·class="gp·unselectable">196 ····</span><span·class="nf">create_file_slow</span><span·class="p"·data-group-id="9051771355-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"[·...·truncated·by·diffoscope;·len:·772,·SHA:·2899fbbeb79d477a3df30a84ed6ab1229bb6175b546d2e5313a124153adac2c3·...·]-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="0522920535-3">(</span><span·class="p"·data-group-id="0522920535-3">)</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="2484812892-3">(</span><span·class="p"·data-group-id="2484812892-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="0522920535-4">(</span><span·class="p"·data-group-id="0522920535-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="2484812892-4">(</span><span·class="p"·data-group-id="2484812892-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="7416882105-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="1845020978-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="7416882105-2">[</span><span·class="p"·data-group-id="7416882105-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="7416882105-3">}</span><span·class="p">,</span><span·class="w">200 ·</span><span·class="p"·data-group-id="1845020978-2">[</span><span·class="p"·data-group-id="1845020978-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="1845020978-3">}</span><span·class="p">,</span><span·class="w">
201 ··</span><span·class="p"·data-group-id="7416882105-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="7416882105-4">}</span><span·class="p">,</span><span·class="w">201 ··</span><span·class="p"·data-group-id="1845020978-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="1845020978-4">}</span><span·class="p">,</span><span·class="w">
202 ··</span><span·class="p"·data-group-id="7416882105-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="7416882105-5">}</span><span·class="p">,</span><span·class="w">202 ··</span><span·class="p"·data-group-id="1845020978-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="1845020978-5">}</span><span·class="p">,</span><span·class="w">
203 ··</span><span·class="p"·data-group-id="7416882105-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="7416882105-6">}</span><span·class="p"·data-group-id="7416882105-2">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·6820d0a4cacd1cfbc44187d5cbc85189a4645a31e246a8fc7eed88fbf93d9523·...·]-1">}</span><span·class="p">.</span><span·class="w">203 ··</span><span·class="p"·data-group-id="1845020978-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="1845020978-6">}</span><span·class="p"·data-group-id="1845020978-2">]</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·13a658e44291abb8540903d6fa05b771c013f1ac61d4b001a3d091cd8285d2c4·...·]-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="7416882105-7">[</span><span·class="p"·data-group-id="7416882105-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:·c9f1d01cb83781456963f45f17dfe6c7fd6f6af4f35fa50d98b17becd60fea0e·...·]-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="1845020978-7">[</span><span·class="p"·data-group-id="1845020978-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:·c147e4f8e8c633d1f1f8adc6f8fc888a9fe8cccf1218d40e7a437844b8dbac05·...·]-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="7950771597-1">[</span><span·class="p"·data-group-id="7950771597-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:·515ecc047da62d322f59c682535d93d5ead4a8ea7dce4587288f3ccb580b920b·...·]-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="6383639326-1">[</span><span·class="p"·data-group-id="6383639326-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:·a1570c0c6f72df1f222a267cc807eae45e5c0e8c4795d2dd68a78238dedac198·...·]-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="2765090202-1">{</span><span·class="p"·data-group-id="2765090202-2">[</span><span·class="p"·data-group-id="2765090202-3">{</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="w">·····························</span><span·class="mi">0</[·...·truncated·by·diffoscope;·len:·259,·SHA:·8728faa1883b91532b68decd77260c1a177cc64ff4153378d1eead475d48badd·...·]-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="2651903550-1">{</span><span·class="p"·data-group-id="2651903550-2">[</span><span·class="p"·data-group-id="2651903550-3">{</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="w">·····························</span><span·class="mi">0</[·...·truncated·by·diffoscope;·len:·259,·SHA:·d3e55fb9d9698849f561c2244c54e5ce190f5b17c5e1e966116688ead94cb2bf·...·]-2">]</span><span·class="p">,</span><span·class="w">
218 ·</span><span·class="p"·data-group-id="2765090202-4">{</span><span·class="w">·</span><span·class="p"·data-group-id="2765090202-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:·322,·SHA:·7c172881555a860283e8124c44625f9b1ca6c73678b7bd424c4d3ceac910620e·...·]-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="2651903550-4">{</span><span·class="w">·</span><span·class="p"·data-group-id="2651903550-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:·322,·SHA:·1bcbc83a0e602376c08a3f80edf4120a30ef3e42a4a0f675505cad8730e81bfe·...·]-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="2765090202-6">[</span><span·class="p"·data-group-id="2765090202-7">{</span><span·class="p"·data-group-id="2765090202-8">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="m[·...·truncated·by·diffoscope;·len:·351,·SHA:·f391940c80e02260732f6be94d3d5e9e7c21b041fbebcc8664cb5e9d1d5789d0·...·]-7">}</span><span·class="p">,</span><span·class="w">219 ·</span><span·class="p"·data-group-id="2651903550-6">[</span><span·class="p"·data-group-id="2651903550-7">{</span><span·class="p"·data-group-id="2651903550-8">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_file_slow</span><span·class="p">,</span><span·class="m[·...·truncated·by·diffoscope;·len:·351,·SHA:·2e64562c6801922275c44dd8b8d84f500c06774d172b7e1c8eb0c66b63f6e865·...·]-7">}</span><span·class="p">,</span><span·class="w">
220 ··</span><span·class="p"·data-group-id="2765090202-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">,</sp[·...·truncated·by·diffoscope;·len:·206,·SHA:·4c5fb03cd89f8ce703ba29321feb8ea6de1435322c58cc041b8867f9c5f8fab0·...·]-1">}</span><span·class="p">.</span><span·class="w">220 ··</span><span·class="p"·data-group-id="2651903550-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">,</sp[·...·truncated·by·diffoscope;·len:·206,·SHA:·996f7757c1c458d501b29ba975b9b4deeb6ce8c0fe33a60a02672f8478ea9ab7·...·]-1">}</span><span·class="p">.</span><span·class="w">
  
221 </span><span·class="p"·data-group-id="2765090202-10">{</span><span·class="p"·data-group-id="2765090202-11">[</span><span·class="p"·data-group-id="2765090202-12">{</span><span·class="p"·data-group-id="2765090202-13">{</span><span·class="ss">fprof</span><span·class="p">,</span><span·class="ss">ap[·...·truncated·by·diffoscope;·len:·463,·SHA:·6975c40203129d98e778a6b4a99c7ee84417c1cc527a2da8df2d4119175674c2·...·]-11">]</span><span·class="p">,</span><span·class="w">221 </span><span·class="p"·data-group-id="2651903550-10">{</span><span·class="p"·data-group-id="2651903550-11">[</span><span·class="p"·data-group-id="2651903550-12">{</span><span·class="p"·data-group-id="2651903550-13">{</span><span·class="ss">fprof</span><span·class="p">,</span><span·class="ss">ap[·...·truncated·by·diffoscope;·len:·463,·SHA:·62275a4d997f21421d0758cebc196f5195734e22a69965afa0adc7370b5f7f17·...·]-11">]</span><span·class="p">,</span><span·class="w">
222 ·</span><span·class="p"·data-group-id="2765090202-14">{</span><span·class="w">·</span><span·class="p"·data-group-id="2765090202-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:·325,·SHA:·62f813b6df8b3927c40bb6660f037e7ef7a833c194334d455d712b355f5b81a2·...·]-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="2651903550-14">{</span><span·class="w">·</span><span·class="p"·data-group-id="2651903550-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:·325,·SHA:·b7f2262fa42595c9e924a464053399ad149bb4cb9431d4c36861fdc42cf68eb9·...·]-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="2765090202-16">[</span><span·class="p"·data-group-id="2765090202-17">{</span><span·class="p"·data-group-id="2765090202-18">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">close</span><span·class="p">,</span><span·class="mi">1</s[·...·truncated·by·diffoscope;·len:·355,·SHA:·ee2241c3a6624054f2ec4882f5f5d3d46b34f6f08c6d3886a13cc61c05343eaa·...·]-17">}</span><span·class="p">,</span><span·class="w">223 ·</span><span·class="p"·data-group-id="2651903550-16">[</span><span·class="p"·data-group-id="2651903550-17">{</span><span·class="p"·data-group-id="2651903550-18">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">close</span><span·class="p">,</span><span·class="mi">1</s[·...·truncated·by·diffoscope;·len:·355,·SHA:·bbdeb82bd1def48c5e3669fe6540cd9e7e7c1cd7a1a049962433cd4e2b45c226·...·]-17">}</span><span·class="p">,</span><span·class="w">
224 ··</span><span·class="p"·data-group-id="2765090202-19">{</span><span·class="p"·data-group-id="2765090202-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="276509020[·...·truncated·by·diffoscope;·len:·301,·SHA:·b1b96c0021ef3ce2c96f5b6bfdaee5085e5fe564f134e1b63db4c350b8053331·...·]-19">}</span><span·class="p">,</span><span·class="w">224 ··</span><span·class="p"·data-group-id="2651903550-19">{</span><span·class="p"·data-group-id="2651903550-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="265190355[·...·truncated·by·diffoscope;·len:·301,·SHA:·b4d58b0a7c7a7c8abd34a9ba6b54c51813fe13b3cc16e364183bd2d678ee0936·...·]-19">}</span><span·class="p">,</span><span·class="w">
225 ··</span><span·class="p"·data-group-id="2765090202-21">{</span><span·class="p"·data-group-id="2765090202-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="2765090202-22">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·fc26ba08da7dcb5c6c34c0a4f19756f5a7224004d6609af86e5fd1ddfca1663f·...·]-21">}</span><span·class="p">,</span><span·class="w">225 ··</span><span·class="p"·data-group-id="2651903550-21">{</span><span·class="p"·data-group-id="2651903550-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="2651903550-22">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·e3ce6492f9cdb65381f0c1b3cad9fa88dd5a1967969bc351dc9c20fb18fdaf9b·...·]-21">}</span><span·class="p">,</span><span·class="w">
226 ··</span><span·class="p"·data-group-id="2765090202-23">{</span><span·class="p"·data-group-id="2765090202-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="2765090202-24">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·26d3a248d4a73381b48152315736cf97b05fb7077d5fedc939d4c0fb33c11def·...·]-23">}</span><span·class="p">,</span><span·class="w">226 ··</span><span·class="p"·data-group-id="2651903550-23">{</span><span·class="p"·data-group-id="2651903550-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="2651903550-24">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·e0813cae3354a9224364cb78edeed9689bc8d4578f8559bfbf9ebb5f0fb32114·...·]-23">}</span><span·class="p">,</span><span·class="w">
227 ··</span><span·class="p"·data-group-id="2765090202-25">{</span><span·class="p"·data-group-id="2765090202-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="2765090202-26">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·0359f163586979c93c106d507a7af57ec930a869e86557980ec40f35f3cb5be2·...·]-25">}</span><span·class="p">,</span><span·class="w">227 ··</span><span·class="p"·data-group-id="2651903550-25">{</span><span·class="p"·data-group-id="2651903550-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="2651903550-26">}</sp[·...·truncated·by·diffoscope;·len:·301,·SHA:·3b32e359a5be83900047725e20d7338433823949c0f03824dcb27be346203795·...·]-25">}</span><span·class="p">,</span><span·class="w">
228 ··</span><span·class="p"·data-group-id="2765090202-27">{</span><span·class="p"·data-group-id="2765090202-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="2765090202-28">}</s[·...·truncated·by·diffoscope;·len:·409,·SHA:·61bc2c0822dabc03b3e878f09a4aba341e4b1ce18eeeafad677f6b4ded09a91c·...·]-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="2651903550-27">{</span><span·class="p"·data-group-id="2651903550-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="2651903550-28">}</s[·...·truncated·by·diffoscope;·len:·409,·SHA:·ab55812289181553de5df800c2f0671d01069c6661fc656f14dd4438fc14bbe4·...·]-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.3/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.3/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.3/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.3/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.1/doc/html/lists.html#seq/2"><code·class="inline">lists:seq/2</code></a>·and·<a·href="../../../../lib/stdlib-6.2.1/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.1/doc/html/lists.html#seq/2"><code·class="inline">lists:seq/2</code></a>·and·<a·href="../../../../lib/stdlib-6.2.1/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="7047470510-1">{</span><span·class="p"·data-group-id="7047470510-2">[</span><span·class="p"·data-group-id="7047470510-3">{</span><span·class="p"·data-group-id="7047470510-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·405,·SHA:·d44e3f13ac896b40b5130ead8525e3006159980326498fcb4e0103fb2d4abcdc·...·]-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="8988217727-1">{</span><span·class="p"·data-group-id="8988217727-2">[</span><span·class="p"·data-group-id="8988217727-3">{</span><span·class="p"·data-group-id="8988217727-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·405,·SHA:·726880c47d03963dff3de1aa6431c41e8024a8f0ff8c18e880d64e5aa598a2e7·...·]-3">}</span><span·class="p">,</span><span·class="w">
250 ··</span><span·class="p"·data-group-id="7047470510-5">{</span><span·class="p"·data-group-id="7047470510-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="7047470510[·...·truncated·by·diffoscope;·len:·352,·SHA:·2887e42fe86e17e029fa8b379ffc41d77a836ce1e024c42d89eef4b84ad8f6db·...·]-2">]</span><span·class="p">,</span><span·class="w">250 ··</span><span·class="p"·data-group-id="8988217727-5">{</span><span·class="p"·data-group-id="8988217727-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="8988217727[·...·truncated·by·diffoscope;·len:·352,·SHA:·3e12416e68f7b5ab48f77356cd7cc53d1f024e62fb5960a69858ba9ce25f3a1b·...·]-2">]</span><span·class="p">,</span><span·class="w">
251 ·</span><span·class="p"·data-group-id="7047470510-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="7047470510-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:·323,·SHA:·a5c16b78ba6dc06a970e28c69f1a180f501399f02c19d7e7a2614dae7cf8d432·...·]-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="8988217727-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="8988217727-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:·323,·SHA:·324fa4ee92246e312eaf871b7cbbefbafa2b602d552cab38b555e567551bc793·...·]-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="7047470510-9">[</span><span·class="p"·data-group-id="7047470510-10">{</span><span·class="p"·data-group-id="7047470510-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:·355,·SHA:·384da333370a0084d3bb7968153f03d616ef0918d4acd764df73ff8f5b064199·...·]-10">}</span><span·class="p">,</span><span·class="w">252 ·</span><span·class="p"·data-group-id="8988217727-9">[</span><span·class="p"·data-group-id="8988217727-10">{</span><span·class="p"·data-group-id="8988217727-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:·355,·SHA:·74bc423ffbbbea93c6ceb20ff8ed53365632c490b1effbbd0d349a1797b5fb37·...·]-10">}</span><span·class="p">,</span><span·class="w">
253 ··</span><span·class="p"·data-group-id="7047470510-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:·102,·SHA:·d09be67193d640c32e0fd421bf7e270b70387b24159dcb573915a9537fdfaecd·...·]-12">}</span><span·class="p">,</span><span·class="w">253 ··</span><span·class="p"·data-group-id="8988217727-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:·102,·SHA:·330b69caa93dfcdcec55d049164c1e0f9cc99b7d7ac1a5e2d5115575268a7c17·...·]-12">}</span><span·class="p">,</span><span·class="w">
254 ··</span><span·class="p"·data-group-id="7047470510-13">{</span><span·class="p"·data-group-id="7047470510-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="70474705[·...·truncated·by·diffoscope;·len:·409,·SHA:·71c9740aadb87ec748d1a432d3a46ebcf3aded46d8940bffc20ac5cf727f4c62·...·]-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="8988217727-13">{</span><span·class="p"·data-group-id="8988217727-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="89882177[·...·truncated·by·diffoscope;·len:·409,·SHA:·e7ca3751c0ca405632faa893947a7c914a76ab1a063d4905d5ec48c93139b90e·...·]-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.3/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.3/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.3/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.3/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.3/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.3/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="6770136881-1">{</span><span·class="p"·data-group-id="6770136881-2">[</span><span·class="p"·data-group-id="6770136881-3">{</span><span·class="p"·data-group-id="6770136881-4">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write<[·...·truncated·by·diffoscope;·len:·405,·SHA:·97f9a449da6a7fb918d67d9e7b3080f04433b78a8c3f0163636a11fa5efcf71a·...·]-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="2947236222-1">{</span><span·class="p"·data-group-id="2947236222-2">[</span><span·class="p"·data-group-id="2947236222-3">{</span><span·class="p"·data-group-id="2947236222-4">{</span><span·class="ss">file</span><span·class="p">,</span><span·class="ss">write<[·...·truncated·by·diffoscope;·len:·405,·SHA:·e366a8c4b2d720067dfa231f8cdd8acb221eadebf8bc2fcb9ea223d2626252e4·...·]-3">}</span><span·class="p">,</span><span·class="w">
263 ··</span><span·class="p"·data-group-id="6770136881-5">{</span><span·class="p"·data-group-id="6770136881-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="6770136881[·...·truncated·by·diffoscope;·len:·299,·SHA:·fc5e271bf36f698b01d67ea166bd845c9ad1f3b653813e38debea92bbb883dba·...·]-5">}</span><span·class="p">,</span><span·class="w">263 ··</span><span·class="p"·data-group-id="2947236222-5">{</span><span·class="p"·data-group-id="2947236222-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="2947236222[·...·truncated·by·diffoscope;·len:·299,·SHA:·7cb61c3c96c73a0758a090145b11ca74d3124aaab714cd0fe40dc86b484763bd·...·]-5">}</span><span·class="p">,</span><span·class="w">
264 ··</span><span·class="p"·data-group-id="6770136881-7">{</span><span·class="p"·data-group-id="6770136881-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="677013688[·...·truncated·by·diffoscope;·len:·299,·SHA:·87d4e619ab64d311740c82206f2d0478c028772021195fc743444e1e77818c26·...·]-7">}</span><span·class="p">,</span><span·class="w">264 ··</span><span·class="p"·data-group-id="2947236222-7">{</span><span·class="p"·data-group-id="2947236222-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="294723622[·...·truncated·by·diffoscope;·len:·299,·SHA:·ec197604739f699a210910b2c4a56323510bc4974aad9815123107e2ee9e2fed·...·]-7">}</span><span·class="p">,</span><span·class="w">
265 ··</span><span·class="p"·data-group-id="6770136881-9">{</span><span·class="p"·data-group-id="6770136881-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="677[·...·truncated·by·diffoscope;·len:·301,·SHA:·6e60f8162110e7c3ac5803271abb6a38ed067d5c538df36a0f49b35d9092fe7e·...·]-9">}</span><span·class="p">,</span><span·class="w">265 ··</span><span·class="p"·data-group-id="2947236222-9">{</span><span·class="p"·data-group-id="2947236222-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="294[·...·truncated·by·diffoscope;·len:·301,·SHA:·caf9dbefb43fb22c3c0ef633c08e5e2cc2fb068252e1670c9f013d71c26f7f5b·...·]-9">}</span><span·class="p">,</span><span·class="w">
266 ··</span><span·class="p"·data-group-id="6770136881-11">{</span><span·class="p"·data-group-id="6770136881-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="6770136881-12">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·2100383eb44e3fada8d8a4c4c95dd8e25683df76e87f524aa661c943a5e75cbb·...·]-11">}</span><span·class="p">,</span><span·class="w">266 ··</span><span·class="p"·data-group-id="2947236222-11">{</span><span·class="p"·data-group-id="2947236222-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="2947236222-12">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·33998d2aecb3c3d4dbd156f0facf266272237ce5464b43e1df74c2081598c918·...·]-11">}</span><span·class="p">,</span><span·class="w">
267 ··</span><span·class="p"·data-group-id="6770136881-13">{</span><span·class="p"·data-group-id="6770136881-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="6770136881-14[·...·truncated·by·diffoscope;·len:·302,·SHA:·783c0e5a6e0ba0521c41851bb81922a51a3f2db0e45c36661feb9802fa6e11bd·...·]-13">}</span><span·class="p">,</span><span·class="w">267 ··</span><span·class="p"·data-group-id="2947236222-13">{</span><span·class="p"·data-group-id="2947236222-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="2947236222-14[·...·truncated·by·diffoscope;·len:·302,·SHA:·3ac4954ca2f10c9c515f75da55881dfe87bbb37c50e558a41953aa9c5096c6b7·...·]-13">}</span><span·class="p">,</span><span·class="w">
268 ··</span><span·class="p"·data-group-id="6770136881-15">{</span><span·class="p"·data-group-id="6770136881-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="677013688[·...·truncated·by·diffoscope;·len:·302,·SHA:·7600361baa7e692328eb6ed320ecbcce3e8c00a2ad762a329ac0540b16b9d763·...·]-15">}</span><span·class="p">,</span><span·class="w">268 ··</span><span·class="p"·data-group-id="2947236222-15">{</span><span·class="p"·data-group-id="2947236222-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="294723622[·...·truncated·by·diffoscope;·len:·302,·SHA:·99c1910e00c04f1a9052130bc3c969598edee71a54da4381a06d102a7fdc2af7·...·]-15">}</span><span·class="p">,</span><span·class="w">
269 ··</span><span·class="p"·data-group-id="6770136881-17">{</span><span·class="p"·data-group-id="6770136881-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="6770136[·...·truncated·by·diffoscope;·len:·302,·SHA:·141541553e9a73ad3ebecc7149003384efc604cd9f2cae5992b2887fda026015·...·]-17">}</span><span·class="p">,</span><span·class="w">269 ··</span><span·class="p"·data-group-id="2947236222-17">{</span><span·class="p"·data-group-id="2947236222-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="2947236[·...·truncated·by·diffoscope;·len:·302,·SHA:·eb2cac73c4d656910a9f49051308ac5eff2f3f4e777088924a96449e78ca4396·...·]-17">}</span><span·class="p">,</span><span·class="w">
270 ··</span><span·class="p"·data-group-id="6770136881-19">{</span><span·class="p"·data-group-id="6770136881-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:·c24a5bf0be489df7a0ebffd1be821c4cb81ca93563a13646eb82fda3dae25082·...·]-19">}</span><span·class="p">,</span><span·class="w">270 ··</span><span·class="p"·data-group-id="2947236222-19">{</span><span·class="p"·data-group-id="2947236222-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:·380cef01f6aa4d1b1a710547766b18e78c0ab23fd6fe2612c9a7e673cb464606·...·]-19">}</span><span·class="p">,</span><span·class="w">
271 ··</span><span·class="p"·data-group-id="6770136881-21">{</span><span·class="p"·data-group-id="6770136881-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:·4e37e2efc245edf1b43696c2d1514f0173e0021c40e799d29659faeaa6a23bdd·...·]-21">}</span><span·class="p">,</span><span·class="w">271 ··</span><span·class="p"·data-group-id="2947236222-21">{</span><span·class="p"·data-group-id="2947236222-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:·b01514a007a3b29a03ab39be8b5cbea2b60150dac928fe1f74b64b9c1f9a7cc3·...·]-21">}</span><span·class="p">,</span><span·class="w">
272 ··</span><span·class="p"·data-group-id="6770136881-23">{</span><span·class="p"·data-group-id="6770136881-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="6770136881-24">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·e191e7be36128588e56367a25da70f04d6c98c3751964182cad026f93e98e51b·...·]-23">}</span><span·class="p">,</span><span·class="w">272 ··</span><span·class="p"·data-group-id="2947236222-23">{</span><span·class="p"·data-group-id="2947236222-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="2947236222-24">}</s[·...·truncated·by·diffoscope;·len:·302,·SHA:·72d21fde164613beec31b241ce605f4cd3cac833fbb8658afc1077b039cad513·...·]-23">}</span><span·class="p">,</span><span·class="w">
273 ··</span><span·class="p"·data-group-id="6770136881-25">{</span><span·class="p"·data-group-id="6770136881-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:·2e071b882de3358e5dcb202616d363fd48739f7f5967f84971402954d99bb712·...·]-25">}</span><span·class="p">,</span><span·class="w">273 ··</span><span·class="p"·data-group-id="2947236222-25">{</span><span·class="p"·data-group-id="2947236222-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:·4c12ce5ac3d0198a32a6eedcdd3ea5a4966af9a1c840969b1fca3d9ebfe62f2a·...·]-25">}</span><span·class="p">,</span><span·class="w">
274 ··</span><span·class="p"·data-group-id="6770136881-27">{</span><span·class="p"·data-group-id="6770136881-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="677013[·...·truncated·by·diffoscope;·len:·302,·SHA:·da88ef6939396c7b676afa391008097496c2cb863efe27d1aa46faa618dbf906·...·]-27">}</span><span·class="p">,</span><span·class="w">274 ··</span><span·class="p"·data-group-id="2947236222-27">{</span><span·class="p"·data-group-id="2947236222-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="294723[·...·truncated·by·diffoscope;·len:·302,·SHA:·b69270e9f7a5ecfa948084fa5f0097710b016a005fc3701ab6f7c87b6d33b8c3·...·]-27">}</span><span·class="p">,</span><span·class="w">
275 ··</span><span·class="p"·data-group-id="6770136881-29">{</span><span·class="p"·data-group-id="6770136881-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="67[·...·truncated·by·diffoscope;·len:·302,·SHA:·32f9905e304290702c0f9276821dba928497abf7bd31d98af763a86e01ec6224·...·]-29">}</span><span·class="p">,</span><span·class="w">275 ··</span><span·class="p"·data-group-id="2947236222-29">{</span><span·class="p"·data-group-id="2947236222-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="29[·...·truncated·by·diffoscope;·len:·302,·SHA:·575ac2f7a8a7d837452ec573a57a1839696df3c558cf4836c48dbb3536c4a5db·...·]-29">}</span><span·class="p">,</span><span·class="w">
276 ··</span><span·class="p"·data-group-id="6770136881-31">{</span><span·class="p"·data-group-id="6770136881-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="6770136881-32">[·...·truncated·by·diffoscope;·len:·302,·SHA:·f7cc680cf8e9da96e65e945f8334774efee922bba258660ab581340fceae7f79·...·]-31">}</span><span·class="p">,</span><span·class="w">276 ··</span><span·class="p"·data-group-id="2947236222-31">{</span><span·class="p"·data-group-id="2947236222-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="2947236222-32">[·...·truncated·by·diffoscope;·len:·302,·SHA:·8a7991e05ad42f0fe161ef36c658fd32a9e0c0318874a85b517335c68c4a866e·...·]-31">}</span><span·class="p">,</span><span·class="w">
277 ··</span><span·class="p"·data-group-id="6770136881-33">{</span><span·class="p"·data-group-id="6770136881-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="677013[·...·truncated·by·diffoscope;·len:·356,·SHA:·5b613aee7c1f1c06b614cfbe33173540e1686db565fec99a376dfb172234222d·...·]-2">]</span><span·class="p">,</span><span·class="w">277 ··</span><span·class="p"·data-group-id="2947236222-33">{</span><span·class="p"·data-group-id="2947236222-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="294723[·...·truncated·by·diffoscope;·len:·356,·SHA:·a7fdb73e9987b25ac0ce74f13cdad8e34e3208722703f34fef5012669a9567e7·...·]-2">]</span><span·class="p">,</span><span·class="w">
278 ·</span><span·class="p"·data-group-id="6770136881-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:·eb6f06f5d610ba8d9b2913799968ceac19a9c4767604dff2a30f72db600f5832·...·]-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="2947236222-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:·4da8fbe08bbfbd16d215f3f1511b4a885a90b56c0d98999754bfbfccd8c56295·...·]-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="6770136881-36">[</span><span·class="w">·</span><span·class="p"·data-group-id="6770136881-36">]</span><span·class="p"·data-group-id="6770136881-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="2947236222-36">[</span><span·class="w">·</span><span·class="p"·data-group-id="2947236222-36">]</span><span·class="p"·data-group-id="2947236222-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="9418694933-1">{</span><span·class="p"·data-group-id="9418694933-2">[</span><span·class="p"·data-group-id="9418694933-3">{</span><span·class="p"·data-group-id="9418694933-4">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">drv[·...·truncated·by·diffoscope;·len:·403,·SHA:·4fa143954fd747e1738308ea2fc92ecc52460627eb684b986de01ead0385e3d1·...·]-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="9459485459-1">{</span><span·class="p"·data-group-id="9459485459-2">[</span><span·class="p"·data-group-id="9459485459-3">{</span><span·class="p"·data-group-id="9459485459-4">{</span><span·class="ss">prim_file</span><span·class="p">,</span><span·class="ss">drv[·...·truncated·by·diffoscope;·len:·403,·SHA:·5d9437cf44c259624423ffdf7dc62b512832e2971d065e21cea2895e6a9304a8·...·]-3">}</span><span·class="p">,</span><span·class="w">
286 ··</span><span·class="p"·data-group-id="9418694933-5">{</span><span·class="p"·data-group-id="9418694933-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="9418694933-6">}</[·...·truncated·by·diffoscope;·len:·297,·SHA:·922e02ad13278d5d52790500784bf78379bdee5c8e37d68c2b20f59c0c4763d1·...·]-5">}</span><span·class="p">,</span><span·class="w">286 ··</span><span·class="p"·data-group-id="9459485459-5">{</span><span·class="p"·data-group-id="9459485459-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="9459485459-6">}</[·...·truncated·by·diffoscope;·len:·297,·SHA:·e566386bfbeb87871033de661f8b90e5463e2957982fc6bbb6614ec181529604·...·]-5">}</span><span·class="p">,</span><span·class="w">
287 ··</span><span·class="p"·data-group-id="9418694933-7">{</span><span·class="p"·data-group-id="9418694933-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="9418694933-8">}</span><[·...·truncated·by·diffoscope;·len:·350,·SHA:·29fec827fd3b9ba1c7397483b60a3e58e27dc23c3ec5c403c66dd6c740155bf3·...·]-2">]</span><span·class="p">,</span><span·class="w">287 ··</span><span·class="p"·data-group-id="9459485459-7">{</span><span·class="p"·data-group-id="9459485459-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="9459485459-8">}</span><[·...·truncated·by·diffoscope;·len:·350,·SHA:·358e129f6e2d8e3ecc97207854386c24586c0d660ff96bc52b75624f7da0dccd·...·]-2">]</span><span·class="p">,</span><span·class="w">
288 ·</span><span·class="p"·data-group-id="9418694933-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</spa[·...·truncated·by·diffoscope;·len:·123,·SHA:·7329894994cb6d9e2676032d975b2289efbcf7622c0798838323aaed4518a4fb·...·]-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="9459485459-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</spa[·...·truncated·by·diffoscope;·len:·123,·SHA:·74ed3a4f1dca48257124bf213e2fcd4f61919044b4ac210e067343469ca971a5·...·]-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="9418694933-10">[</span><span·class="w">·</span><span·class="p"·data-group-id="9418694933-10">]</span><span·class="p"·data-group-id="9418694933-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="9459485459-10">[</span><span·class="w">·</span><span·class="p"·data-group-id="9459485459-10">]</span><span·class="p"·data-group-id="9459485459-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="7852402565-1">{</span><span·class="p"·data-group-id="7852402565-2">[</span><span·class="p"·data-group-id="7852402565-3">{</span><span·class="p"·data-group-id="7852402565-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·405,·SHA:·abff6f4845f5214e703ae4f60e42b71123de95aa7ab10b302d3b44a5305d33d2·...·]-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="2995538952-1">{</span><span·class="p"·data-group-id="2995538952-2">[</span><span·class="p"·data-group-id="2995538952-3">{</span><span·class="p"·data-group-id="2995538952-4">{</span><span·class="ss">foo</span><span·class="p">,</span><span·class="ss">create_[·...·truncated·by·diffoscope;·len:·405,·SHA:·954d32aa3907289dee670dc39f0e98b965c57ec7f1f5b4d20f58a43cb9e7e305·...·]-3">}</span><span·class="p">,</span><span·class="w">
295 ··</span><span·class="p"·data-group-id="7852402565-5">{</span><span·class="p"·data-group-id="7852402565-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="7852402565[·...·truncated·by·diffoscope;·len:·352,·SHA:·46d3484462b4bc032ccfbe9074011369c3c4e8e69c40337e8025eb8651970638·...·]-2">]</span><span·class="p">,</span><span·class="w">295 ··</span><span·class="p"·data-group-id="2995538952-5">{</span><span·class="p"·data-group-id="2995538952-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="2995538952[·...·truncated·by·diffoscope;·len:·352,·SHA:·fd698e7255651616ccc55783694683345095bbfb884d7edbb9550d42cffba2b6·...·]-2">]</span><span·class="p">,</span><span·class="w">
296 ·</span><span·class="p"·data-group-id="7852402565-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="7852402565-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:·ebc1d9638a094635bc76b1c43be87eb83693ff43c7a626ba876f4ed32128fa81·...·]-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="2995538952-7">{</span><span·class="w">·</span><span·class="p"·data-group-id="2995538952-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:·92b9902ed2149a1c1e9f940518b8240216ba4d1fc548245da8e31c5bb7f70c62·...·]-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="7852402565-9">[</span><span·class="p"·data-group-id="7852402565-10">{</span><span·class="p"·data-group-id="7852402565-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:·985a94c84e815646981c9056f2f55ee0e0627b7241cc57aaad7ee808d8184cb0·...·]-10">}</span><span·class="p">,</span><span·class="w">297 ·</span><span·class="p"·data-group-id="2995538952-9">[</span><span·class="p"·data-group-id="2995538952-10">{</span><span·class="p"·data-group-id="2995538952-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:·553b87abc920b96ef3fa3dcdf9fa30477bebacf568d02580111a41a87c631b81·...·]-10">}</span><span·class="p">,</span><span·class="w">
298 ··</span><span·class="p"·data-group-id="7852402565-12">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">······························</span><span·class="mi">53</span><span·class="p">,</span><span·class="w">····</span><span·class="mf">6.281</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·209,·SHA:·45bd651d8ae3277b35e95825e3862e3b5c9f146fdadc703ea26ed1a81fcd7a0b·...·]-1">}</span><span·class="p">.</span></code></pre><p>Not·unexpectedly,·we·see·that·<a·href="../../../../lib/kernel-10.2.3/doc/html/file.html#write/2"><code·class="inline">file:write/2</code></a>·was·called·from298 ··</span><span·class="p"·data-group-id="2995538952-12">{</span><span·class="ss">suspend</span><span·class="p">,</span><span·class="w">······························</span><span·class="mi">53</span><span·class="p">,</span><span·class="w">····</span><span·class="mf">6.281</span><span·class="p">,</[·...·truncated·by·diffoscope;·len:·209,·SHA:·f08d93cf9807eab86819647bf1593447a68337bd6179868cf964439f5d199c10·...·]-1">}</span><span·class="p">.</span></code></pre><p>Not·unexpectedly,·we·see·that·<a·href="../../../../lib/kernel-10.2.3/doc/html/file.html#write/2"><code·class="inline">file:write/2</code></a>·was·called·from
Max diff block lines reached; 45366/138726 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="4212211843-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="4212211843-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·200,·SHA:·e4b52c16063963acb33fbae1f708a160ac4aa7b8f786c1c129c4a560302afaa3·...·]-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="4395200879-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="4395200879-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·200,·SHA:·60feac42293a2fcb36fb6fcf550908fddf049582345f0068b35686ce53fe1bcd·...·]-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="4212211843-3">(</span><span·class="p"·data-group-id="4212211843-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4212211843-5">{</span><span·class="ss">tracer</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·642b023a37a09788d17998351f04eac8212cc27175aa39450a124e9be355263e·...·]-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="4395200879-3">(</span><span·class="p"·data-group-id="4395200879-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4395200879-5">{</span><span·class="ss">tracer</span><span·class="p">,</spa[·...·truncated·by·diffoscope;·len:·202,·SHA:·cc8da825c6152790ec6266104b4888dcf10eebcdd61ec8d4b303df03a4e5e423·...·]-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="4212211843-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="4212211843-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="4395200879-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="4395200879-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="7095726167-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="7095726167-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="7095726167-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1287,·SHA:·7cd38ddb265fb9007ee9f03987a201d567672effa9437c0b952b0ba09c673065·...·]-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="5438848543-1">[</span><span·class="ss">erts</span><span·class="o">-</span><span·class="mf">15.0</span><span·class="p"·data-group-id="5438848543-1">]</span><span·class="w">·</span><span·class="p"·data-group-id="5438848543-2">[</span><span·class="mi">64</spa[·...·truncated·by·diffoscope;·len:·1287,·SHA:·917a4b53028009aaf01bfdc816446c8c76ee99ae3e5e7365eaa84fcf0c6f8504·...·]-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="7095726167-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:·25750232027c2a3ec2349f2def909e9a7837cd1da2379571a89f01a4756bc3cf·...·]-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="5438848543-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:·7dc1d299178d5e9365292c23a0e75e0d0abd671634bb98206b2ec1ba3b3c1016·...·]-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="7095726167-10">[</span><span·class="p"·data-group-id="7095726167-11">{</span><span·class="ss">db_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="7095726167-12">[</span><span·class="nf">node</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1155,·SHA:·26e14e3c43b2443e53cbae4ce29991e68889f68c79b799b925de1fd8d60f481e·...·]-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="5438848543-10">[</span><span·class="p"·data-group-id="5438848543-11">{</span><span·class="ss">db_nodes</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5438848543-12">[</span><span·class="nf">node</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·1155,·SHA:·0d80cad389c3d30b39cc1a7f1c93020124c8945f31454f5ab58d9bee63eb34b8·...·]-17">}</span><span·class="p">,</span><span·class="w">
239 ····</span><span·class="p"·data-group-id="7095726167-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="7095726167-20">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·465,·SHA:·a1fa0d5fece9d98459df8778f8c98016f245fc91a2b1ac872ad76ea542a78b52·...·]-22">}</span><span·class="p">,</span><span·class="w">239 ····</span><span·class="p"·data-group-id="5438848543-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="5438848543-20">}</span><span·class="p">,</span><span·class="w">·</span><span·class="p"[·...·truncated·by·diffoscope;·len:·465,·SHA:·c07029b858a66c6d2fdd8f876daaa9e28d64e1f1bb75b72f0ee7ec094d43bd33·...·]-22">}</span><span·class="p">,</span><span·class="w">
240 ····</span><span·class="p"·data-group-id="7095726167-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="7095726167-23">}</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·519,·SHA:·27c8eac14cdc57bd58aed616b400805ab6f44d7fd202103e82a6baa441dfb227·...·]-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="5438848543-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="5438848543-23">}</span><span·class="p">,</span><span·class="w">·</span><span·class="[·...·truncated·by·diffoscope;·len:·519,·SHA:·864cc42395c01bcf683ab620c2a234a689781a96f363dae2c820eeed855caf4b·...·]-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="7095726167-26">(</span><span·class="p"·data-group-id="7095726167-27">[</span><span·class="p"·data-group-id="7095726167-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:·85ce768099f22c848cf8d155afb4794e252f7eb8c1f668d7992433891fe04ae3·...·]-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="5438848543-26">(</span><span·class="p"·data-group-id="5438848543-27">[</span><span·class="p"·data-group-id="5438848543-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:·491945d80a7eb89f31f758584b081dd1889e03bb4ec427f3c9875717a58eb312·...·]-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="7646936871-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7646936871-2">(</span><span·class="p"·data-group-id="7646936871-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·835,·SHA:·bfc3d85b0b406250bda39f4c8db9c57dc4d920591d5760d2030e012179b3ce05·...·]1-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="2023792581-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="2023792581-2">(</span><span·class="p"·data-group-id="2023792581-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·835,·SHA:·2a80da1243b45ef1cb8cc21999188ecc7c881dc403c22841631318593d5aa166·...·]1-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="7646936871-7">}</span><span·class="p">|</span><span·class="n">Conf</span><span·class="p"·data-group-id="7646936871-6">]</span><span·class="p"·data-group-id="7646936871-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tps</span><sp[·...·truncated·by·diffoscope;·len:·137,·SHA:·86bb1e6bc7bef3c3fdf1e507115322eaa138b5cf729af7d5ce1464f646868002·...·]1-1">)</span><span·class="p">.</span><span·class="w">248 ····</span><span·class="ss">true</span><span·class="p"·data-group-id="2023792581-7">}</span><span·class="p">|</span><span·class="n">Conf</span><span·class="p"·data-group-id="2023792581-6">]</span><span·class="p"·data-group-id="2023792581-5">)</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Tps</span><sp[·...·truncated·by·diffoscope;·len:·137,·SHA:·e8d5f5f8524f90a6f8a257b04bf526f71be80fca8ebc1fc52fe340c3fd9ec0d6·...·]1-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="5432483576-1">(</span><span·class="ss">big</span><span·class="p"·data-group-id="5432483576-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="9398123172-1">(</span><span·class="ss">big</span><span·class="p"·data-group-id="9398123172-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="5432483576-2">(</span><span·class="p"·data-group-id="5432483576-3">[</span><span·class="ss">bang</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="5432483576-3">]</span><span·class="p"·data-group-id="5432483576-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="9398123172-2">(</span><span·class="p"·data-group-id="9398123172-3">[</span><span·class="ss">bang</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9398123172-3">]</span><span·class="p"·data-group-id="9398123172-2">)</span><span·class="p">.</span><span·class="w">
  
355 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="5432483576-4">(</span><span·class="p"·data-group-id="5432483576-5">[</span><span·class="p"·data-group-id="5432483576-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5432483576-6">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·143,·SHA:·3f264b9d8b023015853561f3e5027a7cc4bdaee151b3b06903dca748867809a9·...·]-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="9398123172-4">(</span><span·class="p"·data-group-id="9398123172-5">[</span><span·class="p"·data-group-id="9398123172-5">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9398123172-6">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·143,·SHA:·4a25654285a9fdb4ec5ade26be2057b82d69b1f4506b429cdf79b7bdd90bea1b·...·]-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="5432483576-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="5432483576-7">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">357 »       </span><span·class="p"·data-group-id="9398123172-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="9398123172-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="5432483576-8">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5432483576-9">[</span><span·class="p"·data-group-id="5432483576-9">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·68,·SHA:·13c49e0bee5b5d2321ea2da6ab04bca01f4fd579f6dcf7a8f9b8a2efdf81925f·...·]-8">)</span><span·class="w">358 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9398123172-8">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9398123172-9">[</span><span·class="p"·data-group-id="9398123172-9">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·68,·SHA:·347fffab9baad33064be2b58163506ef572392091fdb38ee64e1609f55730947·...·]-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="5432483576-10">(</span><span·class="p"·data-group-id="5432483576-11">[</span><span·class="p"·data-group-id="5432483576-11">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5432483576-12">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·149,·SHA:·16178dca6fc6b79433da23ac4c178d7cbd59317a09b440772d31232ed879f34a·...·]-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="9398123172-10">(</span><span·class="p"·data-group-id="9398123172-11">[</span><span·class="p"·data-group-id="9398123172-11">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9398123172-12">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·149,·SHA:·2c4ba9e61b1dfb4c811add8ed22f7c01112783b55b753e818f419bb64c6c33e7·...·]-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="5432483576-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="5432483576-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·406,·SHA:·695eed61831c216a9da222b6fb0f8b5df3a4d5b81af90659b9c3475c34a66602·...·]-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="9398123172-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="9398123172-13">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·406,·SHA:·8caa64af155fe2d279ac8de8ee522b57334c245254b6fa8d337f89441841662a·...·]-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="5432483576-16">(</span><span·class="p"·data-group-id="5432483576-17">[</span><span·class="p"·data-group-id="5432483576-17">]</span><span·class="p">,</span><span·class="p"·data-group-id="5432483576-18">[</span><span·class="p"·data-group-id="5432483576-18">][·...·truncated·by·diffoscope;·len:·101,·SHA:·9d133dfbaaf50068ac9cca1cf190955164f966b3d33a290ae2048aaae27d7c07·...·]-16">)</span><span·class="p">;</span><span·class="w">362 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9398123172-16">(</span><span·class="p"·data-group-id="9398123172-17">[</span><span·class="p"·data-group-id="9398123172-17">]</span><span·class="p">,</span><span·class="p"·data-group-id="9398123172-18">[</span><span·class="p"·data-group-id="9398123172-18">][·...·truncated·by·diffoscope;·len:·101,·SHA:·1031201ca749de0a858567972d0f69713c9b28b548ca3d117a814cdbef6a8251·...·]-16">)</span><span·class="p">;</span><span·class="w">
363 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="5432483576-19">(</span><span·class="p"·data-group-id="5432483576-20">[</span><span·class="p"·data-group-id="5432483576-20">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5432483576-21">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·151,·SHA:·7caa30ac16f89ac886d53e10e22d9e064687f74e2b7c571a3259bde349c95c92·...·]-19">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">363 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="9398123172-19">(</span><span·class="p"·data-group-id="9398123172-20">[</span><span·class="p"·data-group-id="9398123172-20">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9398123172-21">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·151,·SHA:·e958bb52c05b9976133bd53f96a217000ba00e40981d6dc8bf90691bccf06757·...·]-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="5432483576-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="5432483576-23">(</span><span·class="p"·data-group-id="5432483576-23">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·162109a4ef2533d731204677257573990d4cbe3d9c10a6265771d235843f23fc·...·]-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="9398123172-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="9398123172-23">(</span><span·class="p"·data-group-id="9398123172-23">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·f9ffedae1ed95392e42baa6010c644549cd6cf27c571d2a20389ab124b7057dc·...·]-22">}</span><span·class="p">,</span><span·class="w">
365 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="5432483576-24">(</span><span·class="p"·data-group-id="5432483576-25">[</span><span·class="p"·data-group-id="5432483576-25">]</span><span·class="p">,</span><span·class="p"·data-group-id="5432483576-26">[</span><span·class="p"·data-group-id="5432483576-26">][·...·truncated·by·diffoscope;·len:·101,·SHA:·9d133dfbaaf50068ac9cca1cf190955164f966b3d33a290ae2048aaae27d7c07·...·]-24">)</span><span·class="p">;</span><span·class="w">365 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9398123172-24">(</span><span·class="p"·data-group-id="9398123172-25">[</span><span·class="p"·data-group-id="9398123172-25">]</span><span·class="p">,</span><span·class="p"·data-group-id="9398123172-26">[</span><span·class="p"·data-group-id="9398123172-26">][·...·truncated·by·diffoscope;·len:·101,·SHA:·1031201ca749de0a858567972d0f69713c9b28b548ca3d117a814cdbef6a8251·...·]-24">)</span><span·class="p">;</span><span·class="w">
366 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="5432483576-27">(</span><span·class="p"·data-group-id="5432483576-28">[</span><span·class="p"·data-group-id="5432483576-28">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5432483576-29">[</span><span·class="n">Po</spa[·...·truncated·by·diffoscope;·len:·328,·SHA:·f91d515fc69f847b220e37b74cefc7f50321c4f23f6431260e3be2383ef2a76b·...·]-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="9398123172-27">(</span><span·class="p"·data-group-id="9398123172-28">[</span><span·class="p"·data-group-id="9398123172-28">]</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9398123172-29">[</span><span·class="n">Po</spa[·...·truncated·by·diffoscope;·len:·328,·SHA:·d47b5e852549e5d8175e5b1c3763b0c55c3b2dc93567f16bb16613888a5fb174·...·]-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="5432483576-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="5432483576-30">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">368 »       </span><span·class="p"·data-group-id="9398123172-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="9398123172-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="5432483576-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="5432483576-32">(</span><span·class="p"·data-group-id="5432483576-32">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·162109a4ef2533d731204677257573990d4cbe3d9c10a6265771d235843f23fc·...·]-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="9398123172-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="9398123172-32">(</span><span·class="p"·data-group-id="9398123172-32">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·f9ffedae1ed95392e42baa6010c644549cd6cf27c571d2a20389ab124b7057dc·...·]-31">}</span><span·class="p">,</span><span·class="w">
370 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="5432483576-33">(</span><span·class="p"·data-group-id="5432483576-34">[</span><span·class="p"·data-group-id="5432483576-34">]</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="5432483576-33">)</span><span·class="p">;</span><span·class="w"> 
371 »       </span><span·class="p"·data-group-id="5432483576-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="5432483576-35">}</span><span·class="w">·</span><span·class="p">[·...·truncated·by·diffoscope;·len:·4,·SHA:·a12e3d05a0d1154352e53ac5689df7d784621a18b602fad08c64dad7c7402a1f·...·];</span><span·class="w">370 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9398123172-33">(</span><span·class="p"·data-group-id="9398123172-34">[</span><span·class="p"·data-group-id="9398123172-34">]</span><span·class="p">,</span><span·class="w">·</span><span[·...·truncated·by·diffoscope;·len:·174,·SHA:·1e885a5ba55af1f021d84679f9c4d02bc5f7712a2fc56cff315358475b5a32c5·...·];</span><span·class="w">
 371 »       </span><span·class="p"·data-group-id="9398123172-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="9398123172-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="5432483576-36">(</span><span·class="p"·data-group-id="5432483576-37">[</span><span·class="p"·data-group-id="5432483576-37">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pos</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·69,·SHA:·329d111e8638a7c8a0831a1a5c87332df87a574a3b84b78733a51aa8648adfcf·...·]-36">)</span><span·class="w">372 »       ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9398123172-36">(</span><span·class="p"·data-group-id="9398123172-37">[</span><span·class="p"·data-group-id="9398123172-37">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Pos</span><span·class="p">,</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·69,·SHA:·21dcc97187629ccfd798f883d85b2c231fbcd401b3812a914cd3c2b9b97315b7·...·]-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="5432483576-38">(</span><span·class="p"·data-group-id="5432483576-39">[</span><span·class="n">Pi</span><span·class="p">|</span><span·class="n">Pis</span><span·class="p"·data-group-id="5432483576-39">]</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·148,·SHA:·3bd5ae2beabaca103d3f4cbefd71a228d46a38a8cd2e29fda3214ac4e2d19c5b·...·]-38">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">374 </span><span·class="nf">pinger</span><span·class="p"·data-group-id="9398123172-38">(</span><span·class="p"·data-group-id="9398123172-39">[</span><span·class="n">Pi</span><span·class="p">|</span><span·class="n">Pis</span><span·class="p"·data-group-id="9398123172-39">]</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·148,·SHA:·95990211ac374a8d00b73ebac8f5a639f79286894144670d0c74c02942ed98af·...·]-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="5432483576-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="5432483576-40">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·406,·SHA:·c72a406dbb282c636c174f7f77ba314528fe9ac1839bfd1806425dbbbc3a7910·...·]-41">}</span><span·class="w">375 ····</span><span·class="k">receive</span><span·class="w">·</span><span·class="p"·data-group-id="9398123172-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="9398123172-40">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span>[·...·truncated·by·diffoscope;·len:·406,·SHA:·b8640108ef7fdb5c0502e2dc8df91d5e5e40ff95d1872f55753d97600c9255b9·...·]-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="5432483576-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="5432483576-44">(</span><span·class="p"·data-group-id="5432483576-44">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·162109a4ef2533d731204677257573990d4cbe3d9c10a6265771d235843f23fc·...·]-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="9398123172-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="9398123172-44">(</span><span·class="p"·data-group-id="9398123172-44">)</span><span·class="p"·data-[·...·truncated·by·diffoscope;·len:·20,·SHA:·f9ffedae1ed95392e42baa6010c644549cd6cf27c571d2a20389ab124b7057dc·...·]-43">}</span><span·class="p">,</span><span·class="w">
379 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="5432483576-45">(</span><span·class="n">Pis</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5432483576-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:·2e4050bda3a1b65e0518412f82136e5a6cf35d4515c19264a75d3db4a6e27115·...·]-45">)</span><span·class="p">.</span><span·class="w">379 ····</span><span·class="nf">pinger</span><span·class="p"·data-group-id="9398123172-45">(</span><span·class="n">Pis</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9398123172-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:·bde1aff1e10a1a2cfd70a870b1e231fbae7e1ae9a08a0eec28dc2cab7b389af5·...·]-45">)</span><span·class="p">.</span><span·class="w">
  
380 </span><span·class="nf">spawn_procs</span><span·class="p"·data-group-id="5432483576-47">(</span><span·class="n">N</span><span·class="p"·data-group-id="5432483576-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="9398123172-47">(</span><span·class="n">N</span><span·class="p"·data-group-id="9398123172-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="5432483576-48">[</span><span·class="p"·data-group-id="5432483576-48">]</span><span·class="p">;</span><span·class="w">381 ····</span><span·class="p"·data-group-id="9398123172-48">[</span><span·class="p"·data-group-id="9398123172-48">]</span><span·class="p">;</span><span·class="w">
382 </span><span·class="nf">spawn_procs</span><span·class="p"·data-group-id="5432483576-49">(</span><span·class="n">N</span><span·class="p"·data-group-id="5432483576-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="9398123172-49">(</span><span·class="n">N</span><span·class="p"·data-group-id="9398123172-49">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
383 ····</span><span·class="p"·data-group-id="5432483576-50">[</span><span·class="nf">spawn_link</span><span·class="p"·data-group-id="5432483576-51">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5432483576-52">(</span><span·class="p"·data-group-id="543248357[·...·truncated·by·diffoscope;·len:·953,·SHA:·d7f31de7aa37f8847faa4bca3012a95c7bb1d387561423635abb6499f4d3cd57·...·]-50">]</span><span·class="p">.</span><span·class="w">383 ····</span><span·class="p"·data-group-id="9398123172-50">[</span><span·class="nf">spawn_link</span><span·class="p"·data-group-id="9398123172-51">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="9398123172-52">(</span><span·class="p"·data-group-id="939812317[·...·truncated·by·diffoscope;·len:·953,·SHA:·a451f15244007aff8c06fd0635b1158494e8280fa85ef99e71419ffdf5b2a6a0·...·]-50">]</span><span·class="p">.</span><span·class="w">
  
384 </span><span·class="nf">send_procs</span><span·class="p"·data-group-id="5432483576-57">(</span><span·class="p"·data-group-id="5432483576-58">[</span><span·class="p"·data-group-id="5432483576-58">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="5432483576-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="9398123172-57">(</span><span·class="p"·data-group-id="9398123172-58">[</span><span·class="p"·data-group-id="9398123172-58">]</span><span·class="p">,</span><span·class="w">·</span><span·class="n">Msg</span><span·class="p"·data-group-id="9398123172-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="5432483576-59">(</span><span·class="p"·data-group-id="5432483576-60">[</span><span·class="n">P</span><span·class="p">|</span><span·class="n">Ps</span><span·class="p"·data-group-id="5432483576-60">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·63,·SHA:·a4f8f7127e8ca6438dba90e915fe50e375ed8e6051c926cc6e73cdb876ce489a·...·]-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="9398123172-59">(</span><span·class="p"·data-group-id="9398123172-60">[</span><span·class="n">P</span><span·class="p">|</span><span·class="n">Ps</span><span·class="p"·data-group-id="9398123172-60">]</span><span·class="p">,</span><span·class="w">·</span><spa[·...·truncated·by·diffoscope;·len:·63,·SHA:·924137a65347e42b838ad7448a457ced3e71776111534826f5c3b00a510885e0·...·]-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="5432483576-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="5432483576-61">)</span><span·class="p">.</span><span·class="w">388 ····</span><span·class="nf">send_procs</span><span·class="p"·data-group-id="9398123172-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="9398123172-61">)</span><span·class="p">.</span><span·class="w">
  
389 </span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="5432483576-62">(</span><span·class="p"·data-group-id="5432483576-63">[</span><span·class="p"·data-group-id="5432483576-63">]</span><span·class="p"·data-group-id="5432483576-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="9398123172-62">(</span><span·class="p"·data-group-id="9398123172-63">[</span><span·class="p"·data-group-id="9398123172-63">]</span><span·class="p"·data-group-id="9398123172-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="5432483576-64">(</span><span·class="p"·data-group-id="5432483576-65">[</span><span·class="n">M</span><span·class="p">|</span><span·class="n">Ms</span><span·class="p"·data-group-id="5432483576-65">]</span><span·class="p"·data-group-id="5432483576-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="9398123172-64">(</span><span·class="p"·data-group-id="9398123172-65">[</span><span·class="n">M</span><span·class="p">|</span><span·class="n">Ms</span><span·class="p"·data-group-id="9398123172-65">]</span><span·class="p"·data-group-id="9398123172-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="5432483576-66">(</span><span·class="n">Ms</span><span·class="p"·data-group-id="5432483576-66">)</span><span·class="w">394 »       ····</span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="9398123172-66">(</span><span·class="n">Ms</span><span·class="p"·data-group-id="9398123172-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="5432483576-67">(</span><span·class="n">N</span><span·class="p"·data-group-id="5432483576-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="5432483576-68">(</[·...·truncated·by·diffoscope;·len:·70,·SHA:·b1814578715ed24707515550dcf498f328434683f9aac0c266d032a08ff919d6·...·]-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="9398123172-67">(</span><span·class="n">N</span><span·class="p"·data-group-id="9398123172-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="9398123172-68">(</[·...·truncated·by·diffoscope;·len:·70,·SHA:·8bee65beb33d9da6e92b0685b51e3647cea208315b694861f03ad52b9b2ac599·...·]-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="5432483576-69">(</span><span·class="n">N</span><span·class="p"·data-group-id="5432483576-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="9398123172-69">(</span><span·class="n">N</span><span·class="p"·data-group-id="9398123172-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="5432483576-70">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5432483576-71">(</span><span·class="n">P</span><span·class="p"·data-group-id="5432483576-71">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·401,·SHA:·9c19bc8aec6719b405a437aedef6d4c7ee2d462918891add3dba0a10ef2c007f·...·]-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="9398123172-70">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="9398123172-71">(</span><span·class="n">P</span><span·class="p"·data-group-id="9398123172-71">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·401,·SHA:·a5b8bcc41ebca8840395dc03c909696fda4c8312e83e600e886fc90f3605855e·...·]-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="5432483576-73">(</span><span·class="p"·data-group-id="5432483576-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="9398123172-73">(</span><span·class="p"·data-group-id="9398123172-73">)</span><span·class="p">,</span><span·class="w">
400 ····</span><span·class="nf">send_procs</span><span·class="p"·data-group-id="5432483576-74">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="5432483576-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:·89c03f65f2e8b8499a73a634f68e36ac05d7660c8cc4a87c0a342cbc4285a083·...·]-74">)</span><span·class="p">,</span><span·class="w">400 ····</span><span·class="nf">send_procs</span><span·class="p"·data-group-id="9398123172-74">(</span><span·class="n">Procs</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9398123172-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:·605ea338cb7269b807d572faf40e51d90134a5f7f677e40cd2bd7e947c493c65·...·]-74">)</span><span·class="p">,</span><span·class="w">
401 ····</span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="5432483576-77">(</span><span·class="n">RMsgs</span><span·class="p"·data-group-id="5432483576-77">)</span><span·class="p">,</span><span·class="w">401 ····</span><span·class="nf">receive_msgs</span><span·class="p"·data-group-id="9398123172-77">(</span><span·class="n">RMsgs</span><span·class="p"·data-group-id="9398123172-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="5432483576-78">(</span><span·class="p"·data-group-id="5432483576-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="9398123172-78">(</span><span·class="p"·data-group-id="9398123172-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="5432483576-79">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="5432483576-80">(</span><span·class="n">P</span><span·class="p"·data-group-id="5432483576-80">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·431,·SHA:·35a47c34a152c839dc3c46b5c8c46b28b1de7728c159ca2e9166f90c88d24fc3·...·]-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="9398123172-79">(</span><span·class="nf">fun</span><span·class="w">·</span><span·class="p"·data-group-id="9398123172-80">(</span><span·class="n">P</span><span·class="p"·data-group-id="9398123172-80">)</span><span·class="w">·</span><span·class="p">-&gt;</spa[·...·truncated·by·diffoscope;·len:·431,·SHA:·642806948553948e2d5d39242969e012ffa91827c90e3c8d87555e1b5d56c53f·...·]-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="5432483576-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="5432483576-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="9398123172-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="9398123172-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="2550744473-1">{</span><span·class="ss">&#39;file1&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2550744473-2">[</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="p"·data-group-id="2550744473-3">{</span><span·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·1c2333ae375bf0c510e36901e1c2bae3c9a2589a88059faa4a073a398f361d1e·...·]-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="6181771055-1">{</span><span·class="ss">&#39;file1&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6181771055-2">[</span><span·class="ss">debug_info</span><span·class="p">,</span><span·class="p"·data-group-id="6181771055-3">{</span><span·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·7116ef572992e7d53df70a029ad7a6d9b3dbbcea6b6642537c73ab300be8e7b0·...·]-1">}</span><span·class="p">.</span><span·class="w">
146 </span><span·class="p"·data-group-id="2550744473-4">{</span><span·class="ss">&#39;*&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="2550744473-5">[</span><span·class="ss">debug_info</span><span·class="p"·data-group-id="2550744473-5">]</span><span·class="p"·data-group-id="2550[·...·truncated·by·diffoscope;·len:·6,·SHA:·528f80330ce52f77912e223accaa72c57e47319e19353ed017ad6a9fb3db5700·...·]-4">}</span><span·class="p">.</span></code></pre><h2·id="module-see-also"·class="section-heading">146 </span><span·class="p"·data-group-id="6181771055-4">{</span><span·class="ss">&#39;*&#39;</span><span·class="p">,</span><span·class="p"·data-group-id="6181771055-5">[</span><span·class="ss">debug_info</span><span·class="p"·data-group-id="6181771055-5">]</span><span·class="p"·data-group-id="6181[·...·truncated·by·diffoscope;·len:·6,·SHA:·7142029b91e633c8d17e77a0eb90e7db1c566fcb7a4fa87bd3a46e35886b71b4·...·]-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.6/doc/html/compile.html">The·Compiler·Application</a></p>152 <p><a·href="../../../../lib/compiler-8.6/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="5383050117-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="5383050117-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="1688865133-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="1688865133-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="5383050117-2">(</span><span·class="p"·data-group-id="5383050117-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:·41383a0b934e172b785e03b1c2537d4500b3cb3021e9f624630a89a0263fa978·...·]-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="1688865133-2">(</span><span·class="p"·data-group-id="1688865133-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:·ee9e0dc64eb56947e97771ac89f7879d22dd653879e763e714b44cd28bfa57c3·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
172 </span><span·class="nf">bar</span><span·class="p"·data-group-id="5383050117-4">(</span><span·class="p"·data-group-id="5383050117-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:·9f99b6fba3bd25ae3a0d5e95e10081eaab58a4da59fc54bbe78a364fffd13468·...·]-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="1688865133-4">(</span><span·class="p"·data-group-id="1688865133-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:·80def4370532238be5df9ce85200ed9481eaec48d643b5226456070f5e6373af·...·]-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="0224758990-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="0224758990-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="8972659658-1">(</span><span·class="ss">foo</span><span·class="p"·data-group-id="8972659658-1">)</span><span·class="p">.</span><span·class="w">
174 </span><span·class="p"·data-group-id="0224758990-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="0224758990-2">}</span><span·class="gp·unselectable">174 </span><span·class="p"·data-group-id="8972659658-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="8972659658-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="0224758990-3">(</span><span·class="p"·data-group-id="0224758990-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="8972659658-3">(</span><span·class="p"·data-group-id="8972659658-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="0224758990-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="0224758990-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="8972659658-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="8972659658-4">)</span><span·class="p">.</span><span·class="w">
178 </span><span·class="p"·data-group-id="0224758990-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0224758990-6">[</span><span·class="p"·data-group-id="0224758990-7">{</span><span·class="p"·data-group-id="0224758990-8">{</span><span·class="ss">foo</spa[·...·truncated·by·diffoscope;·len:·977,·SHA:·9fbf28761d67509248163bb9df0a5021fe54d72065706fb253fda580693ed99b·...·]-5">}</span><span·class="gp·unselectable">178 </span><span·class="p"·data-group-id="8972659658-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8972659658-6">[</span><span·class="p"·data-group-id="8972659658-7">{</span><span·class="p"·data-group-id="8972659658-8">{</span><span·class="ss">foo</spa[·...·truncated·by·diffoscope;·len:·977,·SHA:·b2f26e6c28c6ef6c7dbc44b9846a96f36793ad8a3693bf20a1e466062740f7f8·...·]-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="0224758990-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="0224758990-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="8972659658-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="8972659658-13">)</span><span·class="p">.</span><span·class="w">
180 </span><span·class="p"·data-group-id="0224758990-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0224758990-15">[</span><span·class="p"·data-group-id="0224758990-16">{</span><span·class="p"·data-group-id="0224758990-17">{</span><span·class="ss">foo<[·...·truncated·by·diffoscope;·len:·1071,·SHA:·0eef70cc95027d2a9efbd9010de0eac7d657e5e7f316036ed873e2351d0cf399·...·]-1">)</span><span·class="p">.</span><span·class="w">180 </span><span·class="p"·data-group-id="8972659658-14">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="8972659658-15">[</span><span·class="p"·data-group-id="8972659658-16">{</span><span·class="p"·data-group-id="8972659658-17">{</span><span·class="ss">foo<[·...·truncated·by·diffoscope;·len:·1071,·SHA:·2d7fa91a23ba1021cef0d377371f9142c83bdbe1dba38e0ab47320b1701edb0c·...·]-1">)</span><span·class="p">.</span><span·class="w">
181 </span><span·class="p"·data-group-id="0641896719-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="0641896719-2">}</span><span·class="gp·unselectable">181 </span><span·class="p"·data-group-id="2075159628-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">foo</span><span·class="p"·data-group-id="2075159628-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="0641896719-3">(</span><span·class="p"·data-group-id="0641896719-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="2075159628-3">(</span><span·class="p"·data-group-id="2075159628-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="0641896719-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="0641896719-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="2075159628-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="2075159628-4">)</span><span·class="p">.</span><span·class="w">
185 </span><span·class="p"·data-group-id="0641896719-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0641896719-6">[</span><span·class="p"·data-group-id="0641896719-7">{</span><span·class="p"·data-group-id="0641896719-8">{</span><span·class="ss">foo</spa[·...·truncated·by·diffoscope;·len:·455,·SHA:·e14e38e601dc35ff6646534ff9efe1a27d8bb25a86b46d5ee732eb066533a2fc·...·]-5">}</span><span·class="gp·unselectable">185 </span><span·class="p"·data-group-id="2075159628-5">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2075159628-6">[</span><span·class="p"·data-group-id="2075159628-7">{</span><span·class="p"·data-group-id="2075159628-8">{</span><span·class="ss">foo</spa[·...·truncated·by·diffoscope;·len:·455,·SHA:·fcd48ffc76eb1e93a1502177fd66e680a094899aa57ea3944ef269de99e0f56b·...·]-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="0641896719-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="0641896719-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="2075159628-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="2075159628-10">)</span><span·class="p">.</span><span·class="w">
187 </span><span·class="p"·data-group-id="0641896719-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="0641896719-12">[</span><span·class="p"·data-group-id="0641896719-13">{</span><span·class="p"·data-group-id="0641896719-14">{</span><span·class="ss">foo<[·...·truncated·by·diffoscope;·len:·307,·SHA:·daca8277e56c8b399335afcb892f5e3733b614f6dcf53b4448f56833144f438c·...·]-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="2075159628-11">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2075159628-12">[</span><span·class="p"·data-group-id="2075159628-13">{</span><span·class="p"·data-group-id="2075159628-14">{</span><span·class="ss">foo<[·...·truncated·by·diffoscope;·len:·307,·SHA:·96eec5078cb675f41c3806c6f707abd8e8301191e819eee1910071a32b312908·...·]-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="3363618296-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="3363618296-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·f0c786a38310ec0fdc2f797fa0d147cae3a7e4a1e417f3d838eefcd742f70f54·...·]-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="0748792784-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="0748792784-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·d0c5e4967c31f53848bb552932cbae6041dbdd9db3ccb8e453bc27e9254fcca6·...·]-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="3363618296-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="0748792784-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="3363618296-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="3363618296-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="0748792784-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="0748792784-5">]</span><span·class="w">
204 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="3363618296-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="3363618296-6">]</span><span·class="w">204 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="0748792784-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="0748792784-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.6/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.3/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/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.3/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.3/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.6/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.3/doc/html/code.html#coverage_support/0"><code·class="inline">code:coverage_support/0</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/doc/html/code.html#get_coverage/2"><code·class="inline">code:get_coverage/2</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/doc/html/code.html#reset_coverage/1"><code·class="inline">code:reset_coverage/1</code></a></li><li><a·href="../../../../lib/kernel-10.2.3/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.3/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.3/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">
825 KB
./usr/share/doc/erlang-doc/html/lib/tools-4.1.1/doc/html/tools.epub
4.32 KB
zipinfo {}
    
Offset 1, 30 lines modifiedOffset 1, 30 lines modified
1 Zip·file·size:·239546·bytes,·number·of·entries:·281 Zip·file·size:·239546·bytes,·number·of·entries:·28
2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·07:53·mimetype2 ?rw-r--r--··6.1·unx·······20·bx·stor·25-Mar-18·08:46·mimetype
3 ?rw-r--r--··6.1·unx····33569·bx·defN·25-Mar-18·07:53·OEBPS/xref_chapter.xhtml3 ?rw-r--r--··6.1·unx····33569·bx·defN·25-Mar-18·08:46·OEBPS/xref_chapter.xhtml
4 ?rw-r--r--··6.1·unx···178309·bx·defN·25-Mar-18·07:53·OEBPS/xref.xhtml4 ?rw-r--r--··6.1·unx···178309·bx·defN·25-Mar-18·08:46·OEBPS/xref.xhtml
5 ?rw-r--r--··6.1·unx···167553·bx·defN·25-Mar-18·07:53·OEBPS/tprof.xhtml5 ?rw-r--r--··6.1·unx···167553·bx·defN·25-Mar-18·08:46·OEBPS/tprof.xhtml
6 ?rw-r--r--··6.1·unx······714·bx·defN·25-Mar-18·07:53·OEBPS/title.xhtml6 ?rw-r--r--··6.1·unx······714·bx·defN·25-Mar-18·08:46·OEBPS/title.xhtml
7 ?rw-r--r--··6.1·unx····22571·bx·defN·25-Mar-18·07:53·OEBPS/tags.xhtml7 ?rw-r--r--··6.1·unx····22571·bx·defN·25-Mar-18·08:46·OEBPS/tags.xhtml
8 ?rw-r--r--··6.1·unx···100772·bx·defN·25-Mar-18·07:53·OEBPS/notes.xhtml8 ?rw-r--r--··6.1·unx···100772·bx·defN·25-Mar-18·08:46·OEBPS/notes.xhtml
9 ?rw-r--r--··6.1·unx·····2010·bx·defN·25-Mar-18·07:53·OEBPS/nav.xhtml9 ?rw-r--r--··6.1·unx·····2010·bx·defN·25-Mar-18·08:46·OEBPS/nav.xhtml
10 ?rw-r--r--··6.1·unx····12605·bx·defN·25-Mar-18·07:53·OEBPS/make.xhtml10 ?rw-r--r--··6.1·unx····12605·bx·defN·25-Mar-18·08:46·OEBPS/make.xhtml
11 ?rw-r--r--··6.1·unx····47357·bx·defN·25-Mar-18·07:53·OEBPS/lcnt_chapter.xhtml11 ?rw-r--r--··6.1·unx····47357·bx·defN·25-Mar-18·08:46·OEBPS/lcnt_chapter.xhtml
12 ?rw-r--r--··6.1·unx····61087·bx·defN·25-Mar-18·07:53·OEBPS/lcnt.xhtml12 ?rw-r--r--··6.1·unx····61087·bx·defN·25-Mar-18·08:46·OEBPS/lcnt.xhtml
13 ?rw-r--r--··6.1·unx·····6942·bx·defN·25-Mar-18·07:53·OEBPS/fprof_chapter.xhtml13 ?rw-r--r--··6.1·unx·····6942·bx·defN·25-Mar-18·08:46·OEBPS/fprof_chapter.xhtml
14 ?rw-r--r--··6.1·unx···125787·bx·defN·25-Mar-18·07:53·OEBPS/fprof.xhtml14 ?rw-r--r--··6.1·unx···125787·bx·defN·25-Mar-18·08:46·OEBPS/fprof.xhtml
15 ?rw-r--r--··6.1·unx····12906·bx·defN·25-Mar-18·07:53·OEBPS/erlang_mode_chapter.xhtml15 ?rw-r--r--··6.1·unx····12906·bx·defN·25-Mar-18·08:46·OEBPS/erlang_mode_chapter.xhtml
16 ?rw-r--r--··6.1·unx····22625·bx·defN·25-Mar-18·07:53·OEBPS/erlang-el.xhtml16 ?rw-r--r--··6.1·unx····22625·bx·defN·25-Mar-18·08:46·OEBPS/erlang-el.xhtml
17 ?rw-r--r--··6.1·unx····36760·bx·defN·25-Mar-18·07:53·OEBPS/eprof.xhtml17 ?rw-r--r--··6.1·unx····36760·bx·defN·25-Mar-18·08:46·OEBPS/eprof.xhtml
18 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-erlang-ESPT6BQV.css18 ?rw-r--r--··6.1·unx····14562·bx·defN·25-Mar-18·08:46·OEBPS/dist/epub-erlang-ESPT6BQV.css
19 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·07:53·OEBPS/dist/epub-LSJCIYTM.js19 ?rw-r--r--··6.1·unx······499·bx·defN·25-Mar-18·08:46·OEBPS/dist/epub-LSJCIYTM.js
20 ?rw-r--r--··6.1·unx····47208·bx·defN·25-Mar-18·07:53·OEBPS/cprof_chapter.xhtml20 ?rw-r--r--··6.1·unx····47208·bx·defN·25-Mar-18·08:46·OEBPS/cprof_chapter.xhtml
21 ?rw-r--r--··6.1·unx····39982·bx·defN·25-Mar-18·07:53·OEBPS/cprof.xhtml21 ?rw-r--r--··6.1·unx····39982·bx·defN·25-Mar-18·08:46·OEBPS/cprof.xhtml
22 ?rw-r--r--··6.1·unx····97748·bx·defN·25-Mar-18·07:53·OEBPS/cover_chapter.xhtml22 ?rw-r--r--··6.1·unx····97748·bx·defN·25-Mar-18·08:46·OEBPS/cover_chapter.xhtml
23 ?rw-r--r--··6.1·unx···101036·bx·defN·25-Mar-18·07:53·OEBPS/cover.xhtml23 ?rw-r--r--··6.1·unx···101036·bx·defN·25-Mar-18·08:46·OEBPS/cover.xhtml
24 ?rw-r--r--··6.1·unx·····3642·bx·defN·25-Mar-18·07:53·OEBPS/content.opf24 ?rw-r--r--··6.1·unx·····3642·bx·defN·25-Mar-18·08:46·OEBPS/content.opf
25 ?rw-r--r--··6.1·unx····12283·bx·stor·25-Mar-18·07:53·OEBPS/assets/venn2.gif25 ?rw-r--r--··6.1·unx····12283·bx·stor·25-Mar-18·08:46·OEBPS/assets/venn2.gif
26 ?rw-r--r--··6.1·unx·····9095·bx·stor·25-Mar-18·07:53·OEBPS/assets/venn1.gif26 ?rw-r--r--··6.1·unx·····9095·bx·stor·25-Mar-18·08:46·OEBPS/assets/venn1.gif
27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·07:53·OEBPS/assets/logo.png27 ?rw-r--r--··6.1·unx·····5837·bx·defN·25-Mar-18·08:46·OEBPS/assets/logo.png
28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·07:53·META-INF/container.xml28 ?rw-r--r--··6.1·unx······252·bx·defN·25-Mar-18·08:46·META-INF/container.xml
29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·07:53·META-INF/com.apple.ibooks.display-options.xml29 ?rw-r--r--··6.1·unx······162·bx·defN·25-Mar-18·08:46·META-INF/com.apple.ibooks.display-options.xml
30 28·files,·1163893·bytes·uncompressed,·234756·bytes·compressed:··79.8%30 28·files,·1163893·bytes·uncompressed,·234756·bytes·compressed:··79.8%
112 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,·Mar·18·2025·07:53: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,·Mar·18·2025·08:46:04,·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="5228495306-1">{</samp><samp·class="ss">&#39;file1&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="5228495306-2">[</samp><samp·class="ss">debug_info</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="5228495306-3">{</samp><samp·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·4e9dd43d39000794fffbf9bf9d382cd58ab1dd705efa6ffae5123c1cae03eeb4·...·]-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="9620335182-1">{</samp><samp·class="ss">&#39;file1&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="9620335182-2">[</samp><samp·class="ss">debug_info</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="9620335182-3">{</samp><samp·c[·...·truncated·by·diffoscope;·len:·230,·SHA:·0570b03358f1b127f68e24d275658b011e3cada7cd8ce8e92b58b8697a27d0aa·...·]-1">}</samp><samp·class="p">.</samp><samp·class="w">
41 </samp><samp·class="p"·data-group-id="5228495306-4">{</samp><samp·class="ss">&#39;*&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="5228495306-5">[</samp><samp·class="ss">debug_info</samp><samp·class="p"·data-group-id="5228495306-5">]</samp><samp·class="p"·data-group-id="5228[·...·truncated·by·diffoscope;·len:·6,·SHA:·77a9f1cd0de1714b2bde95df41397a44d8a09f0d7615bd468ebb474eacbac652·...·]-4">}</samp><samp·class="p">.</samp></code></pre><h2·id="module-see-also"·class="section-heading">41 </samp><samp·class="p"·data-group-id="9620335182-4">{</samp><samp·class="ss">&#39;*&#39;</samp><samp·class="p">,</samp><samp·class="p"·data-group-id="9620335182-5">[</samp><samp·class="ss">debug_info</samp><samp·class="p"·data-group-id="9620335182-5">]</samp><samp·class="p"·data-group-id="9620[·...·truncated·by·diffoscope;·len:·6,·SHA:·24839c75edf6d68022641c7d6eefc73bfb39e96e4f19151188a1a7413743b01b·...·]-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="9282661103-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="9282661103-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·41a15236802d19f613232bcea48262c7cf0d4c375c511a518724b012f2dabda4·...·]-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="3890260745-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="3890260745-1">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·[·...·truncated·by·diffoscope;·len:·201,·SHA:·6727bab903426e51c74ab97e26f76e9cb1d58feb3103b095cfc69d012191bafb·...·]-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="9282661103-3">(</span><span·class="p"·data-group-id="9282661103-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="9282661103-5">{</span><span·class="ss">tracer</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·c5e21dfddbf2061151359e85a223b57d29e08ff814526b834c2f251be84bb183·...·]-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="3890260745-3">(</span><span·class="p"·data-group-id="3890260745-4">[</span><span·class="ss">start</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="3890260745-5">{</span><span·class="ss">tracer</span><span·class="p">,</sp[·...·truncated·by·diffoscope;·len:·203,·SHA:·165b251c138f8ae71a8d0985e4ce52da2eea1a8afa158d94c2a0ba7d8a3d1b3e·...·]-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="9282661103-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="9282661103-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="3890260745-6">(</span><span·class="ss">stop</span><span·class="p"·data-group-id="3890260745-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="0950704430-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="095070[·...·truncated·by·diffoscope;·len:·650,·SHA:·852ec753c434b8723d927b48922e845ab254b4fbdab9264559cf04d5e49402d6·...·]-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="0231613670-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="023161[·...·truncated·by·diffoscope;·len:·650,·SHA:·308f03562c350d6c86efc4991e20d8d8ff8b31f56bdf6d4faa9c173d574249b2·...·]-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
    
Offset 1386, 15 lines modifiedOffset 1386, 15 lines modified
1386 ······</div>1386 ······</div>
  
1387 <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>,·this1387 <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
1388 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>,·this1388 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
1389 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·equivalent1389 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
1390 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·in1390 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
1391 <a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>·or·<a·href="#t:level/0"><code·class="inline">level()</code></a>,·the·module1391 <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
1392 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"><samp·class="nc">cover</samp><samp·class="p">:</samp><samp·class="nf">analyse</samp><samp·class="p"·data-group-id="5760403087-1">(</samp><samp·class="p"·data-group-id="5760403087-2">[</samp><samp·class="ss">calls</samp><samp·class="p"·data-group-id="5760403087-2">]</samp><samp·class="p"·data-group-id="5760403087-1">)</samp><samp·class="p">.</samp></code></pre></section>1392 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"><samp·class="nc">cover</samp><samp·class="p">:</samp><samp·class="nf">analyse</samp><samp·class="p"·data-group-id="1864539373-1">(</samp><samp·class="p"·data-group-id="1864539373-2">[</samp><samp·class="ss">calls</samp><samp·class="p"·data-group-id="1864539373-2">]</samp><samp·class="p"·data-group-id="1864539373-1">)</samp><samp·class="p">.</samp></code></pre></section>
1393 ··</section>1393 ··</section>
1394 </section>1394 </section>
1395 <section·class="detail"·id="analyse/2">1395 <section·class="detail"·id="analyse/2">
  
1396 ··<div·class="detail-header">1396 ··<div·class="detail-header">
1397 ····<a·href="#analyse/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1397 ····<a·href="#analyse/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1398 ······<i·class="ri-link-m"·aria-hidden="true"></i>1398 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1426, 15 lines modifiedOffset 1426, 15 lines modified
1426 <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>·and1426 <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
1427 <code·class="inline">Arg2</code>·is·one·of·the·values·in·<a·href="#t:level/0"><code·class="inline">level()</code></a>,·this1427 <code·class="inline">Arg2</code>·is·one·of·the·values·in·<a·href="#t:level/0"><code·class="inline">level()</code></a>,·this
1428 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>,1428 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>,
1429 <code·class="inline">Arg1</code>·is·assumed·to·be·a·module·and·this·call·is·equivalent·to1429 <code·class="inline">Arg1</code>·is·assumed·to·be·a·module·and·this·call·is·equivalent·to
1430 <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>·is1430 <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
1431 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·in1431 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
1432 <a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>,·the·module·name·needs·to·be·in·a1432 <a·href="#t:analysis/0"><code·class="inline">analysis()</code></a>,·the·module·name·needs·to·be·in·a
1433 list.·For·example,·to·analyze·a·module·named·<code·class="inline">calls</code>:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">cover</samp><samp·class="p">:</samp><samp·class="nf">analyse</samp><samp·class="p"·data-group-id="2964941185-1">(</samp><samp·class="p"·data-group-id="2964941185-2">[</samp><samp·class="ss">calls</samp><samp·class="p"·data-group-id="2964941185-2">]</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">function</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·21,·SHA:·1b51fc1f97b5b305fbd775112891a82ae6ae901594f120a2e5234a0b96c416bf·...·]5-1">)</samp><samp·class="p">.</samp></code></pre></section>1433 list.·For·example,·to·analyze·a·module·named·<code·class="inline">calls</code>:</p><pre><code·class="makeup·erlang"·translate="no"><samp·class="nc">cover</samp><samp·class="p">:</samp><samp·class="nf">analyse</samp><samp·class="p"·data-group-id="0925359795-1">(</samp><samp·class="p"·data-group-id="0925359795-2">[</samp><samp·class="ss">calls</samp><samp·class="p"·data-group-id="0925359795-2">]</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="ss">function</samp><samp·class="p"·dat[·...·truncated·by·diffoscope;·len:·21,·SHA:·d1bfb761ec866526a922da26d4bbb33a1b75b1ad261b67e38cc3ecb19b301f59·...·]5-1">)</samp><samp·class="p">.</samp></code></pre></section>
1434 ··</section>1434 ··</section>
1435 </section>1435 </section>
1436 <section·class="detail"·id="analyse/3">1436 <section·class="detail"·id="analyse/3">
  
1437 ··<div·class="detail-header">1437 ··<div·class="detail-header">
1438 ····<a·href="#analyse/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1438 ····<a·href="#analyse/3"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1439 ······<i·class="ri-link-m"·aria-hidden="true"></i>1439 ······<i·class="ri-link-m"·aria-hidden="true"></i>
Offset 1529, 15 lines modifiedOffset 1529, 15 lines modified
  
1529 ······</div>1529 ······</div>
  
1530 <p>If·<code·class="inline">Arg</code>·is·a·list·of·<a·href="#t:analyse_option/0"><code·class="inline">analyse_option()</code></a>1530 <p>If·<code·class="inline">Arg</code>·is·a·list·of·<a·href="#t:analyse_option/0"><code·class="inline">analyse_option()</code></a>
1531 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·to1531 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
1532 <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·option1532 <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
1533 in·<a·href="#t:analyse_option/0"><code·class="inline">analyse_option()</code></a>),·it·is·necessary·to1533 in·<a·href="#t:analyse_option/0"><code·class="inline">analyse_option()</code></a>),·it·is·necessary·to
1534 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"><samp·class="nc">cover</samp><samp·class="p">:</samp><samp·class="nf">analyse_to_file</samp><samp·class="p"·data-group-id="0766583593-1">(</samp><samp·class="p"·data-group-id="0766583593-2">[</samp><samp·class="ss">html</samp><samp·class="p"·data-group-id="0766583593-2">]</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="0766583593-3">[</samp[·...·truncated·by·diffoscope;·len:·95,·SHA:·668f09a25f89b52b3bdbe9eef2db9e6280647bda3e06b433cd6e9142d2299527·...·]-1">)</samp><samp·class="p">.</samp></code></pre></section>1534 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"><samp·class="nc">cover</samp><samp·class="p">:</samp><samp·class="nf">analyse_to_file</samp><samp·class="p"·data-group-id="8679695936-1">(</samp><samp·class="p"·data-group-id="8679695936-2">[</samp><samp·class="ss">html</samp><samp·class="p"·data-group-id="8679695936-2">]</samp><samp·class="p">,</samp><samp·class="w">·</samp><samp·class="p"·data-group-id="8679695936-3">[</samp[·...·truncated·by·diffoscope;·len:·95,·SHA:·c3f92dbef48af0328fecd13f197f34865591e1fcd6f7755b90be487f1fbaed21·...·]-1">)</samp><samp·class="p">.</samp></code></pre></section>
1535 ··</section>1535 ··</section>
1536 </section>1536 </section>
1537 <section·class="detail"·id="analyse_to_file/2">1537 <section·class="detail"·id="analyse_to_file/2">
  
1538 ··<div·class="detail-header">1538 ··<div·class="detail-header">
1539 ····<a·href="#analyse_to_file/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">1539 ····<a·href="#analyse_to_file/2"·class="detail-link"·data-no-tooltip·aria-label="Link·to·this·function">
1540 ······<i·class="ri-link-m"·aria-hidden="true"></i>1540 ······<i·class="ri-link-m"·aria-hidden="true"></i>
1.22 KB
OEBPS/content.opf
1.19 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="1005965583-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="1005965583-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·8e884477a77e77d657896a87514c1aa92ab3c77adc992d8d12356036fde70383·...·]-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="9659236265-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="9659236265-2">[</span><span·class="mi">1</span><spa[·...·truncated·by·diffoscope;·len:·458,·SHA:·ab4c64d6185c6edb499b274d7c65817015eb71a2aa66ca0059422222976e6454·...·]-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="1005965583-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="9659236265-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="1005965583-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="1005965583-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="9659236265-5">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="9659236265-5">]</span><span·class="w">
167 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="1005965583-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="1005965583-6">]</span><span·class="w">167 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="9659236265-6">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="9659236265-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="8697434447-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8697434447-2">(</span><span·class="p"·data-group-id="8697434447-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:·8df3072babfa5b96d01132aa1889ebb712d056a399a796baeadc6a087512a284·...·]-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="9432468939-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="9432468939-2">(</span><span·class="p"·data-group-id="9432468939-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:·e75f629a86c13354dc6bc1789785d32c5ae88a6072d6d36d69b4d6e524f768fc·...·]-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="8697434447-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="9432468939-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="8697434447-6">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="8697434447-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="9432468939-6">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="9432468939-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="8697434447-7">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="8697434447-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="9432468939-7">[</span><span·class="w">·</span><span·class="mf">3.61</span><span·class="p"·data-group-id="9432468939-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="8697434447-8">[</span><span·class="w">·</span><span·class="mf">4.82</span><span·class="p"·data-group-id="8697434447-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="9432468939-8">[</span><span·class="w">·</span><span·class="mf">4.82</span><span·class="p"·data-group-id="9432468939-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="8697434447-9">[</span><span·class="w">·</span><span·class="mf">8.43</span><span·class="p"·data-group-id="8697434447-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="9432468939-9">[</span><span·class="w">·</span><span·class="mf">8.43</span><span·class="p"·data-group-id="9432468939-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="8697434447-10">[</span><span·class="mf">19.28</span><span·class="p"·data-group-id="8697434447-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="9432468939-10">[</span><span·class="mf">19.28</span><span·class="p"·data-group-id="9432468939-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="8697434447-11">[</span><span·class="mf">21.69</span><span·class="p"·data-group-id="8697434447-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="9432468939-11">[</span><span·class="mf">21.69</span><span·class="p"·data-group-id="9432468939-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="8697434447-12">[</span><span·class="mf">38.55</span><span·class="p"·data-group-id="8697434447-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="9432468939-12">[</span><span·class="mf">38.55</span><span·class="p"·data-group-id="9432468939-12">]</span><span·class="w">
179 ·····································</span><span·class="mi">83</span><span·class="w">············</span><span·class="p"·data-group-id="8697434447-13">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="8697434447-13">]</span><span·class="w">179 ·····································</span><span·class="mi">83</span><span·class="w">············</span><span·class="p"·data-group-id="9432468939-13">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="9432468939-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="8888506574-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8888506574-2">(</span><span·class="p"·data-group-id="8888506574-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">lists</sp[·...·truncated·by·diffoscope;·len:·247,·SHA:·fa76721a83daa6c711ecb6363472ee770304d8924e14de81923a4d2620526400·...·]-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="8916256451-1">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="8916256451-2">(</span><span·class="p"·data-group-id="8916256451-2">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">·</span><span·class="nc">lists</sp[·...·truncated·by·diffoscope;·len:·247,·SHA:·51d0bea58c7878fa7dd69529d29fbbb24f91a4eb0a623c1f4c82a97a83c1f2a8·...·]-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="8888506574-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:·558,·SHA:·0370e2f6b29bcbc46e6b63f9ba0326e10c0b6f1c769c34bad81a21310b517e73·...·]-1">)</span><span·class="p">.</span><span·class="w">181 ·················</span><span·class="p"·data-group-id="8916256451-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:·558,·SHA:·1ea75da18b23c4d9d8ce2c025c2c383dc200398bf97d5b6c50fbf9d5b0cdc8e7·...·]-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="8888506574-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="8916256451-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="8888506574-8">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="8888506574-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="8916256451-8">[</span><span·class="mf">100.00</span><span·class="p"·data-group-id="8916256451-8">]</span><span·class="w">
185 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="8888506574-9">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="8888506574-9">]</span><span·class="w">185 ····························</span><span·class="mi">32</span><span·class="w">············</span><span·class="p"·data-group-id="8916256451-9">[</span><span·class="w">·</span><span·class="mf">100.0</span><span·class="p"·data-group-id="8916256451-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="4832256069-1">(</span><span·class="ss">test</span><span·class="p"·data-group-id="4832256069-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="4832256069-2">(</span><span·class="p"·data-group-id="4832256069-3">[</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·[·...·truncated·by·diffoscope;·len:·90,·SHA:·5d1202ade8fad1c3067ac6769ef58397a82e8178b73fc50827dc672907c66110·...·]">)</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="9099001552-1">(</span><span·class="ss">test<[·...·truncated·by·diffoscope;·len:·49,·SHA:·e003d905fd73d99c6372f159a316c9743bd801246a1c56dd4c114941f424b4d8·...·]">)</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="9099001552-2">(</span><span·class="p"·data-group-id="9099001552-3">[</span><span·class="ss">test_spawn</span><span·class="p">/</span><span·class="mi">0</span><span·class="p"·data-group-id="9099001552-3">]</span><span·class="p"·data-group-id="9099001552-2">)</span><span·class="p">.</span><span·class="w">
189 </span><span·class="nf">test_spawn</span><span·class="p"·data-group-id="4832256069-4">(</span><span·class="p"·data-group-id="4832256069-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="9099001552-4">(</span><span·class="p"·data-group-id="9099001552-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
190 ····</span><span·class="p"·data-group-id="4832256069-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="4832256069-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·691,·SHA:·1fc7e0235e43b0dabbe42e930e2f0b771f3ff2fa12b5028ae89b3ac566b4d0fc·...·]-6">)</span><span·class="p">,</span><span·class="w">190 ····</span><span·class="p"·data-group-id="9099001552-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="9099001552-5">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·cl[·...·truncated·by·diffoscope;·len:·691,·SHA:·ad5c9fbf1dab817fed9824c34b0d29dc0bdef431a7bbadef9119bb8a5c0c83d3·...·]-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="4832256069-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:·ae34d8d79951d904ad04f8dc98d066b40a0955fc75588b1b203cce6b66d0c1d4·...·]-9">}</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">192 ········</span><span·class="p"·data-group-id="9099001552-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:·409a93e827242b5e9dafb898563380833d25b0ddd0beae975780c5b3d6cfd20b·...·]-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="7825942043-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="7825942043-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·365,·SHA:·53934d7ec2a4f0f4ab85adee8e4bf529341dc5a371d6f5cd9960ca4ac91b41d9·...·]-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="6936152297-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="6936152297-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·365,·SHA:·7ff3573c6bd7ad72a507e3cebc70992221c22c397a06db59595b26ff24c7821b·...·]-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="7825942043-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="6936152297-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="7825942043-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="7825942043-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="6936152297-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="6936152297-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="7825942043-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="7825942043-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="6936152297-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="6936152297-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="7825942043-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="7825942043-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="6936152297-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="6936152297-7">]</span><span·class="w">
200 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="7825942043-8">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="7825942043-8">]</span><span·class="w">200 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="6936152297-8">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="6936152297-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="7825942043-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="6936152297-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="7825942043-10">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="7825942043-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="6936152297-10">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="6936152297-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="7825942043-11">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="7825942043-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="6936152297-11">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="6936152297-11">]</span><span·class="w">
205 ·····························</span><span·class="mi">71</span><span·class="w">············</span><span·class="p"·data-group-id="7825942043-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="7825942043-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="6936152297-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="6936152297-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="5429973261-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="5429973261-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·d65e1fa7e95584f559d811dfa995117461536bdae0f8165daa7c0931b77f6279·...·]-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="6855683292-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="6855683292-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·d394ea97c3bce00259120b08e8d348af8d54e47cc3427c9b68d9e4f7b3f59617·...·]-2">]</span><span·class="p">,</span><span·class="w">
208 ·················</span><span·class="p"·data-group-id="5429973261-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:·e75d260fc628ef73af0fc2a562c7eb737136f654794f893df6edceabd3101871·...·]-1">)</span><span·class="p">.</span><span·class="w">208 ·················</span><span·class="p"·data-group-id="6855683292-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:·285fb9a0cc0398502dedbeb1adea526fa8dc0bbe13412134a5cc4ba267254377·...·]-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="5429973261-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="6855683292-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="5429973261-7">[</span><span·class="mf">68.82</span><span·class="p"·data-group-id="5429973261-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="6855683292-7">[</span><span·class="mf">68.82</span><span·class="p"·data-group-id="6855683292-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="5429973261-8">[</span><span·class="mf">15.05</span><span·class="p"·data-group-id="5429973261-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="6855683292-8">[</span><span·class="mf">15.05</span><span·class="p"·data-group-id="6855683292-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="5429973261-9">[</span><span·class="w">·</span><span·class="mf">7.53</span><span·class="p"·data-group-id="5429973261-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="6855683292-9">[</span><span·class="w">·</span><span·class="mf">7.53</span><span·class="p"·data-group-id="6855683292-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="5429973261-10">[</span><span·class="w">·</span><span·class="mf">6.45</span><span·class="p"·data-group-id="5429973261-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="6855683292-10">[</span><span·class="w">·</span><span·class="mf">6.45</span><span·class="p"·data-group-id="6855683292-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="5429973261-11">[</span><span·class="w">·</span><span·class="mf">2.15</span><span·class="p"·data-group-id="5429973261-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="6855683292-11">[</span><span·class="w">·</span><span·class="mf">2.15</span><span·class="p"·data-group-id="6855683292-11">]</span><span·class="w">
215 ··································</span><span·class="mi">93</span><span·class="w">············</span><span·class="p"·data-group-id="5429973261-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="5429973261-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:·437,·SHA:·f8ba8f4dc59610755f5e93f9e168b836f45c63c4077ab5e96585c4bacac7099a·...·]6-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="6855683292-12">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="6855683292-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:·437,·SHA:·785b5af905bd35f6079ed1a17e9612db053275da430117a8c097359f7acc0e1a·...·]6-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="2339612226-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:·183,·SHA:·c9271bc0183f2661b30f61221b201b32bc9c20ebbcd38315d1533552be5d093f·...·]6-2">)</span><span·class="p">.</span><span·class="w">216 ·······································</span><span·class="p"·data-group-id="3448332716-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:·183,·SHA:·a4a88b6d2ea10d59db0caa1287b49cbf4286eb6c533beb48f4cba6956f47f000·...·]6-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="2339612226-4">(</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">inspect</span><span·class="p"·data-group-id="2339612226-5">(</span><span·class="n">ProfileData</span><span·class="p">,</span><span·class="w">·</span><span·class="ss[·...·truncated·by·diffoscope;·len:·376,·SHA:·1f78870647102d82acffb4d49e88030a22b7b48d1415639240b11713b0fb8804·...·]6-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="3448332716-4">(</span><span·class="nc">tprof</span><span·class="p">:</span><span·class="nf">inspect</span><span·class="p"·data-group-id="3448332716-5">(</span><span·class="n">ProfileData</span><span·class="p">,</span><span·class="w">·</span><span·class="ss[·...·truncated·by·diffoscope;·len:·376,·SHA:·03123607243d6ca05795c634c21a81aff287390620c91a1f6fc88bbdfdfbc89c·...·]6-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="2339612226-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="3448332716-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="2339612226-8">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="2339612226-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="3448332716-8">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="3448332716-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="2339612226-9">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="2339612226-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="3448332716-9">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="3448332716-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="2339612226-10">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="2339612226-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="3448332716-10">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="3448332716-10">]</span><span·class="w">
224 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="2339612226-11">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="2339612226-11">]</span><span·class="w">224 ··································</span><span·class="mi">22</span><span·class="w">············</span><span·class="p"·data-group-id="3448332716-11">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="3448332716-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="2339612226-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="3448332716-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="2339612226-13">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="2339612226-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="3448332716-13">[</span><span·class="mf">90.14</span><span·class="p"·data-group-id="3448332716-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="2339612226-14">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="2339612226-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="3448332716-14">[</span><span·class="w">·</span><span·class="mf">9.86</span><span·class="p"·data-group-id="3448332716-14">]</span><span·class="w">
229 ·····························</span><span·class="mi">71</span><span·class="w">············</span><span·class="p"·data-group-id="2339612226-15">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="2339612226-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="3448332716-15">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="3448332716-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.3/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="5556254055-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="5556254055-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·9565f21dbf703d3b89fdc48e906c7cd7098b27bdf396647c594666e96bad5d58·...·]-2">]</span><span·class="p">,</span><span·class="w">231 option·for·<a·href="../../../../lib/kernel-10.2.3/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="8844826843-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="8844826843-2">[</span><span·class="p"·data-gr[·...·truncated·by·diffoscope;·len:·18,·SHA:·22e290546b98042939cd36fbb64f89c3fca87b9844f86eec47259ab48f10642c·...·]-2">]</span><span·class="p">,</span><span·class="w">
232 ·················</span><span·class="p"·data-group-id="5556254055-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:·a5f9016b2065b0a52bde3b04d1d6fa9aafadef902c53742bf1e402026352ced7·...·]-1">)</span><span·class="p">.</span><span·class="w">232 ·················</span><span·class="p"·data-group-id="8844826843-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:·2e44a4f2034f9918861cecba9d689749878abe2f1b51e76b8bfd0b43b6abbfa5·...·]-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="5556254055-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="8844826843-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="5556254055-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="5556254055-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="8844826843-5">[</span><span·class="w">·</span><span·class="mf">9.09</span><span·class="p"·data-group-id="8844826843-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="5556254055-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="5556254055-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="8844826843-6">[</span><span·class="mf">27.27</span><span·class="p"·data-group-id="8844826843-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="5556254055-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="5556254055-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="8844826843-7">[</span><span·class="mf">63.64</span><span·class="p"·data-group-id="8844826843-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="7926591445-1">(</span><span·class="p"·data-group-id="7926591445-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="5960234504-1">(</span><span·class="p"·data-group-id="5960234504-1">)</span><span·class="p">.</span><span·class="w">
240 </span><span·class="p"·data-group-id="7926591445-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="7926591445-2">}</span><span·class="gp·unselectable">240 </span><span·class="p"·data-group-id="5960234504-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="5960234504-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="7926591445-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="7926591445-4">(</span><span·class="p"·data-group-id="7926591445-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="7926591445-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="7926591445-6">(</span><span·class="p"·data-group-id="7926591445-6">)</span><span·class="p"·data-group-id="7926591445-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="7926591445-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:·3ca1fdc0beb375ad283b4a2240fc8624502c5afb5b377c468280659feac558ec·...·]</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="5960234504-3">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5960234504-4">(</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·565,·SHA:·56eb7f0b8195717058ec21b2b5b5eb489fb3f0c15a95853dd37ba6bfebdf0d34·...·]</span><span·class="w">
 242 ·················</span><span·class="p"·data-group-id="5960234504-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="5960234504-8">[</span><span·class="ss">pg</span><span·class="p"·data-group-id="5960234504-8">]</span><span·class="p"·data-group-id="5960234504-7">}</span><span·class="p"·data-group-id="5960234504-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="7926591445-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="5960234504-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="7926591445-10">[</span><span·class="w">·</span><span·class="mf">1.80</span><span·class="p"·data-group-id="7926591445-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="5960234504-10">[</span><span·class="w">·</span><span·class="mf">1.80</span><span·class="p"·data-group-id="5960234504-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="7926591445-11">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7926591445-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="5960234504-11">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="5960234504-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="7926591445-12">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7926591445-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="5960234504-12">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="5960234504-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="7926591445-13">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7926591445-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="5960234504-13">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="5960234504-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="7926591445-14">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="7926591445-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="5960234504-14">[</span><span·class="w">·</span><span·class="mf">2.70</span><span·class="p"·data-group-id="5960234504-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="7926591445-15">[</span><span·class="w">·</span><span·class="mf">3.60</span><span·class="p"·data-group-id="7926591445-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="5960234504-15">[</span><span·class="w">·</span><span·class="mf">3.60</span><span·class="p"·data-group-id="5960234504-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="7926591445-16">[</span><span·class="w">·</span><span·class="mf">5.41</span><span·class="p"·data-group-id="7926591445-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="5960234504-16">[</span><span·class="w">·</span><span·class="mf">5.41</span><span·class="p"·data-group-id="5960234504-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="7926591445-17">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="7926591445-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="5960234504-17">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="5960234504-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="7926591445-18">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="7926591445-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="5960234504-18">[</span><span·class="w">·</span><span·class="mf">7.21</span><span·class="p"·data-group-id="5960234504-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="7926591445-19">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="7926591445-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="5960234504-19">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="5960234504-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="7926591445-20">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="7926591445-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="5960234504-20">[</span><span·class="w">·</span><span·class="mf">8.11</span><span·class="p"·data-group-id="5960234504-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="7926591445-21">[</span><span·class="w">·</span><span·class="mf">9.01</span><span·class="p"·data-group-id="7926591445-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="5960234504-21">[</span><span·class="w">·</span><span·class="mf">9.01</span><span·class="p"·data-group-id="5960234504-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="7926591445-22">[</span><span·class="w">·</span><span·class="mf">9.91</span><span·class="p"·data-group-id="7926591445-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="5960234504-22">[</span><span·class="w">·</span><span·class="mf">9.91</span><span·class="p"·data-group-id="5960234504-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="7926591445-23">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="7926591445-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="5960234504-23">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="5960234504-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="7926591445-24">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="7926591445-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="5960234504-24">[</span><span·class="mf">14.41</span><span·class="p"·data-group-id="5960234504-24">]</span><span·class="w">
260 ·······································</span><span·class="mi">111</span><span·class="w">············</span><span·class="p"·data-group-id="7926591445-25">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="7926591445-25">]</span><span·class="w">260 ·······································</span><span·class="mi">111</span><span·class="w">············</span><span·class="p"·data-group-id="5960234504-25">[</span><span·class="mf">100.0</span><span·class="p"·data-group-id="5960234504-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="7926591445-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="5960234504-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="7926591445-27">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="7926591445-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="5960234504-27">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="5960234504-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="7926591445-28">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="7926591445-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="5960234504-28">[</span><span·class="w">·</span><span·class="mf">3.03</span><span·class="p"·data-group-id="5960234504-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="7926591445-29">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="7926591445-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="5960234504-29">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="5960234504-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="7926591445-30">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="7926591445-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="5960234504-30">[</span><span·class="w">·</span><span·class="mf">4.04</span><span·class="p"·data-group-id="5960234504-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="7926591445-31">[</span><span·class="w">·</span><span·class="mf">5.05</span><span·class="p"·data-group-id="7926591445-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="5960234504-31">[</span><span·class="w">·</span><span·class="mf">5.05</span><span·class="p"·data-group-id="5960234504-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="7926591445-32">[</span><span·class="w">·</span><span·class="mf">6.06</span><span·class="p"·data-group-id="7926591445-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="5960234504-32">[</span><span·class="w">·</span><span·class="mf">6.06</span><span·class="p"·data-group-id="5960234504-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="7926591445-33">[</span><span·class="w">·</span><span·class="mf">8.08</span><span·class="p"·data-group-id="7926591445-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="5960234504-33">[</span><span·class="w">·</span><span·class="mf">8.08</span><span·class="p"·data-group-id="5960234504-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="7926591445-34">[</span><span·class="mf">10.10</span><span·class="p"·data-group-id="7926591445-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="5960234504-34">[</span><span·class="mf">10.10</span><span·class="p"·data-group-id="5960234504-34">]</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="2818967445-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="2818967445-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="9059274946-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="9059274946-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="2818967445-2">(</span><span·class="p"·data-group-id="2818967445-3">[</span><span·class="ss">t</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="2818967445-3">]</span><span·class="p"·data-group-id="2818967445-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="9059274946-2">(</span><span·class="p"·data-group-id="9059274946-3">[</span><span·class="ss">t</span><span·class="p">/</span><span·class="mi">1</span><span·class="p"·data-group-id="9059274946-3">]</span><span·class="p"·data-group-id="9059274946-2">)</span><span·class="p">.</span><span·class="w">
  
146 </span><span·class="nf">t</span><span·class="p"·data-group-id="2818967445-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="2818967445-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="9059274946-4">(</span><span·class="n">A</span><span·class="p"·data-group-id="9059274946-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="2818967445-5">(</span><span·class="n">A</span><span·class="p"·data-group-id="2818967445-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="9059274946-5">(</span><span·class="n">A</span><span·class="p"·data-group-id="9059274946-5">)</span><span·class="p">.</span><span·class="w">
  
148 </span><span·class="nf">t2</span><span·class="p"·data-group-id="2818967445-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="2818967445-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="9059274946-6">(</span><span·class="p">_</span><span·class="p"·data-group-id="9059274946-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="8700607987-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="8700607987-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="6051454666-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="6051454666-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="8700607987-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="8700607987-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="6051454666-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="6051454666-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="3569041141-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="3569041141-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="4171621075-1">(</span><span·class="ss">my_module</span><span·class="p"·data-group-id="4171621075-1">)</span><span·class="w">
157 </span><span·class="p"·data-group-id="3569041141-2">[</span><span·class="p"·data-group-id="3569041141-3">{</span><span·class="ss">deprecated</span><span·class="p">,</span><span·class="p"·data-group-id="3569041141-4">[</span><span·class="p"·data-group-id="3569041141-4">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·7aff07bdbfc192f8867f4326c5624ca9e509018f73b420d494fe8d3a45533056·...·]-3">}</span><span·class="p">,</span><span·class="w">157 </span><span·class="p"·data-group-id="4171621075-2">[</span><span·class="p"·data-group-id="4171621075-3">{</span><span·class="ss">deprecated</span><span·class="p">,</span><span·class="p"·data-group-id="4171621075-4">[</span><span·class="p"·data-group-id="4171621075-4">]</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·24,·SHA:·951ca126693fbe05db990fc201397e4389fd33f2a355f351aabfd542e24628d1·...·]-3">}</span><span·class="p">,</span><span·class="w">
158 ·</span><span·class="p"·data-group-id="3569041141-5">{</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="p"·data-group-id="3569041141-6">[</span><span·class="p"·data-group-id="3569041141-7">{</span><span·class="p"·data-group-id="3569041141-8">{</span><span·class="ss">m[·...·truncated·by·diffoscope;·len:·575,·SHA:·8607db0d016e0b0ffba8cbff9a7b1e64bf076980ce3bac27191bb99cf7360cc2·...·]-5">}</span><span·class="p">,</span><span·class="w">158 ·</span><span·class="p"·data-group-id="4171621075-5">{</span><span·class="ss">undefined</span><span·class="p">,</span><span·class="p"·data-group-id="4171621075-6">[</span><span·class="p"·data-group-id="4171621075-7">{</span><span·class="p"·data-group-id="4171621075-8">{</span><span·class="ss">m[·...·truncated·by·diffoscope;·len:·575,·SHA:·7566de7aaca15a267c00785ee2d0a7d7144cdf2cbb49e725bb68aec362ec6eb6·...·]-5">}</span><span·class="p">,</span><span·class="w">
159 ·</span><span·class="p"·data-group-id="3569041141-10">{</span><span·class="ss">unused</span><span·class="p">,</span><span·class="p"·data-group-id="3569041141-11">[</span><span·class="p"·data-group-id="3569041141-12">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="s[·...·truncated·by·diffoscope;·len:·264,·SHA:·6d6832f5f1da5c10295ab6c232a646544d6dccd3ef2d7ee15ec5bf43a035624f·...·]-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="4171621075-10">{</span><span·class="ss">unused</span><span·class="p">,</span><span·class="p"·data-group-id="4171621075-11">[</span><span·class="p"·data-group-id="4171621075-12">{</span><span·class="ss">my_module</span><span·class="p">,</span><span·class="s[·...·truncated·by·diffoscope;·len:·264,·SHA:·daab52249e907b0afe72aa52d850ed485b537bb8b8ec516d93098aeece28d5cb·...·]-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="8953596424-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="8953596424-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="2632784635-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="2632784635-1">)</span><span·class="p">.</span><span·class="w">
175 </span><span·class="p"·data-group-id="8953596424-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="8953596424-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="2632784635-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="2632784635-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="6582710187-1">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6582710187-2">[</span><span·class="p"·data-group-id="6582710187-3">{</span><span·class="ss">verbose</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·415,·SHA:·76ed414cea751c1b421adc430e8f77768670e724f8b2c4b9c6c5ba7a02f1efd2·...·]-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="8140276985-1">(</span><span·class="ss">s</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8140276985-2">[</span><span·class="p"·data-group-id="8140276985-3">{</span><span·class="ss">verbose</span><span·class="p">,</span>[·...·truncated·by·diffoscope;·len:·415,·SHA:·0ac6c38bc297d7891aa2b0e7f20d505bfb073fa4ba588e02e899290a53770f69·...·]-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="6582710187-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="6582710187-6">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·326,·SHA:·3272c58e18a20cdac7182a934ca7ae76061d1244ce5f9e930d1df7cbb0d4690c·...·]-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="8140276985-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="8140276985-6">(</span><span·class="p"·data-grou[·...·truncated·by·diffoscope;·len:·326,·SHA:·f5f3d05f5f72115e34f5f1285a811fba6ec70dce3a1ef79c541d6ca829407c2a·...·]-5">)</span><span·class="p">.</span><span·class="w">
184 </span><span·class="p"·data-group-id="6582710187-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">otp</span><span·class="p"·data-group-id="6582710187-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="8140276985-8">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="ss">otp</span><span·class="p"·data-group-id="8140276985-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.3/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.3/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="8792343207-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="8792343207-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="0874977363-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="0874977363-1">)</span><span·class="p">.</span><span·class="w">
187 </span><span·class="p"·data-group-id="8792343207-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8792343207-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="8792[·...·truncated·by·diffoscope;·len:·457,·SHA:·8c4f6df090c55efc471cafe8ef70b36a0d934403b63c335ce94725eef98313e3·...·]-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="0874977363-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="0874977363-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="0874[·...·truncated·by·diffoscope;·len:·457,·SHA:·6d18ea2f6de416ab7093f3079af1e83157497ab642ff54bccb05e098de105245·...·]-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="2652806619-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="2652806619-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="9120049935-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="9120049935-1">)</span><span·class="p">.</span><span·class="w">
195 </span><span·class="p"·data-group-id="2652806619-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="2652806619-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="2652806619-3">]</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·868d5604608e2ab87ee203595e80e9824ae809ff8a7641a255b384f98d8ec2ae·...·]-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="9120049935-2">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="p"·data-group-id="9120049935-3">[</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="9120049935-3">]</span><span·[·...·truncated·by·diffoscope;·len:·35,·SHA:·f5e3e80a23cb510b62177d6c364782c644d2078b5c0a0303b1ad414e8940d285·...·]-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="9068067093-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="9068067093-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="1413630971-1">(</span><span·class="ss">s</span><span·class="p"·data-group-id="1413630971-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="9068067093-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="9068067093-3">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·f8705d642a95e2c79673032ea742624a7a0d61cdd09628c44e6e5c59d4ae4e56·...·]-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="1413630971-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="1413630971-3">(</span><span·class="p"·data-gro[·...·truncated·by·diffoscope;·len:·70,·SHA:·635412084af02885a1c42aa5613b5bad900b48e15ff3cfb87d1fa103eaeb15c5·...·]-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="3320922432-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="3320922432-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="0609307125-1">(</span><span·class="n">S</span><span·class="p"·data-group-id="0609307125-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
272 ··</span><span·class="p"·data-group-id="3320922432-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="3320922432-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·285,·SHA:·4cf768e520576fbb166701d75787ea258c455be865eedf84cbc61e9c2f598226·...·]-3">)</span><span·class="p">,</span><span·class="w">272 ··</span><span·class="p"·data-group-id="0609307125-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="0609307125-2">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·class[·...·truncated·by·diffoscope;·len:·285,·SHA:·9c4618ec8ebc58186cb0d5f501b627b61632c2ec0bfee65b098a733d1d8c4796·...·]-3">)</span><span·class="p">,</span><span·class="w">
273 ··</span><span·class="p"·data-group-id="3320922432-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="3320922432-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·270,·SHA:·1baf932ff64a09dfecc45ea1a46d472a6c49c752f0523d5c5624b94b6e489536·...·]-5">)</span><span·class="p">,</span><span·class="w">273 ··</span><span·class="p"·data-group-id="0609307125-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="0609307125-4">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·270,·SHA:·346ead110b64f6f3371ba22dfdc6ae8f42a869fd6064f948ae3d56cf805dfa41·...·]-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="3320922432-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="3320922432-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="0609307125-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="0609307125-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="3320922432-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="3320922432-8">[</span><span·class="n">M</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·733516172cca9b6e52776be500649717d56e26af6d6cde0f9e7b4161a097e776·...·]-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="0609307125-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="0609307125-8">[</span><span·class="n">M</span><[·...·truncated·by·diffoscope;·len:·93,·SHA:·64593abad5a5216fa70e9b402573d2e71de2d97e32a210a3c009139e025fec7a·...·]-7">)</span><span·class="p">,</span><span·class="w">
276 ······</span><span·class="p"·data-group-id="3320922432-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="3320922432-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·450,·SHA:·33d4d00f996e57f3157974766a3d93939e3b1bd517c7711d805b080b431593f1·...·]-10">)</span><span·class="p">,</span><span·class="w">276 ······</span><span·class="p"·data-group-id="0609307125-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="0609307125-9">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·clas[·...·truncated·by·diffoscope;·len:·450,·SHA:·d3971e378f2aa0ee615af15cf070493ac59bd9c0fb7ccb1136f0ff2cbd3080aa·...·]-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="3320922432-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="3320922432-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="0609307125-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="0609307125-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="3320922432-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="3320922432-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="0609307125-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="0609307125-13">)</span><span·class="p">,</span><span·class="w">
281 ··</span><span·class="p"·data-group-id="3320922432-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="3320922432-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·291,·SHA:·536d41f1cb2417c0601df4bab87fe3cbadceac338c8f5c8b7032b76f23a7f620·...·]-15">)</span><span·class="p">,</span><span·class="w">281 ··</span><span·class="p"·data-group-id="0609307125-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="0609307125-14">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><span·c[·...·truncated·by·diffoscope;·len:·291,·SHA:·8a7b810fcd7f4d36240876a674d782957e779089945ceb2f1966bdc91f1d8850·...·]-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="3320922432-16">(</span><span·class="p"·data-group-id="3320922432-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="3320922432-17">)</span><[·...·truncated·by·diffoscope;·len:·138,·SHA:·d9370b58cd928b900887bf387e3b27f5c782cbf831fb81d5f9492e817713017c·...·]-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="0609307125-16">(</span><span·class="p"·data-group-id="0609307125-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="0609307125-17">)</span><[·...·truncated·by·diffoscope;·len:·138,·SHA:·b88e875a2276d6b1a7ed7dc4e42ff5e96e46296d857e394cd1a3da4416bc9adc·...·]-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="0316036048-1">(</span><span·class="p"·data-group-id="0316036048-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="2630628359-1">(</span><span·class="p"·data-group-id="2630628359-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="0316036048-2">(</span><span·class="ss">wxVERTICAL</span><span·class="p"·data-group-id="0316036048-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="2630628359-2">(</span><span·class="ss">wxVERTICAL</span><span·class="p"·data-group-id="2630628359-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="8915376286-1">(</span><span·class="p"·data-group-id="8915376286-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="6514079284-1">(</span><span·class="p"·data-group-id="6514079284-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="8915376286-2">(</span><span·class="n">MyWin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8915376286-3">[</span><span·class="p"·data-group-id="8915376286-4">{</span><span·class="ss">dir</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·204,·SHA:·3231412f589255c1ade33221f6dfbcce76dca9daa7250ce53feabcda63f41d48·...·]-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="6514079284-2">(</span><span·class="n">MyWin</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="6514079284-3">[</span><span·class="p"·data-group-id="6514079284-4">{</span><span·class="ss">dir</span><span·class="p">,</span><[·...·truncated·by·diffoscope;·len:·204,·SHA:·70255bbf9c32d22ce860ebf51e97a138b5009f403a65b6d1e380670fcf786e26·...·]-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="8915376286-5">(</span><span·class="n">MyWin</span><span·class="p"·data-group-id="8915376286-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="6514079284-5">(</span><span·class="n">MyWin</span><span·class="p"·data-group-id="6514079284-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.1/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.1/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="5312499620-1">(</span><span·class="p"·data-group-id="5312499620-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="4147909419-1">(</span><span·class="p"·data-group-id="4147909419-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="5312499620-2">(</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">null</span><span·class="p"·data-group-id="5312499620-3">(</span><span·class="p"·data-group-id="5312499620-3">)</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·309,·SHA:·d2b057f43b7c998ed8994e49b237ba3b066adf4f831921e2ea2067bcc37d3a02·...·]-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="4147909419-2">(</span><span·class="nc">wx</span><span·class="p">:</span><span·class="nf">null</span><span·class="p"·data-group-id="4147909419-3">(</span><span·class="p"·data-group-id="4147909419-3">)</span><span·class="p">,</span><span·class="w">·</span><s[·...·truncated·by·diffoscope;·len:·309,·SHA:·9a13eb36f26b3e78b6d70d6c0251aac4b9d417fee3f1d06511069fd84b8c630f·...·]-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="5312499620-5">(</span><span·class="p"·data-group-id="5312499620-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="4147909419-5">(</span><span·class="p"·data-group-id="4147909419-5">)</span><span·class="p">,</span><span·class="w">
201 ··</span><span·class="nf">spawn</span><span·class="p"·data-group-id="5312499620-6">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="5312499620-7">(</span><span·class="p"·data-group-id="5312499620-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="4147909419-6">(</span><span·class="nf">fun</span><span·class="p"·data-group-id="4147909419-7">(</span><span·class="p"·data-group-id="4147909419-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="5312499620-8">(</span><span·class="n">Env</span><span·class="p"·data-group-id="5312499620-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="4147909419-8">(</span><span·class="n">Env</span><span·class="p"·data-group-id="4147909419-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="5312499620-6">)</span><span·class="p">,</span><span·class="w">205 ········</span><span·class="k">end</span><span·class="p"·data-group-id="4147909419-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
1.54 MB
./usr/share/doc/erlang-doc/html/lib/wx-2.4.3/doc/html/wx.epub
39.3 KB
zipinfo {}
Max HTML report size reached
1.47 MB
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,·Mar·18·2025·07:56: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,·Mar·18·2025·08:49:50,·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
    
Offset 1, 14 lines modifiedOffset 1, 14 lines modified
1 <?xml·version="1.0"·encoding="utf-8"?>1 <?xml·version="1.0"·encoding="utf-8"?>
2 <package·xmlns="http://www.idpf.org/2007/opf"·unique-identifier="project-wx"·version="3.0">2 <package·xmlns="http://www.idpf.org/2007/opf"·unique-identifier="project-wx"·version="3.0">
3 ··<metadata·xmlns:dc="http://purl.org/dc/elements/1.1/">3 ··<metadata·xmlns:dc="http://purl.org/dc/elements/1.1/">
4 ····<dc:title>wx·-·2.4.3</dc:title>4 ····<dc:title>wx·-·2.4.3</dc:title>
5 ····<dc:identifier·id="project-wx">urn:uuid:bd822396-73bf-bcce-7811-d2f90c58ab29</dc:identifier>5 ····<dc:identifier·id="project-wx">urn:uuid:2a21d146-9c0d-e98e-2554-fc7eb28071c0</dc:identifier>
6 ····<dc:language>en</dc:language>6 ····<dc:language>en</dc:language>
7 ····<meta·property="dcterms:modified">2025-03-18T07:56:03Z</meta>7 ····<meta·property="dcterms:modified">2025-03-18T08:49:50Z</meta>
8 ··</metadata>8 ··</metadata>
9 ··<manifest>9 ··<manifest>
10 ····<item·id="nav"·href="nav.xhtml"·media-type="application/xhtml+xml"·properties="nav·scripted"/>10 ····<item·id="nav"·href="nav.xhtml"·media-type="application/xhtml+xml"·properties="nav·scripted"/>
11 ····<item·id="cover"·href="title.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>11 ····<item·id="cover"·href="title.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>
12 ····<item·id="notes"·href="notes.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>12 ····<item·id="notes"·href="notes.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>
13 ····<item·id="chapter"·href="chapter.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>13 ····<item·id="chapter"·href="chapter.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>
14 ····<item·id="gl"·href="gl.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>14 ····<item·id="gl"·href="gl.xhtml"·media-type="application/xhtml+xml"·properties="scripted"/>
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="0521813798-1">(</span><span·class="ss">myDialog</span><span·class="p"·data-group-id="0521813798-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="3429412045-1">(</span><span·class="ss">myDialog</span><span·class="p"·data-group-id="3429412045-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="0521813798-2">(</span><span·class="p"·data-group-id="0521813798-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:·712941585400844910b8422d83765f57c08d707b4bca9b5f138e5dcb9c9d3663·...·]-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="3429412045-2">(</span><span·class="p"·data-group-id="3429412045-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:·d79445f67747e65a7361af2ea25d4dc399fc58ddf42f0d32bb1900f46997d987·...·]-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="0521813798-4">(</span><span·class="p"·data-group-id="0521813798-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="3429412045-4">(</span><span·class="p"·data-group-id="3429412045-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="0521813798-5">]</span><span·class="p"·data-group-id="0521813798-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="3429412045-5">]</span><span·class="p"·data-group-id="3429412045-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="0521813798-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="0521813798-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="3429412045-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="3429412045-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="0521813798-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="0521813798-8">[</span><span·class="n">Parent</span><span·class="p">,</span><span·class="n">Id</span><s[·...·truncated·by·diffoscope;·len:·246,·SHA:·8a027f2d043c090b9f85ff5a9f662a5eeb89e6b39cd75d5a37c8a6efd62db50f·...·]-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="3429412045-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="3429412045-8">[</span><span·class="n">Parent</span><span·class="p">,</span><span·class="n">Id</span><s[·...·truncated·by·diffoscope;·len:·246,·SHA:·fee89503a31487b27a10141c63bfcf45c809e970b6465a702f82640447c1488a·...·]-7">)</span><span·class="p">.</span><span·class="w">
  
147 ··</span><span·class="nf">show</span><span·class="p"·data-group-id="0521813798-10">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="0521813798-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="3429412045-10">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="3429412045-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="0521813798-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="0521813798-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="3429412045-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="3429412045-11">)</span><span·class="p">.</span><span·class="w">
  
149 ··</span><span·class="nf">destroy</span><span·class="p"·data-group-id="0521813798-12">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="0521813798-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="3429412045-12">(</span><span·class="n">Dialog</span><span·class="p"·data-group-id="3429412045-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="0521813798-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="0521813798-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="3429412045-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="3429412045-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="0521813798-14">(</span><span·class="p"·data-group-id="0521813798-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="0521813798-15">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·753378b59bd8d057cac0bf8d30f5528fe67d8f7671caed0de7bf608cedfb3011·...·]-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="3429412045-14">(</span><span·class="p"·data-group-id="3429412045-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="3429412045-15">]</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·43028ae0534d74b8e220dd9e2690a65ef6177781642a39df6a386dd820e1e704·...·]-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="0521813798-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:·d152f40370f8ca7ed10af31777a43312c82b4e0a472d1ed7edc69bfe4e56d950·...·]-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="3429412045-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:·eff350999be5349e09cb3a6e3e44bbd6f27dbf66ca334becffdcaf6760722614·...·]-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="0521813798-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="0521813798-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="3429412045-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="3429412045-18">)</span><span·class="p">,</span><span·class="w">
156 ·····</span><span·class="p"·data-group-id="0521813798-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="0521813798-19">}</span><span·class="p">.</span><span·class="w">156 ·····</span><span·class="p"·data-group-id="3429412045-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="3429412045-19">}</span><span·class="p">.</span><span·class="w">
  
157 ··</span><span·class="nf">handle_call</span><span·class="p"·data-group-id="0521813798-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:·50b4814d677a58134a3a64a942818fcdfcf0f721a2836e2666c65e96952f786e·...·]-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="3429412045-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:·4b987371b4b73ffc467e6d39cdeeba18882e3fa51d969523ca212c3f159c0964·...·]-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="0521813798-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="0521813798-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="3429412045-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="3429412045-21">)</span><span·class="p">,</span><span·class="w">
159 ·····</span><span·class="p"·data-group-id="0521813798-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="0521813798-22">}</span><span·class="p">;</span><span·class="w">159 ·····</span><span·class="p"·data-group-id="3429412045-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="3429412045-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="0521813798-23">(</span><span·class="o">#</span><span·class="ss">wx</span><span·class="p"·data-group-id="0521813798-24">{</span><span·class="p"·data-group-id="0521813798-24">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·51c3063ba8bda90526db4d65d3ba550b74f75b128246926749e18e2796751fc2·...·]-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="3429412045-23">(</span><span·class="o">#</span><span·class="ss">wx</span><span·class="p"·data-group-id="3429412045-24">{</span><span·class="p"·data-group-id="3429412045-24">}</span><span·class="p">,</span><span·class="w">·</span><span·class="n">State</span[·...·truncated·by·diffoscope;·len:·42,·SHA:·39590a2a4af5966c1a619f51c15ca03182edb934a46d5a5f3f224eb246ca6747·...·]-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="0521813798-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="0521813798-26">[</span><span·class="p"·data-group-id="0521813798-26">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·27a5c5a0f549f15e4abcba61139da9eb3babeba63e5eda702a3a42603f16e56f·...·]-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="3429412045-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="3429412045-26">[</span><span·class="p"·data-group-id="3429412045-26">]</sp[·...·truncated·by·diffoscope;·len:·44,·SHA:·75ffcb2ff4d5afda88c66cf8588c255368527998ab062d76c535b5016f94bd19·...·]-25">)</span><span·class="p">,</span><span·class="w">
163 ·····</span><span·class="p"·data-group-id="0521813798-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="0521813798-27">}</span><span·class="p">;</span><span·class="w">163 ·····</span><span·class="p"·data-group-id="3429412045-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="3429412045-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.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="6844747708-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="6844747708-2">(</span><span·class="p"·data-group-id="6844747708-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·494,·SHA:·fee9a485c754c7530819db6bfaf0ecd048c863a203ac9b61b34a1e963ace3d4e·...·]-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="1796399864-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="1796399864-2">(</span><span·class="p"·data-group-id="1796399864-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·494,·SHA:·f2e371d2f991049a2d36392cd30e037242f549250b0e008aecb3387dfcec5e79·...·]-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="9136446166-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="9136446166-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="9840827064-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="9840827064-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="9136446166-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="9136446166-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="9840827064-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="9840827064-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="9136446166-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="9136446166-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="9840827064-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="9840827064-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="9136446166-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="9136446166-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="9840827064-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="9840827064-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="8362906534-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="8362906534-2">(</span><span·class="p"·data-group-id="8362906534-2">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·490,·SHA:·b2cb1a40f18beed2e0e259960ebaaceebea5ef92a1eb330737f8d36c08adaa23·...·]-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="8100369302-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="8100369302-2">(</span><span·class="p"·data-group-id="8100369302-2">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·490,·SHA:·2bde06b8d451377a311fa063e957e44de25b37580e61ac34ba0c2f30033bdc6f·...·]-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="6810992001-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="6810992001-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="2629400171-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="2629400171-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="6810992001-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="6810992001-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="2629400171-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="2629400171-2">)</span><span·class="p">,</span><span·class="w">
157 ···</span><span·class="p"·data-group-id="6810992001-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="6810992001-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class=[·...·truncated·by·diffoscope;·len:·241,·SHA:·81325c656531ea154e90757c5ab628b66f46dad305f5f50c02777d8ec18b60a3·...·]1-4">)</span><span·class="p">,</span><span·class="w">157 ···</span><span·class="p"·data-group-id="2629400171-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="2629400171-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class=[·...·truncated·by·diffoscope;·len:·241,·SHA:·b613f1c910779eb3394d63b4f941d7e041686ccfb0d3d05863822ee125d33311·...·]1-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="6810992001-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="6810992001-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="2629400171-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="2629400171-5">)</span><span·class="p">,</span><span·class="w">
159 ···</span><span·class="p"·data-group-id="6810992001-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="6810992001-6">}</span><span·class="w">159 ···</span><span·class="p"·data-group-id="2629400171-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="2629400171-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="6761227445-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="6761227445-2">(</span><span·class="p"·data-group-id="6761227445-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·494,·SHA:·d6d07a82dcfabeae196db244762455d6900b3fb417112ab5d5bbc2b5dff4ed70·...·]-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="8464481587-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="8464481587-2">(</span><span·class="p"·data-group-id="8464481587-2">)</span><span·class="p"·data[·...·truncated·by·diffoscope;·len:·494,·SHA:·b76364026c0b32a9c2dadaf4d8387a139b5384dd2ddf6b1ddae715c6ddc51a7c·...·]-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="8002874095-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8002874095-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:·78780da4dd48100c6bc06a3e843b5b2a1c6bd614ac6a5ea2b823aabb22214045·...·]-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">165 ···</span><span·class="p"·data-group-id="4729514640-1">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4729514640-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:·10dd7ecee2bbabfc1404ce88822ac4caa4171751a79dcfb4e3ebba1c07b6273a·...·]-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
166 ···</span><span·class="p"·data-group-id="8002874095-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="8002874095-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:·99dc847df5bc3883f3b00c9f0b6a7d6df02d597579013693c62ec34466b6fafc·...·]-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">166 ···</span><span·class="p"·data-group-id="4729514640-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="w">·</span><span·class="p"·data-group-id="4729514640-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:·6e55a8af3c17e3b77ce50580caf08b88671dc12fe6f3bc2d9c74a4c64dac8dba·...·]-3">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
167 ···</span><span·class="p"·data-group-id="8002874095-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="800287409[·...·truncated·by·diffoscope;·len:·330,·SHA:·444ffada1d1499735bc9343b89f8e023422979d083667d67fb4bf49380b8eca9·...·]0-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">167 ···</span><span·class="p"·data-group-id="4729514640-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="472951464[·...·truncated·by·diffoscope;·len:·330,·SHA:·bb9051b009ab74fac6ee5b8be4b0b95b4498cf565b5fd8eed4c449238d92b57d·...·]0-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="8789654580-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="8789654580-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="4856976960-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="4856976960-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="8789654580-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="8789654580-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="4856976960-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="4856976960-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="5031833076-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="5031833076-2">(</span><span·class="p"·data-group-id="5031833076-2">)</span><span·class="[·...·truncated·by·diffoscope;·len:·515,·SHA:·1943191878f9218814aeef6d99d30232e0de3fad153b05abc4f31eddc5cc250b·...·]-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="3984989015-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="3984989015-2">(</span><span·class="p"·data-group-id="3984989015-2">)</span><span·class="[·...·truncated·by·diffoscope;·len:·515,·SHA:·701061181cb855e5d068bde89817eab6e98822b905052972e3269242a36becae·...·]-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="6014459722-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="6014459722-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="1968970473-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="1968970473-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="6014459722-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="6014459722-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="1968970473-2">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="1968970473-2">)</span><span·class="p">,</span><span·class="w">
173 ···</span><span·class="p"·data-group-id="6014459722-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="6014459722-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·165,·SHA:·73630683868c45b369ad39fa113309e86f93edc7fcea9dcf48e3a9cabfa57f1e·...·]-4">)</span><span·class="p">,</span><span·class="w">173 ···</span><span·class="p"·data-group-id="1968970473-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="1968970473-3">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span[·...·truncated·by·diffoscope;·len:·165,·SHA:·c2d13275c534b6487e3259f2cfef54169c3b62348f1de5079427be9acdf0041e·...·]-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="6014459722-5">[</span><span·class="p"·data-group-id="6014459722-5">]</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">175 ······</span><span·class="p"·data-group-id="1968970473-5">[</span><span·class="p"·data-group-id="1968970473-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="6014459722-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="6014459722-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="1968970473-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="1968970473-6">)</span><span·class="p">,</span><span·class="w">
177 ·········</span><span·class="n">Exception</span><span·class="p"·data-group-id="6014459722-7">(</span><span·class="n">GlobalState2</span><span·class="p"·data-group-id="6014459722-7">)</span><span·class="p">;</span><span·class="w">177 ·········</span><span·class="n">Exception</span><span·class="p"·data-group-id="1968970473-7">(</span><span·class="n">GlobalState2</span><span·class="p"·data-group-id="1968970473-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="6014459722-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="6014459722-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·171,·SHA:·9f2d98458f2d0787c487fe6c675d3fa34771fdf623096f3816f24ac5f81c7694·...·]-9">)</span><span·class="p">,</span><span·class="w">179 ·········</span><span·class="p"·data-group-id="1968970473-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="1968970473-8">}</span><span·class="w">·</span><span·class="o">=</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·171,·SHA:·6b54a722d7f94ae75d8362282f3d8910c226f9d0da442b3b87691f45addbf9b7·...·]-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="6014459722-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="6014459722-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="1968970473-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="1968970473-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="6014459722-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="6014459722-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="1968970473-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="1968970473-11">)</span><span·class="p">,</span><span·class="w">
182 ·········</span><span·class="n">Continue</span><span·class="p"·data-group-id="6014459722-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="6014459722-12">)</span><span·class="w">182 ·········</span><span·class="n">Continue</span><span·class="p"·data-group-id="1968970473-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="1968970473-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="9555644197-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-i[·...·truncated·by·diffoscope;·len:·483,·SHA:·94ea83188c11dcb7ef2fd524fad3ee1cef2d0e47290045b8d4b17fc152ade17c·...·]7-1">}</span><span·class="w">·</span><span·class="p">|</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="4131814707-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-i[·...·truncated·by·diffoscope;·len:·483,·SHA:·b574f873318e605c4f51de69ee33b48bad9cb2c89d253984e037b4360d6aeed7·...·]7-1">}</span><span·class="w">·</span><span·class="p">|</span><span·class="w">
185 </span><span·class="p"·data-group-id="9555644197-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=[·...·truncated·by·diffoscope;·len:·116,·SHA:·2d60e65cd240104872262838e78ed4ef6457b9c5d7f154a1e31fb8c755b142fd·...·]7-4">}</span></code></pre><p>The·rules·functions·take·care·of·storing·scanner·information·in·a·rules185 </span><span·class="p"·data-group-id="4131814707-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=[·...·truncated·by·diffoscope;·len:·116,·SHA:·1dd64108adca0a1cc7d91011f1375488a8a2b204e94279d69efa4e1607e9f6ca·...·]7-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="9640232184-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:·74,·SHA:·8bd8cbec86d595d2cd116f3d301868b834968df2296161052fd96e762386d5a7·...·]4-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="9824709354-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:·74,·SHA:·32d5a89eed1e4c4d38cd55d2e69e9d012359b81e8819af23580ac53b9ef6e997·...·]4-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="9640232184-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="9640232184-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="9824709354-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="9824709354-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="0734154942-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="0734154942-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="5084419723-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="5084419723-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="0734154942-2">[</span><span·class="n">Elem</span><span·class="p"·data-group-id="0734154942-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="5084419723-2">[</span><span·class="n">Elem</span><span·class="p"·data-group-id="5084419723-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="0734154942-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="0734154942-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="5084419723-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="5084419723-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="0490117488-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="0490117488-2">(</span><span·class="p"·data-group-id="0490117488-2">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·f9f96ad3b7c1457f2e4d96844971fada093553553e59900c5c7e2b2d74543660·...·]-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="2103929885-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="2103929885-2">(</span><span·class="p"·data-group-id="2103929885-2">)</span><span·class="p"·data-g[·...·truncated·by·diffoscope;·len:·19,·SHA:·b80f98f959362947ef9ffe732ccecc26dd307d229a4ec7dcae331a5dc247377c·...·]-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="4455073803-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="4455073803-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="9438116001-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="9438116001-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
206 ···</span><span·class="p"·data-group-id="4455073803-2">{</span><span·class="p"·data-group-id="4455073803-3">[</span><span·class="n">ParsedEntity</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="4455073803-3">]</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·80,·SHA:·249b8ec4af8fb7b5c94581e2c4359a4b842ecdb8dbd3168ceb5a953cef7e303c·...·]-2">}</span><span·class="p">.</span><span·class="w">206 ···</span><span·class="p"·data-group-id="9438116001-2">{</span><span·class="p"·data-group-id="9438116001-3">[</span><span·class="n">ParsedEntity</span><span·class="p">|</span><span·class="n">Acc</span><span·class="p"·data-group-id="9438116001-3">]</span><span·class="p">,</span><span·class="w">·</[·...·truncated·by·diffoscope;·len:·80,·SHA:·8a9cc902f1b902754986e99eca6636f9ad61ddd2df3aeae4d271b8502e9413d5·...·]-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="4455073803-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="4455073803-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="9438116001-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="9438116001-4">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
209 ···</span><span·class="p"·data-group-id="4455073803-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="4455073803-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="9438116001-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="9438116001-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="5670867974-1">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="5670867974-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="9789860500-1">(</span><span·class="n">GlobalState</span><span·class="p"·data-group-id="9789860500-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="5039596460-1">(</span><span·class="ss">tmp</span><span·class="p"·data-group-id="5039596460-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="3948794058-1">(</span><span·class="ss">tmp</span><span·class="p"·data-group-id="3948794058-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="5039596460-2">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="5039596460-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="3948794058-2">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="3948794058-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="5039596460-3">(</span><span·class="p"·data-group-id="5039596460-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><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·bdf17d63660167336df38a0bba9bf1b9adfb0902bb786a316dd0b42775ddb8db·...·]-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="3948794058-3">(</span><span·class="p"·data-group-id="3948794058-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><s[·...·truncated·by·diffoscope;·len:·243,·SHA:·c5edea18ace1c1240bcbd22cee62df615f3f4a8ea4d6f67a73084023a8ac7e38·...·]-3">)</span><span·class="p">.</span><span·class="w">
  
226 </span><span·class="nf">file1</span><span·class="p"·data-group-id="5039596460-5">(</span><span·class="n">F</span><span·class="p"·data-group-id="5039596460-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</[·...·truncated·by·diffoscope;·len:·123,·SHA:·a356534aa816cd2f6cf9a915cfdcbc08dd84aa113e0006408223bf22e4371738·...·]-6">)</span><span·class="p">.</span><span·class="w">226 </span><span·class="nf">file1</span><span·class="p"·data-group-id="3948794058-5">(</span><span·class="n">F</span><span·class="p"·data-group-id="3948794058-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</[·...·truncated·by·diffoscope;·len:·123,·SHA:·cfdaa2792c0cffff10f4729f66bed021a86750898a5b95b46a114343354b0a56·...·]-6">)</span><span·class="p">.</span><span·class="w">
  
227 </span><span·class="nf">file2</span><span·class="p"·data-group-id="5039596460-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="5039596460-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</[·...·truncated·by·diffoscope;·len:·471,·SHA:·b75859e1262a21e30a86ec9c43ded6f97acf3e17bd91728461ede238ded52b72·...·]-8">)</span><span·class="p">.</span><span·class="w">227 </span><span·class="nf">file2</span><span·class="p"·data-group-id="3948794058-7">(</span><span·class="n">F</span><span·class="p"·data-group-id="3948794058-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</[·...·truncated·by·diffoscope;·len:·471,·SHA:·252ee99c0c57407a0490c19c7c236a0a595d3dc767088429882ec45778ec0cad·...·]-8">)</span><span·class="p">.</span><span·class="w">
  
228 </span><span·class="nf">file3</span><span·class="p"·data-group-id="5039596460-11">(</span><span·class="n">F</span><span·class="p"·data-group-id="5039596460-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:·888,·SHA:·09d895fbb598e9956af80f0a761acbf9be9bb8d290fe58fd804231efa8eb05e9·...·]-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="3948794058-11">(</span><span·class="n">F</span><span·class="p"·data-group-id="3948794058-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:·888,·SHA:·10c61ce0931076b835a5b8d9fcea88b6d9a3453d7d8bdfd54dabfff4f4daf514·...·]-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="5039596460-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="3948794058-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="5039596460-15">[</span><span·class="p"·data-group-id="5039596460-16">{</span><span·class="ss">space</span><span·class="p">,</span><span·class="ss">normalize</span><span·class="p"·data-group-id="5039596460-16">}</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·263,·SHA:·b0cd4519ee4f041e61083e4cc1db6d46f785861b00aebbd2f1786a847c17a8f2·...·]-15">]</span><span·class="p">)</span><span·class="p">.</span></code></pre>230 </span><span·class="p"·data-group-id="3948794058-15">[</span><span·class="p"·data-group-id="3948794058-16">{</span><span·class="ss">space</span><span·class="p">,</span><span·class="ss">normalize</span><span·class="p"·data-group-id="3948794058-16">}</span><span·class="p">,</span><span·class="w"[·...·truncated·by·diffoscope;·len:·263,·SHA:·f1bbaa0b5d24d6d6c9d387a6ea0323b9d8ef6e60d38070df7f8758db5f19248c·...·]-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.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="4601889547-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="4504181050-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="4601889547-2">[</span><span·class="p"·data-group-id="4601889547-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="4504181050-2">[</span><span·class="p"·data-group-id="4504181050-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="4601889547-3">[</span><span·class="p"·data-group-id="4601889547-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="4504181050-3">[</span><span·class="p"·data-group-id="4504181050-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="4601889547-4">[</span><span·class="p"·data-group-id="4601889547-5">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="4601889547-6">[</span><span·class="p"·data-group-id="4601889547-7">{</span><span·class="ss">dog<[·...·truncated·by·diffoscope;·len:·328,·SHA:·df9a73d71076aa37246893aa54eaff7da11016625342d8dd8f93e4811e7072a5·...·]-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="4504181050-4">[</span><span·class="p"·data-group-id="4504181050-5">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="4504181050-6">[</span><span·class="p"·data-group-id="4504181050-7">{</span><span·class="ss">dog<[·...·truncated·by·diffoscope;·len:·328,·SHA:·9efb2181639e75ca816e50488927cc02452609d766fb09ce865f962615f0c08f·...·]-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="4601889547-5">}</span><span·class="p"·data-group-id="4601889547-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="4504181050-5">}</span><span·class="p"·data-group-id="4504181050-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="4601889547-1">}</span></code></pre><p>Where·the·content·of·the·top·element·is:205 ············</span><span·class="p"·data-group-id="4504181050-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="1620677624-1">{</span><span·class="n">ParseResult</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="1620677624-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:·3e9257381c1e934bb1c52a416c8e89b699faabc58958d15b38f7b82fbc04fab2·...·]-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="6839912979-1">{</span><span·class="n">ParseResult</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="6839912979-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:·5c1d80f770447d6f13acbc5d7feffd4ce51b1d562bf12633c1871608ec20357c·...·]-2">)</span><span·class="p">.</span><span·class="w">
274 </span><span·class="p"·data-group-id="1620677624-3">{</span><span·class="p"·data-group-id="1620677624-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="6839912979-3">{</span><span·class="p"·data-group-id="6839912979-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="1620677624-5">[</span><span·class="p"·data-group-id="1620677624-5">]</span><span·class="p">,</span><span·class="w">276 ·············</span><span·class="p"·data-group-id="6839912979-5">[</span><span·class="p"·data-group-id="6839912979-5">]</span><span·class="p">,</span><span·class="w">
277 ·············</span><span·class="p"·data-group-id="1620677624-6">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="1620677624-7">[</span><span·class="p"·data-group-id="1620677624-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="1620677624-8"[·...·truncated·by·diffoscope;·len:·103,·SHA:·9765ed7e577984c5b5687aaeb9f08fb03f91645d276b72cd85c299cb2b1686cc·...·]-6">}</span><span·class="p">,</span><span·class="w">277 ·············</span><span·class="p"·data-group-id="6839912979-6">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="6839912979-7">[</span><span·class="p"·data-group-id="6839912979-7">]</span><span·class="p">,</span><span·class="p"·data-group-id="6839912979-8"[·...·truncated·by·diffoscope;·len:·103,·SHA:·46ad1571540448343cf77217b7c3f9843b387af5b0ddc9c2bc7247801e45b7bb·...·]-6">}</span><span·class="p">,</span><span·class="w">
278 ·············</span><span·class="p"·data-group-id="1620677624-9">[</span><span·class="p"·data-group-id="1620677624-9">]</span><span·class="p">,</span><span·class="w">278 ·············</span><span·class="p"·data-group-id="6839912979-9">[</span><span·class="p"·data-group-id="6839912979-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="1620677624-10">[</span><span·class="p"·data-group-id="1620677624-10">]</span><span·class="p">,</span><span·class="w">280 ·············</span><span·class="p"·data-group-id="6839912979-10">[</span><span·class="p"·data-group-id="6839912979-10">]</span><span·class="p">,</span><span·class="w">
281 ·············</span><span·class="p"·data-group-id="1620677624-11">[</span><span·class="p"·data-group-id="1620677624-12">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="1620677624-13">[</span><span·class="p"·data-group-id="1620677624-14">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·344,·SHA:·88d4f0c01f37675bbe8cb3b14591af51b08604e300e7abb41e92f7c4a597340d·...·]-15">]</span><span·class="p">,</span><span·class="s">&quot;\281 ·············</span><span·class="p"·data-group-id="6839912979-11">[</span><span·class="p"·data-group-id="6839912979-12">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="6839912979-13">[</span><span·class="p"·data-group-id="6839912979-14">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·344,·SHA:·ee91beb5d2df67a699c89bd25a7a352d93ac8b3b1f623cfe6d7ff8670b8c4937·...·]-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="1620677624-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="6839912979-12">}</span><span·class="p">,</span><span·class="w">
283 ··············</span><span·class="p"·data-group-id="1620677624-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="6839912979-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="1620677624-17">[</span><span·class="p"·data-group-id="1620677624-17">]</span><span·class="p">,</span><span·class="w">285 ··························</span><span·class="p"·data-group-id="6839912979-17">[</span><span·class="p"·data-group-id="6839912979-17">]</span><span·class="p">,</span><span·class="w">
286 ··························</span><span·class="p"·data-group-id="1620677624-18">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="1620677624-19">[</span><span·class="p"·data-group-id="1620677624-19">]</span><span·class="p">,</span><span·class="p"·data-group-id="1620677624-20">[</span><span·class="p"·data-group-id="1620677624-20">]</span><span·class="p"·data-group-id="1620677624-18">}</span><span·class="p">,</span><span·class="w"> 
287 ··························</span><span·class="p"·data-group-id="1620677624-21">[</span><span·class="p"·data-group-id="1620677624-22">{</span><span·class="ss">motorcycles</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="1620677624-22">}</span><span·class="p"·data-group-id="1620677624[·...·truncated·by·diffoscope;·len:·6,·SHA:·c42b35cf2cca49aca1ee316dcc19bbdf8814a54362bad303a23d01383e3174bb·...·]</span><span·class="p">,</span><span·class="w">286 ··························</span><span·class="p"·data-group-id="6839912979-18">{</span><span·class="ss">xmlNamespace</span><span·class="p">,</span><span·class="p"·data-group-id="6839912979-19">[</span><span·class="p"·data-group-id="6839912979-19">]</span><span·class="p">,</span><span·class="p"·data-group-id="6839912979[·...·truncated·by·diffoscope;·len:·114,·SHA:·2f11ad6f0d76f411c690c345e1cbf84d3b727812e038b9a7a46cb8ef6509df3b·...·]</span><span·class="p">,</span><span·class="w">
 287 ··························</span><span·class="p"·data-group-id="6839912979-21">[</span><span·class="p"·data-group-id="6839912979-22">{</span><span·class="ss">motorcycles</span><span·class="p">,</span><span·class="mi">1</span><span·class="p"·data-group-id="6839912979-22">}</span><span·class="p"·data-group-id="6839912979-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="1620677624-23">[</span><span·class="p"·data-group-id="1620677624-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="1620677624-25">[</span><span·class="p"·data-group-id="1620677624-25">]</span><span·class="p">,</span><span·class="p"·data-group-id="1620677624-26">[</span><span·class="p"·data-group-id="1620677624-26">]</span><span·class="p">,</span><span·class="p"·data-group-id="1620677624-27">[</span><span·class="p"·data-group-id="1620677624-27">]</span><span·class="p">,</span><span·class="p"·data-group-id="1620677624-28">[</span><span·class="p"·data-group-id="1620677624-28">]</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1620677624-24">}</span><span·class="p">,</span><span·class="w"> 
290 ···························</span><span·class="p"·data-group-id="1620677624-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="1620677624-30">[</span><span·class="p"·data-group-[·...·truncated·by·diffoscope;·len:·488,·SHA:·66afefe2c05cd090f1facaac5208d3cd1ee6d26a84843c1301d88d08ffa26d7b·...·]</span><span·class="p">,</span><span·class="w">289 ··························</span><span·class="p"·data-group-id="6839912979-23">[</span><span·class="p"·data-group-id="6839912979-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[·...·truncated·by·diffoscope;·len:·618,·SHA:·2132b8dc3f24115114a3ce8c5a306a1874a9f7d7e13f85aa1069c82314d44340·...·]</span><span·class="p">,</span><span·class="w">
 290 ···························</span><span·class="p"·data-group-id="6839912979-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="6839912979-30">[</span><span·class="p"·data-group-id="6839912979-30">]</span><span·class="p">,</span><span·class="p"·data-group-id="6839912979-31">[</span><span·class="p"·data-group-id="6839912979-31">]</span><span·class="p">,</span><span·class="p"·data-group-id="6839912979-32">[</span><span·class="p"·data-group-id="6839912979-32">]</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6839912979-29">}</span><span·class="p"·data-group-id="6839912979-23">]</span><span·class="p">,</span><span·class="w">
291 ··························</span><span·class="p"·data-group-id="1620677624-33">[</span><span·class="p"·data-group-id="1620677624-34">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="1620677624-35">[</span><span·class="p"·data-group-id="1620677624-36">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·419,·SHA:·3a2e7c7f48a70bfb71f406370daf7aeb9f48d0ec8e45301abc30b6e69c3b239e·...·]-35">]</span><span·class="p">,</span><span·class="w">291 ··························</span><span·class="p"·data-group-id="6839912979-33">[</span><span·class="p"·data-group-id="6839912979-34">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="6839912979-35">[</span><span·class="p"·data-group-id="6839912979-36">{</span><span·class="ss"[·...·truncated·by·diffoscope;·len:·419,·SHA:·702b3ef0f6ba99789e780e2b1fb312dbe4b3b69d9e7fcceaa73e3afae1ae87c1·...·]-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="1620677624-38">[</span><span·class="p"·data-group-id="1620677624-38">]</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1620677624-34">}</span><span·class="p">,</span><span·class="w">293 ····································</span><span·class="p"·data-group-id="6839912979-38">[</span><span·class="p"·data-group-id="6839912979-38">]</span><span·class="p">|</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6839912979-34">}</span><span·class="p">,</span><span·class="w">
294 ···························</span><span·class="p"·data-group-id="1620677624-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="1620677624-40">[</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·174,·SHA:·42f23299141a656de3dd9e848a2f8b72f71f16f812be8d6d71394c39911768bc·...·]-39">}</span><span·class="p">,</span><span·class="w">294 ···························</span><span·class="p"·data-group-id="6839912979-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="6839912979-40">[</span><span·class="p"·d[·...·truncated·by·diffoscope;·len:·174,·SHA:·b02ebc70cef1f2286a9523436576f7fb2dea12a773c9645e7d66e53fe9e05c1c·...·]-39">}</span><span·class="p">,</span><span·class="w">
295 ···························</span><span·class="p"·data-group-id="1620677624-41">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="1620677624-42">[</span><span·class="p"·data-group-id="1620677624-43">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·392,·SHA:·881267dd198b439c63abe4448696354dcef571f2a0818f37223e63bbd10b00eb·...·]-41">}</span><span·class="p">,</span><span·class="w">295 ···························</span><span·class="p"·data-group-id="6839912979-41">{</span><span·class="ss">xmlText</span><span·class="p">,</span><span·class="p"·data-group-id="6839912979-42">[</span><span·class="p"·data-group-id="6839912979-43">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</spa[·...·truncated·by·diffoscope;·len:·392,·SHA:·a74d150841f4381b19875b0f22ba4928e5a0db6abfd0baf0e0ae620714440caf·...·]-41">}</span><span·class="p">,</span><span·class="w">
296 ···························</span><span·class="p"·data-group-id="1620677624-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="1620677624-44">}</span><span·class="p">,</span><span·class="w">296 ···························</span><span·class="p"·data-group-id="6839912979-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="6839912979-44">}</span><span·class="p">,</span><span·class="w">
297 ···························</span><span·class="p"·data-group-id="1620677624-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="1620677624-45">}</span><span·class="p">,</span><span·class="w">297 ···························</span><span·class="p"·data-group-id="6839912979-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="6839912979-45">}</span><span·class="p">,</span><span·class="w">
298 ···························</span><span·class="p"·data-group-id="1620677624-46">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="1620677624-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:·ca7c6123f3325456fc35d0714d963113b268d36bb44f0ee4a768347d175f7efd·...·]-33">]</span><span·class="p">,</span><span·class="w">298 ···························</span><span·class="p"·data-group-id="6839912979-46">{</span><span·class="p">.</span><span·class="p">.</span><span·class="p">.</span><span·class="p"·data-group-id="6839912979-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:·80d5d7320745a7561c87af5fba55678c4d6c47eee128f46615e04a27a14c3dfe·...·]-33">]</span><span·class="p">,</span><span·class="w">
299 ··························</span><span·class="p"·data-group-id="1620677624-47">[</span><span·class="p"·data-group-id="1620677624-47">]</span><span·class="p">,</span><span·class="w">299 ··························</span><span·class="p"·data-group-id="6839912979-47">[</span><span·class="p"·data-group-id="6839912979-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="1620677624-16">}</span><span·class="p">,</span><span·class="w">301 ··························</span><span·class="ss">undeclared</span><span·class="p"·data-group-id="6839912979-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="1620677624-11">]</span><span·class="p">,</span><span·class="w">303 ··············</span><span·class="p"·data-group-id="6839912979-11">]</span><span·class="p">,</span><span·class="w">
304 ·············</span><span·class="p"·data-group-id="1620677624-48">[</span><span·class="p"·data-group-id="1620677624-48">]</span><span·class="p">,</span><span·class="w">304 ·············</span><span·class="p"·data-group-id="6839912979-48">[</span><span·class="p"·data-group-id="6839912979-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="1620677624-4">}</span><span·class="p">,</span><span·class="w">306 ·············</span><span·class="ss">undeclared</span><span·class="p"·data-group-id="6839912979-4">}</span><span·class="p">,</span><span·class="w">
307 ·</span><span·class="p"·data-group-id="1620677624-49">[</span><span·class="p"·data-group-id="1620677624-49">]</span><span·class="p"·data-group-id="1620677624-3">}</span><span·class="w">307 ·</span><span·class="p"·data-group-id="6839912979-49">[</span><span·class="p"·data-group-id="6839912979-49">]</span><span·class="p"·data-group-id="6839912979-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="7616143353-1">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="w">345 ··</span><span·class="p"·data-group-id="4825879388-1">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="w">
346 ·····</span><span·class="p"·data-group-id="7616143353-2">[</span><span·class="p"·data-group-id="7616143353-3">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;2003&quot;</span><span·class="p"·data-group-id="7616143353-3">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·452,·SHA:·46a504c47f3df1397d962a9b061a33226e4322bc26bde4382eea9a7e61ac4645·...·]-2">]</span><span·class="p">,</span><span·class="w">346 ·····</span><span·class="p"·data-group-id="4825879388-2">[</span><span·class="p"·data-group-id="4825879388-3">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;2003&quot;</span><span·class="p"·data-group-id="4825879388-3">}</span><span·class="p">,</span><span·class="[·...·truncated·by·diffoscope;·len:·452,·SHA:·1d11937bc0458c578e3023e23ab54be6e868e3e075559ee456e9e4674a00ef98·...·]-2">]</span><span·class="p">,</span><span·class="w">
347 ·····</span><span·class="p"·data-group-id="7616143353-6">[</span><span·class="p"·data-group-id="7616143353-7">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">347 ·····</span><span·class="p"·data-group-id="4825879388-6">[</span><span·class="p"·data-group-id="4825879388-7">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="w">
348 ·········</span><span·class="p"·data-group-id="7616143353-8">[</span><span·class="p"·data-group-id="7616143353-9">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="7616143353-10">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·79,·SHA:·051020f67b38d3c786f6376dd6c56cb0cf7315b689573602670e18eb8661dcdf·...·]-9">}</span><span·class="p">,</span><span·class="w">348 ·········</span><span·class="p"·data-group-id="4825879388-8">[</span><span·class="p"·data-group-id="4825879388-9">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="4825879388-10">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·[·...·truncated·by·diffoscope;·len:·79,·SHA:·b0fbd7ee9767cbf481a8c6847bce1918fd77c02d1bd057427c5752d7948c904e·...·]-9">}</span><span·class="p">,</span><span·class="w">
349 ··········</span><span·class="p"·data-group-id="7616143353-11">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="7616143353-12">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="7616143353-12">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·453015324530506c7bfa6b620d701dbceddea8571bf7a5194845ed5b0bea0cc5·...·]-11">}</span><span·class="p">,</span><span·class="w">349 ··········</span><span·class="p"·data-group-id="4825879388-11">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="4825879388-12">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="4825879388-12">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·805109e592fcc6e698cd44111fdb409b0bf178d96cb90b764bdd41d0b1e3d6a9·...·]-11">}</span><span·class="p">,</span><span·class="w">
350 ··········</span><span·class="p"·data-group-id="7616143353-13">{</span><span·class="ss">additionalName</span><span·class="p">,</span><span·class="p"·data-group-id="7616143353-14">[</span><span·class="s">&quot;Sportster&quot;</span><span·class="p"·data-group-id="7616143353-14">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·129,·SHA:·6f81d3c4a58b1476737fca8d77a0ff5b10c4d41d781ae0258707ed496c81db8a·...·]-7">}</span><span·class="p">,</span><span·class="w">350 ··········</span><span·class="p"·data-group-id="4825879388-13">{</span><span·class="ss">additionalName</span><span·class="p">,</span><span·class="p"·data-group-id="4825879388-14">[</span><span·class="s">&quot;Sportster&quot;</span><span·class="p"·data-group-id="4825879388-14">]</span><span·class="p"·dat[·...·truncated·by·diffoscope;·len:·129,·SHA:·48af458791dc9781ee2160d89281c1855d22b99f824dbb5cabc19279daa04a2a·...·]-7">}</span><span·class="p">,</span><span·class="w">
351 ······</span><span·class="p"·data-group-id="7616143353-15">{</span><span·class="ss">engine</span><span·class="p">,</span><span·class="w">351 ······</span><span·class="p"·data-group-id="4825879388-15">{</span><span·class="ss">engine</span><span·class="p">,</span><span·class="w">
352 ·········</span><span·class="p"·data-group-id="7616143353-16">[</span><span·class="s">&quot;V-engine,·2-cylinders,·1200·cc&quot;</span><span·class="p"·data-group-id="7616143353-16">]</span><span·class="p"·data-group-id="7616143353-15">}</span><span·class="p">,</span><span·class="w">352 ·········</span><span·class="p"·data-group-id="4825879388-16">[</span><span·class="s">&quot;V-engine,·2-cylinders,·1200·cc&quot;</span><span·class="p"·data-group-id="4825879388-16">]</span><span·class="p"·data-group-id="4825879388-15">}</span><span·class="p">,</span><span·class="w">
353 ······</span><span·class="p"·data-group-id="7616143353-17">{</span><span·class="ss">kind</span><span·class="p">,</span><span·class="p"·data-group-id="7616143353-18">[</span><span·class="s">&quot;custom&quot;</span><span·class="p"·data-group-id="7616143353-18">]</span><span·class="p"·data-group-id="7[·...·truncated·by·diffoscope;·len:·9,·SHA:·a68d7358842d90ff7eed4740c44db64f65d1893d21bde505f3e82d018a6d6ac0·...·]-17">}</span><span·class="p">,</span><span·class="w">353 ······</span><span·class="p"·data-group-id="4825879388-17">{</span><span·class="ss">kind</span><span·class="p">,</span><span·class="p"·data-group-id="4825879388-18">[</span><span·class="s">&quot;custom&quot;</span><span·class="p"·data-group-id="4825879388-18">]</span><span·class="p"·data-group-id="4[·...·truncated·by·diffoscope;·len:·9,·SHA:·646330a5a76062488504fb5635a96d5bc5512eb407511a5ac2ee49f2da0b0c2d·...·]-17">}</span><span·class="p">,</span><span·class="w">
354 ······</span><span·class="p"·data-group-id="7616143353-19">{</span><span·class="ss">drive</span><span·class="p">,</span><span·class="p"·data-group-id="7616143353-20">[</span><span·class="s">&quot;belt&quot;</span><span·class="p"·data-group-id="7616143353-20">]</span><span·class="p"·data-group-id="76[·...·truncated·by·diffoscope;·len:·115,·SHA:·27680c9b87e3b53a9986581dc3968ca36ac1aecba91fea6a8446b59b2b4a0487·...·]-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="4825879388-19">{</span><span·class="ss">drive</span><span·class="p">,</span><span·class="p"·data-group-id="4825879388-20">[</span><span·class="s">&quot;belt&quot;</span><span·class="p"·data-group-id="4825879388-20">]</span><span·class="p"·data-group-id="48[·...·truncated·by·diffoscope;·len:·115,·SHA:·ca7e226303b0947389d4529ecffae2199c241329ef99bbc474881cbc239df006·...·]-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="9856619325-1">{</span><span·class="n">RootEl</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="9856619325-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:·6ab7f3d18cae665e94b9eb5c80e9d5c34242d02ed9409b7d0869709d352c78c2·...·]-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="7777312314-1">{</span><span·class="n">RootEl</span><span·class="p">,</span><span·class="n">Misc</span><span·class="p"·data-group-id="7777312314-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:·223593992dd4aa82256f56e0ba95c3334e83c4b0e722a2a9878931ddacdc5cb7·...·]-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="9856619325-3">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">Content</span><span·class="p"·data-group-id="9856619325-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="7777312314-3">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">Content</span><span·class="p"·data-group-id="7777312314-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="9856619325-4">(</span><span·class="p"·data-group-id="9856619325-5">[</span><span·class="n">Data</span><span·class="p"·data-group-id="9856619325-5">]</span><span·class="p"·data-group-id="9856619325-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="7777312314-4">(</span><span·class="p"·data-group-id="7777312314-5">[</span><span·class="n">Data</span><span·class="p"·data-group-id="7777312314-5">]</span><span·class="p"·data-group-id="7777312314-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="9856619325-6">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">NewContent</span><span·class="p"·data-group-id="9856619325-6">}</span><span·class="p">,</span></code></pre><p>Then·you·can·run·it·through·the·export_simple/2·funct[·...·truncated·by·diffoscope;·len:·675,·SHA:·de26122f3fe2f25183deb7a1fd8a15cbcfc66216411c2b39b9943ae98617cdb2·...·]-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="7777312314-6">{</span><span·class="ss">content</span><span·class="o">=</span><span·class="n">NewContent</span><span·class="p"·data-group-id="7777312314-6">}</span><span·class="p">,</span></code></pre><p>Then·you·can·run·it·through·the·export_simple/2·funct[·...·truncated·by·diffoscope;·len:·675,·SHA:·10a433afc14d86138afdb3bfcb967c0aa881cb188c6d60efa2b155ba07bb554f·...·]-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="7209489279-4">(</span><span·class="p"·data-group-id="7209489279-5">[</span><span·class="n">NewRootEl</span><span·class="p"·data-group-id="7209489279-5">]</span><span·class="p">,</span><span·class="ss">xmerl_xml</span><span·class="p"·data-group-id="72094892[·...·truncated·by·diffoscope;·len:·2,·SHA:·98a3ab7c340e8a033e7b37b6ef9428751581760af67bbab2b9e05d4964a8874a·...·]-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="4987540347-4">(</span><span·class="p"·data-group-id="4987540347-5">[</span><span·class="n">NewRootEl</span><span·class="p"·data-group-id="4987540347-5">]</span><span·class="p">,</span><span·class="ss">xmerl_xml</span><span·class="p"·data-group-id="49875403[·...·truncated·by·diffoscope;·len:·2,·SHA:·31489056e0916d59fe3add79e63f095af3ffb81604691f21cad442a85c7be617·...·]-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="7209489279-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="7209489279-7">[</sp[·...·truncated·by·diffoscope;·len:·316,·SHA:·3296f0db5fb822a22d9c706100fa04abfbeaf54f9b86917c06f760e9c8e1bb8f·...·]-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="4987540347-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="4987540347-7">[</sp[·...·truncated·by·diffoscope;·len:·316,·SHA:·522722f4481f34e8941d0db25e9af5a1644e559a51a248611853fd23fd2a9712·...·]-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="3758585752-1">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="3758585752-2">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;··&quot;</span><span·class="p"·data-group-id="37585[·...·truncated·by·diffoscope;·len:·5,·SHA:·7b2a3d92f8258361a307e64545ef3b0c75b3385dd168d7b33f677ca60c8759c2·...·]-2">}</span><span·class="p">,</span><span·class="w">390 ······</span><span·class="p"·data-group-id="1021871873-1">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1021871873-2">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;··&quot;</span><span·class="p"·data-group-id="10218[·...·truncated·by·diffoscope;·len:·5,·SHA:·53bf89e4bbd9245c1b79840e9653894ac8341443cfe4b4c9ee88e53575e6cdeb·...·]-2">}</span><span·class="p">,</span><span·class="w">
391 ·······</span><span·class="p"·data-group-id="3758585752-3">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="p"·data-group-id="3758585752-4">[</span><span·class="p"·data-group-id="3758585752-5">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;20[·...·truncated·by·diffoscope;·len:·557,·SHA:·70c4ca0241ca06267e800f1054baa4af85b165c85d79a6b0bc6c6cbb3e7e3c13·...·]-4">]</span><span·class="p">,</span><span·class="w">391 ·······</span><span·class="p"·data-group-id="1021871873-3">{</span><span·class="ss">bike</span><span·class="p">,</span><span·class="p"·data-group-id="1021871873-4">[</span><span·class="p"·data-group-id="1021871873-5">{</span><span·class="ss">year</span><span·class="p">,</span><span·class="s">&quot;20[·...·truncated·by·diffoscope;·len:·557,·SHA:·9e94858c59f3c737c7282a8593a2b76abc67ad0af87200263092305ff0685b40·...·]-4">]</span><span·class="p">,</span><span·class="w">
392 ·············</span><span·class="p"·data-group-id="3758585752-8">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="3758585752-9">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\392 ·············</span><span·class="p"·data-group-id="1021871873-8">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1021871873-9">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
393 ····&quot;</span><span·class="p"·data-group-id="3758585752-9">}</span><span·class="p">,</span><span·class="w">393 ····&quot;</span><span·class="p"·data-group-id="1021871873-9">}</span><span·class="p">,</span><span·class="w">
394 ··············</span><span·class="p"·data-group-id="3758585752-10">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="p"·data-group-id="3758585752-11">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="3758585752-12">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\394 ··············</span><span·class="p"·data-group-id="1021871873-10">{</span><span·class="ss">name</span><span·class="p">,</span><span·class="p"·data-group-id="1021871873-11">[</span><span·class="o">#</span><span·class="ss">xmlText</span><span·class="p"·data-group-id="1021871873-12">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
395 ······&quot;</span><span·class="p"·data-group-id="3758585752-12">}</span><span·class="p">,</span><span·class="w">395 ······&quot;</span><span·class="p"·data-group-id="1021871873-12">}</span><span·class="p">,</span><span·class="w">
396 ·····················</span><span·class="p"·data-group-id="3758585752-13">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="3758585752-14">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·data-group-id="3758585752-14">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·78a2aab20d0ca104ed694bf7b9cf54f021b3b2aa96612086a5731929d0683de4·...·]-13">}</span><span·class="p">,</span><span·class="w">396 ·····················</span><span·class="p"·data-group-id="1021871873-13">{</span><span·class="ss">manufacturer</span><span·class="p">,</span><span·class="p"·data-group-id="1021871873-14">[</span><span·class="s">&quot;Harley·Davidsson&quot;</span><span·class="p"·data-group-id="1021871873-14">]</span><span·class="p[·...·truncated·by·diffoscope;·len:·27,·SHA:·f035e3bd68470171134e1b5850d4f27ffdf7328defb1753e3f3fe59bfad179c0·...·]-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="3758585752-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="1021871873-15">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
398 ······&quot;</span><span·class="p"·data-group-id="3758585752-15">}</span><span·class="p">,</span><span·class="w">398 ······&quot;</span><span·class="p"·data-group-id="1021871873-15">}</span><span·class="p">,</span><span·class="w">
399 ·····················</span><span·class="p"·data-group-id="3758585752-16">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="3758585752-17">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="3758585752-17">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·c01b76aec180e55bb16978581e5f807533abcb13244f1dab4a334f26872befa2·...·]-16">}</span><span·class="p">,</span><span·class="w">399 ·····················</span><span·class="p"·data-group-id="1021871873-16">{</span><span·class="ss">brandName</span><span·class="p">,</span><span·class="p"·data-group-id="1021871873-17">[</span><span·class="s">&quot;XL1200C&quot;</span><span·class="p"·data-group-id="1021871873-17">]</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·15,·SHA:·d2a79e74b112cbb11420811a3e8b9d294d5e31c3b222bf813f416fb956b229df·...·]-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="3758585752-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="1021871873-18">{</span><span·class="ss">value</span><span·class="o">=</span><span·class="s">&quot;\
401 ······&quot;</span><span·class="p"·data-group-id="3758585752-18">}</span><span·class="p">,</span><span·class="w">401 ······&quot;</span><span·class="p"·data-group-id="1021871873-18">}</span><span·class="p">,</span><span·class="w">
Max diff block lines reached; 101935/162915 bytes (62.57%) of diff not shown.
59.1 KB
./usr/share/doc/erlang-doc/html/lib/xmerl-2.1.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="5098313034-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="5098313034-2">{</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·630,·SHA:·834ab7da957955d01e1ca245f1b57e077edca10d49f4223892451ddad4577e40·...·]-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="6213480189-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="6213480189-2">{</span><span·class="w">·</span><sp[·...·truncated·by·diffoscope;·len:·630,·SHA:·d3cd8f9357b42f8b34cd98bd5d579584676e122a79c748e9088cafaa1790aedc·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
139 ····</span><span·class="p"·data-group-id="5098313034-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="6213480189-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="5098313034-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:·ad25459894e8f3dbdac4059b102453c223003a42ca25652aab813968e74cd85e·...·]-6">)</span><span·class="p">,</span><span·class="w">140 ·········</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="6213480189-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:·9c7d0d81f92f4de2181f818233dc333ba7338f849bec93e5a3041e81be788f97·...·]-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="5098313034-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="6213480189-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="2617815099-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="2617815099-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·158,·SHA:·33cd44590dc56ca285c4414f720731bb37a6cf22024e851bf03033bbd2c0fa71·...·]-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="0371839918-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="0371839918-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·158,·SHA:·d8db3a6fcc2e6953cc522a155fc19a73e464e95c765531fc96a13a73a722ae1a·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
144 ····</span><span·class="p"·data-group-id="2617815099-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="2617815099-4">(</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·426,·SHA:·b62b6a7df9842c32851ca89e64a2b6f6f46ba6acca8ac6ed39ac7c72eec85688·...·]-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="0371839918-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="0371839918-4">(</span><span·class="nf">s[·...·truncated·by·diffoscope;·len:·426,·SHA:·91e086df2311f79a0a453e9eaed1918e221416bb3c5af3b402b0659e43cb4f2c·...·]-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="1643807459-1">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="1643807459-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="0974255801-1">(</span><span·class="s">&quot;xmerl.hrl&quot;</span><span·class="p"·data-group-id="0974255801-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="1643807459-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="0974255801-2">(</span><span·class="ss">xmerl_xs</span><span·class="p">,</span><span·class="w">
206 ····</span><span·class="p"·data-group-id="1643807459-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:·a8af3a95ca5b805662515b50e0de30013be1b97fc56c9dcfdccc0ab2c58d115f·...·]-2">)</span><span·class="p">.</span><span·class="w">206 ····</span><span·class="p"·data-group-id="0974255801-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:·43f748ea403c3b1d59d68838804b16c28ee53a6d77598bdaf6f6a6977bdb9622·...·]-2">)</span><span·class="p">.</span><span·class="w">
  
207 </span><span·class="nf">doctype</span><span·class="p"·data-group-id="1643807459-4">(</span><span·class="p"·data-group-id="1643807459-4">)</span><span·class="p">-&gt;</span><span·class="w">207 </span><span·class="nf">doctype</span><span·class="p"·data-group-id="0974255801-4">(</span><span·class="p"·data-group-id="0974255801-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="1643807459-5">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="1643807459-5">)</span><span·class="p">-&gt;</span><span·class="w">210 </span><span·class="nf">process_xml</span><span·class="p"·data-group-id="0974255801-5">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="0974255801-5">)</span><span·class="p">-&gt;</span><span·class="w">
211 ····</span><span·class="nf">template</span><span·class="p"·data-group-id="1643807459-6">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="1643807459-6">)</span><span·class="p">.</span><span·class="w">211 ····</span><span·class="nf">template</span><span·class="p"·data-group-id="0974255801-6">(</span><span·class="n">Doc</span><span·class="p"·data-group-id="0974255801-6">)</span><span·class="p">.</span><span·class="w">
  
212 </span><span·class="nf">template</span><span·class="p"·data-group-id="1643807459-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="1643807459-8">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·156,·SHA:·729101c9bd5d22c14e8b8ce0d78d525f1f948c793d7f637977045ddb9a7db6ba·...·]-7">)</span><span·class="p">-&gt;</span><span·class="w">212 </span><span·class="nf">template</span><span·class="p"·data-group-id="0974255801-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="0974255801-8">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·156,·SHA:·8fe1f9bb69cc43fc72f1c9aae67801c938352ac8d49b4d47516bbe16ade4d532·...·]-7">)</span><span·class="p">-&gt;</span><span·class="w">
213 ····</span><span·class="p"·data-group-id="1643807459-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="0974255801-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="1643807459-10">(</span><span·class="p"·data-group-id="1643807459-10">)</span><span·class="p">,</span><span·class="w">214 ······</span><span·class="nf">doctype</span><span·class="p"·data-group-id="0974255801-10">(</span><span·class="p"·data-group-id="0974255801-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="1643807459-11">(</span><span·class="nf">select</span><span·class="p"·data-group-id="1643807459-12">(</span><span·class="s">&quot;title&quot;</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="1643807459-12">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·45ad64e753aa79972c1aa483c8163f66f64382b335f5491249171d837585961a·...·]-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="0974255801-11">(</span><span·class="nf">select</span><span·class="p"·data-group-id="0974255801-12">(</span><span·class="s">&quot;title&quot;</span><span·class="p">,</span><span·class="n">E</span><span·class="p"·data-group-id="0974255801-12">)</span><span·c[·...·truncated·by·diffoscope;·len:·34,·SHA:·0f457b8f83ba9067e477cc906a479198ac60edb98e3c4a725f794d59cd4d7b13·...·]-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="1643807459-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:·7d394157f29effe5ec32ca892588e9616b7cf356106f44d0667cfd015f286e71·...·]-13">)</span><span·class="p">,</span><span·class="w">220 ······</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="0974255801-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:·5106c9da909d33a9d63989048414e3f01efa2a4f3b1369942f834d99eb235996·...·]-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="1643807459-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="0974255801-9">]</span><span·class="p">;</span><span·class="w">
  
  
223 </span><span·class="nf">template</span><span·class="p"·data-group-id="1643807459-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="1643807459-15">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·637,·SHA:·c901a0333bb04d9f88d7fa802cf94dd7ae21459354c148ca034ff464e2729b3c·...·]-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="0974255801-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="0974255801-15">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·637,·SHA:·7137b57c11e0f80308a8adb235e764221f22d6c817f6d95778a3b4846572c3d7·...·]-14">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
224 ····</span><span·class="p"·data-group-id="1643807459-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="0974255801-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="1643807459-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:·7d394157f29effe5ec32ca892588e9616b7cf356106f44d0667cfd015f286e71·...·]-19">)</span><span·class="p">,</span><span·class="w">225 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="0974255801-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:·5106c9da909d33a9d63989048414e3f01efa2a4f3b1369942f834d99eb235996·...·]-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="1643807459-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="0974255801-18">]</span><span·class="p">;</span><span·class="w">
  
227 </span><span·class="nf">template</span><span·class="p"·data-group-id="1643807459-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="1643807459-21">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·641,·SHA:·6991674d444480d2295fc93bcd3431e7bfff6ef5f82ed34034dadc709dd9e4bf·...·]-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="0974255801-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="0974255801-21">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·641,·SHA:·d9d471468cc1fc4b404ccabfffd6bae41540a2cba0fb55d071102f203d53a287·...·]-20">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
228 ····</span><span·class="p"·data-group-id="1643807459-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="0974255801-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="1643807459-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:·7d394157f29effe5ec32ca892588e9616b7cf356106f44d0667cfd015f286e71·...·]-25">)</span><span·class="p">,</span><span·class="w">229 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="0974255801-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:·5106c9da909d33a9d63989048414e3f01efa2a4f3b1369942f834d99eb235996·...·]-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="1643807459-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="0974255801-24">]</span><span·class="p">;</span><span·class="w">
  
231 </span><span·class="nf">template</span><span·class="p"·data-group-id="1643807459-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="1643807459-27">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·641,·SHA:·54591201139fef949fb65ed9c918edcbc6870ea77af6e99d2c8d55cfae315982·...·]-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="0974255801-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="0974255801-27">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·641,·SHA:·bb87316aa3c995b02781f05b2d6fa0d20887986f703841650418a58940aed001·...·]-26">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
232 ····</span><span·class="p"·data-group-id="1643807459-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="0974255801-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="1643807459-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:·7d394157f29effe5ec32ca892588e9616b7cf356106f44d0667cfd015f286e71·...·]-31">)</span><span·class="p">,</span><span·class="w">233 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="0974255801-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:·5106c9da909d33a9d63989048414e3f01efa2a4f3b1369942f834d99eb235996·...·]-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="1643807459-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="0974255801-30">]</span><span·class="p">;</span><span·class="w">
  
235 </span><span·class="nf">template</span><span·class="p"·data-group-id="1643807459-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="1643807459-33">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·3cf35671b21760d70c468864adad5a938f817f87e8e0371fe4c56071669964da·...·]-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="0974255801-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="0974255801-33">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·3bdf7d61f17a39cc08ad94bff5e4c19df221dfd447d16705f028c19d27c6b704·...·]-32">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
236 ····</span><span·class="p"·data-group-id="1643807459-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="1643807459-35">(</span><span·class="w">·</span><span·class="k">fun</span><span[·...·truncated·by·diffoscope;·len:·360,·SHA:·3e21089e1b440da46f45f32d0fffb59118b6444da5c6764f6db3fb660dc4d3ad·...·]-34">]</span><span·class="p">;</span><span·class="w">236 ····</span><span·class="p"·data-group-id="0974255801-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="0974255801-35">(</span><span·class="w">·</span><span·class="k">fun</span><span[·...·truncated·by·diffoscope;·len:·360,·SHA:·0f3acd4444c936e2f29cc91f4a9c42f77bd68b0c348547c742908a174b1aa871·...·]-34">]</span><span·class="p">;</span><span·class="w">
  
237 </span><span·class="nf">template</span><span·class="p"·data-group-id="1643807459-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="1643807459-37">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·75667681b17dda417a7619fd7e002fe9947d494aa9c7faa46935da7ca2de988e·...·]-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="0974255801-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="0974255801-37">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·db1362ba448b5fe55c39817b604e3a5078035a26fcb71cd6145872c22769e357·...·]-36">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
238 ····</span><span·class="p"·data-group-id="1643807459-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="0974255801-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="1643807459-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:·7d394157f29effe5ec32ca892588e9616b7cf356106f44d0667cfd015f286e71·...·]-39">)</span><span·class="p">,</span><span·class="w">240 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="0974255801-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:·5106c9da909d33a9d63989048414e3f01efa2a4f3b1369942f834d99eb235996·...·]-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="1643807459-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="0974255801-38">]</span><span·class="p">;</span><span·class="w">
  
242 </span><span·class="nf">template</span><span·class="p"·data-group-id="1643807459-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="1643807459-41">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·1d73ea4dcebddebdb363458f18c057eade756f7d614e5277f230f32b5648676e·...·]-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="0974255801-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="0974255801-41">{</span><span·class="w">·</span><[·...·truncated·by·diffoscope;·len:·184,·SHA:·070f8945feeb73dd713f92795e13f0e45543bf83da78634b772785983d3c5435·...·]-40">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
243 ····</span><span·class="p"·data-group-id="1643807459-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="1643807459-43">(</span><span·class="w">·</span><span·class="k">fun</span><spa[·...·truncated·by·diffoscope;·len:·362,·SHA:·75844dc62a04266688d3b29a9e9239bf86bed78513af70a58edd04cece9024a8·...·]-42">]</span><span·class="p">;</span><span·class="w">243 ····</span><span·class="p"·data-group-id="0974255801-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="0974255801-43">(</span><span·class="w">·</span><span·class="k">fun</span><spa[·...·truncated·by·diffoscope;·len:·362,·SHA:·9d88793516e73fffe21845f8772a6b3764a5dc3a411d28ac73ad2b9eae5660d1·...·]-42">]</span><span·class="p">;</span><span·class="w">
  
244 </span><span·class="nf">template</span><span·class="p"·data-group-id="1643807459-44">(</span><span·class="n">E</span><span·class="p"·data-group-id="1643807459-44">)</span><span·class="p">-&gt;</span><span·class="w">244 </span><span·class="nf">template</span><span·class="p"·data-group-id="0974255801-44">(</span><span·class="n">E</span><span·class="p"·data-group-id="0974255801-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="1643807459-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:·7d394157f29effe5ec32ca892588e9616b7cf356106f44d0667cfd015f286e71·...·]-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="0974255801-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:·5106c9da909d33a9d63989048414e3f01efa2a4f3b1369942f834d99eb235996·...·]-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="3978239500-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="3978239500-2">{</span><span·class="ss">name</span>[·...·truncated·by·diffoscope;·len:·158,·SHA:·7d781b931c07ee40dc6c7b0d6d95b89a38ed3cc2a03afb5355eb721851f3fe45·...·]-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="3481377012-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="3481377012-2">{</span><span·class="ss">name</span>[·...·truncated·by·diffoscope;·len:·158,·SHA:·e100fe2fd925fb370f3d40d0d921279be98e352de61fd15652f4840f5580eb68·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
277 ····</span><span·class="p"·data-group-id="3978239500-3">{</span><span·class="n">Lines</span><span·class="p">,</span><span·class="n">LineNo</span><span·class="p"·data-group-id="3978239500-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:·18471b24c5b792701892f5cecdec031b55c01d41c6657bd44c3015f9a53019c7·...·]-4">)</span><span·class="p">,</span><span·class="w">277 ····</span><span·class="p"·data-group-id="3481377012-3">{</span><span·class="n">Lines</span><span·class="p">,</span><span·class="n">LineNo</span><span·class="p"·data-group-id="3481377012-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:·cd6e9d99e973507012288eefa4d762b46ec628a9babe2e6238a2d5c040097e8d·...·]-4">)</span><span·class="p">,</span><span·class="w">
278 ····</span><span·class="p"·data-group-id="3978239500-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:·e0922bc88c3900ca122186e8257fc15bc62227af4ff5564c72afb3b4d26c9d09·...·]-6">]</span><span·class="p">.</span><span·class="w">278 ····</span><span·class="p"·data-group-id="3481377012-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:·f5eaed2ade064672a9db1b39ac9e0bc1330a428d8ce80035d8e4084f445f69d1·...·]-6">]</span><span·class="p">.</span><span·class="w">
  
279 </span><span·class="nf">template_pos</span><span·class="p"·data-group-id="3978239500-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="3978239500-8">{</span><span·class="ss">name</span>[·...·truncated·by·diffoscope;·len:·228,·SHA:·0cdcaf274f6144498dc1c98bab888a6a67ab2a488db6e8ead609efcc8ccd80c1·...·]-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="3481377012-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="3481377012-8">{</span><span·class="ss">name</span>[·...·truncated·by·diffoscope;·len:·228,·SHA:·4e135f7255f9b78a16246cdf40a784daa10f3958b84ec924f5b59b34e82682b4·...·]-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
280 ····</span><span·class="p"·data-group-id="3978239500-9">{</span><span·class="p"·data-group-id="3978239500-10">[</span><span·class="nf">indent_line</span><span·class="p"·data-group-id="3978239500-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:·66666ef3b525123e9fbf190663d54b4a5c5573414c49a149792afc71f46204dc·...·]-9">}</span><span·class="p">.</span><span·class="w">280 ····</span><span·class="p"·data-group-id="3481377012-9">{</span><span·class="p"·data-group-id="3481377012-10">[</span><span·class="nf">indent_line</span><span·class="p"·data-group-id="3481377012-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:·905f3b76693ab9b0e26326468e10062272b84ffbc93c2fd4da7a6bf6301fbc47·...·]-9">}</span><span·class="p">.</span><span·class="w">
  
281 </span><span·class="nf">indent_line</span><span·class="p"·data-group-id="3978239500-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="3978239500-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="3481377012-13">(</span><span·class="mi">0</span><span·class="p"·data-group-id="3481377012-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="3978239500-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="3978239500-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="3481377012-14">(</span><span·class="p">_</span><span·class="p"·data-group-id="3481377012-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="6161605730-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="6161605730-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·257,·SHA:·5523f46d0ace731771e761affc329b93a0f4262e2e094338b15625d0801a4567·...·]-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="8145415986-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="8145415986-2">{</span><span·class="ss">name</span[·...·truncated·by·diffoscope;·len:·257,·SHA:·69a744b956c74a50d160c673eda656c0873a02d1e76bd6fe8bc4768f24bef2f7·...·]-1">)</span><span·class="w">·</span><span·class="p">-&gt;</span><span·class="w">
286 ····</span><span·class="p"·data-group-id="6161605730-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="6161605730-4">(</span><span·class="nf">select</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·236,·SHA:·23b076f00f8a768704ba8724e223ad2427683ad5b3e98daf694ff186a901026d·...·]-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="8145415986-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="8145415986-4">(</span><span·class="nf">select</span><span·class="p"·data-group[·...·truncated·by·diffoscope;·len:·236,·SHA:·189692925567381edb0e060a3d6ded3bf7d4dc49cd4c08cb2f6bdc6923e73826·...·]-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="6161605730-6">(</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="6161605730-7">(</span><span·class="n">A</span><span·class="p"·data-group-id="6161605730-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·423,·SHA:·071193f01c63c94d0c9c21056c58a2666327cb0436bd7c9a9f6e621da4471de0·...·]-6">)</span><span·class="p">,</span><span·class="w">287 ·····</span><span·class="nf">xslapply</span><span·class="p"·data-group-id="8145415986-6">(</span><span·class="w">·</span><span·class="nf">fun</span><span·class="p"·data-group-id="8145415986-7">(</span><span·class="n">A</span><span·class="p"·data-group-id="8145415986-7">)</span><span·class="w">·</span><span·class="p">-&gt;</span><[·...·truncated·by·diffoscope;·len:·423,·SHA:·b54f28d330f51f774212bd1c10bb97b419833e69dc98b66d1a7f80c35321adbd·...·]-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="6161605730-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="8145415986-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.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="8655405513-1">{</span><span·class="n">E</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="8655405513-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:·197,·SHA:·a7ba8eaeed1fd5459acfdf8b968d60e8ffdf3c15f6878beb35ffe633325e9c6b·...·]-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="4118638048-1">{</span><span·class="n">E</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="4118638048-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:·197,·SHA:·c779e6fe76497e502c89d987ff0829a37459c03ccf7551b45ecb8f205b975d67·...·]-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="8655405513-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="8655405513-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:·206,·SHA:·1f79bb450786b3b21c26b5507e3db14b5fcc2e6c0a3d7e306437a820549abfff·...·]-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="4118638048-3">{</span><span·class="ss">ok</span><span·class="p">,</span><span·class="n">S</span><span·class="p"·data-group-id="4118638048-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:·206,·SHA:·2585ab0485c3c35eee1c254eb51a0437708b163f701288e0667ed955da5c1d57·...·]-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="8655405513-5">{</span><span·class="n">E2</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="8655405513-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:·219,·SHA:·c00785ef9a7c748a27025a5a27e9f06a7883c9b0d9406c6ee17ba7f789c4ca16·...·]-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="4118638048-5">{</span><span·class="n">E2</span><span·class="p">,</span><span·class="p">_</span><span·class="p"·data-group-id="4118638048-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:·219,·SHA:·608dca9f3e843849c1a8241477df239be76a7b1db032dd4f0c2163bb8315b99d·...·]-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>
  
125 KB
./usr/share/doc/erlang-doc/html/doc/dist/search_data-67BC8981.js vs.
./usr/share/doc/erlang-doc/html/doc/dist/search_data-A8289C95.js
Files 99% similar despite different names
124 KB
js-beautify {}
Max HTML report size reached
572 KB
./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/search_data-43A9611A.js vs.
./usr/share/doc/erlang-doc/html/lib/compiler-8.6/doc/html/dist/search_data-62F7C547.js
Files 98% similar despite different names
571 KB
js-beautify {}
Max HTML report size reached
150 KB
./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/search_data-B265D67F.js vs.
./usr/share/doc/erlang-doc/html/lib/debugger-5.5/doc/html/dist/search_data-B8379476.js
Files 97% similar despite different names
149 KB
js-beautify {}
Max HTML report size reached
148 KB
./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/search_data-0488DFD4.js vs.
./usr/share/doc/erlang-doc/html/lib/dialyzer-5.3.1/doc/html/dist/search_data-6D666814.js
Files 98% similar despite different names
148 KB
js-beautify {}
Max HTML report size reached
152 KB
./usr/share/doc/erlang-doc/html/lib/et-1.7.1/doc/html/dist/search_data-C01CA0BB.js vs.
./usr/share/doc/erlang-doc/html/lib/et-1.7.1/doc/html/dist/search_data-07FF68FB.js
Files 98% similar despite different names
152 KB
js-beautify {}
Max HTML report size reached
128 KB
./usr/share/doc/erlang-doc/html/lib/os_mon-2.10.1/doc/html/dist/search_data-30902A86.js vs.
./usr/share/doc/erlang-doc/html/lib/os_mon-2.10.1/doc/html/dist/search_data-D20C2403.js
Files 98% similar despite different names
128 KB
js-beautify {}
Max HTML report size reached
3.44 MB
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/doc/html/dist/search_data-C1715298.js vs.
./usr/share/doc/erlang-doc/html/lib/stdlib-6.2.1/doc/html/dist/search_data-A1A25C0C.js
Files 98% similar despite different names
3.44 MB
js-beautify {}
Max HTML report size reached
26.4 KB
./usr/share/doc/erlang-doc/html/lib/tftp-1.2.2/doc/html/dist/search_data-BA5DB564.js vs.
./usr/share/doc/erlang-doc/html/lib/tftp-1.2.2/doc/html/dist/search_data-7B342769.js
Files 94% similar despite different names
26.2 KB
js-beautify {}
Max HTML report size reached
120 KB
erlang-jinterface_27.3+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-03-11·08:30:48.000000·debian-binary1 -rw-r--r--···0········0········0········4·2025-03-11·08:30:48.000000·debian-binary
2 -rw-r--r--···0········0········0······832·2025-03-11·08:30:48.000000·control.tar.xz2 -rw-r--r--···0········0········0······832·2025-03-11·08:30:48.000000·control.tar.xz
3 -rw-r--r--···0········0········0···112508·2025-03-11·08:30:48.000000·data.tar.xz3 -rw-r--r--···0········0········0···112496·2025-03-11·08:30:48.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
4.52 KB
erlang-ssh_27.3+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-03-11·08:30:48.000000·debian-binary1 -rw-r--r--···0········0········0········4·2025-03-11·08:30:48.000000·debian-binary
2 -rw-r--r--···0········0········0·····1932·2025-03-11·08:30:48.000000·control.tar.xz2 -rw-r--r--···0········0········0·····1932·2025-03-11·08:30:48.000000·control.tar.xz
3 -rw-r--r--···0········0········0··1006728·2025-03-11·08:30:48.000000·data.tar.xz3 -rw-r--r--···0········0········0··1006704·2025-03-11·08:30:48.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
4.0 KB
data.tar.xz
3.98 KB
data.tar
3.96 KB
./usr/lib/erlang/lib/ssh-5.2.8/ebin/ssh_agent.beam
    
Offset 1111, 47 lines modifiedOffset 1111, 47 lines modified
00004560:·756c·6520·7768·6963·6820·7468·6520·6061··ule·which·the·`a00004560:·756c·6520·7768·6963·6820·7468·6520·6061··ule·which·the·`a
00004570:·6464·5f68·6f73·745f·6b65·7960·2061·6e64··dd_host_key`·and00004570:·6464·5f68·6f73·745f·6b65·7960·2061·6e64··dd_host_key`·and
00004580:·2060·6973·5f68·6f73·745f·6b65·7960·2063···`is_host_key`·c00004580:·2060·6973·5f68·6f73·745f·6b65·7960·2063···`is_host_key`·c
00004590:·616c·6c62·6163·6b73·2061·7265·2064·656c··allbacks·are·del00004590:·616c·6c62·6163·6b73·2061·7265·2064·656c··allbacks·are·del
000045a0:·6567·6174·6564·0a74·6f2e·2044·6566·6175··egated.to.·Defau000045a0:·6567·6174·6564·0a74·6f2e·2044·6566·6175··egated.to.·Defau
000045b0:·6c74·7320·746f·2074·6865·2060·6d3a·7373··lts·to·the·`m:ss000045b0:·6c74·7320·746f·2074·6865·2060·6d3a·7373··lts·to·the·`m:ss
000045c0:·685f·6669·6c65·6020·6d6f·6475·6c65·2e74··h_file`·module.t000045c0:·685f·6669·6c65·6020·6d6f·6475·6c65·2e74··h_file`·module.t
000045d0:·0000·0003·7705·7469·746c·656d·0000·0007··....w.titlem.... 
000045e0:·4f70·7469·6f6e·7377·0865·7870·6f72·7465··Optionsw.exporte000045d0:·0000·0003·7708·6578·706f·7274·6564·7705··....w.exportedw.
 000045e0:·6661·6c73·6577·0574·6974·6c65·6d00·0000··falsew.titlem...
000045f0:·6477·0566·616c·7365·7705·7369·6e63·656b··dw.falsew.sincek000045f0:·074f·7074·696f·6e73·7705·7369·6e63·656b··.Optionsw.sincek
00004600:·0008·4f54·5020·3233·2e30·6805·6803·7704··..OTP·23.0h.h.w.00004600:·0008·4f54·5020·3233·2e30·6805·6803·7704··..OTP·23.0h.h.w.
00004610:·7479·7065·770e·7469·6d65·6f75·745f·6f70··typew.timeout_op00004610:·7479·7065·770e·7469·6d65·6f75·745f·6f70··typew.timeout_op
00004620:·7469·6f6e·6100·6802·614d·6102·6c00·0000··tiona.h.aMa.l...00004620:·7469·6f6e·6100·6802·614d·6102·6c00·0000··tiona.h.aMa.l...
00004630:·016d·0000·0010·7469·6d65·6f75·745f·6f70··.m....timeout_op00004630:·016d·0000·0010·7469·6d65·6f75·745f·6f70··.m....timeout_op
00004640:·7469·6f6e·2829·6a74·0000·0001·6d00·0000··tion()jt....m...00004640:·7469·6f6e·2829·6a74·0000·0001·6d00·0000··tion()jt....m...
00004650:·0265·6e6d·0000·0070·5365·7473·2074·6865··.enm...pSets·the00004650:·0265·6e6d·0000·0070·5365·7473·2074·6865··.enm...pSets·the
00004660:·2074·696d·652d·6f75·7420·696e·206d·696c···time-out·in·mil00004660:·2074·696d·652d·6f75·7420·696e·206d·696c···time-out·in·mil
00004670:·6c69·7365·636f·6e64·7320·7768·656e·2063··liseconds·when·c00004670:·6c69·7365·636f·6e64·7320·7768·656e·2063··liseconds·when·c
00004680:·6f6d·6d75·6e69·6361·7469·6e67·2077·6974··ommunicating·wit00004680:·6f6d·6d75·6e69·6361·7469·6e67·2077·6974··ommunicating·wit
00004690:·6820·7468·6520·6167·656e·7420·7669·6120··h·the·agent·via·00004690:·6820·7468·6520·6167·656e·7420·7669·6120··h·the·agent·via·
000046a0:·7468·650a·736f·636b·6574·2e20·5468·6520··the.socket.·The·000046a0:·7468·650a·736f·636b·6574·2e20·5468·6520··the.socket.·The·
000046b0:·6465·6661·756c·7420·7661·6c75·6520·6973··default·value·is000046b0:·6465·6661·756c·7420·7661·6c75·6520·6973··default·value·is
000046c0:·2060·3130·3030·602e·7400·0000·0377·0574···`1000`.t....w.t000046c0:·2060·3130·3030·602e·7400·0000·0377·0865···`1000`.t....w.e
000046d0:·6974·6c65·6d00·0000·074f·7074·696f·6e73··itlem....Options 
000046e0:·7708·6578·706f·7274·6564·7705·6661·6c73··w.exportedw.fals000046d0:·7870·6f72·7465·6477·0566·616c·7365·7705··xportedw.falsew.
 000046e0:·7469·746c·656d·0000·0007·4f70·7469·6f6e··titlem....Option
000046f0:·6577·0573·696e·6365·6b00·084f·5450·2032··ew.sincek..OTP·2000046f0:·7377·0573·696e·6365·6b00·084f·5450·2032··sw.sincek..OTP·2
00004700:·332e·3068·0568·0377·0474·7970·6577·1273··3.0h.h.w.typew.s00004700:·332e·3068·0568·0377·0474·7970·6577·1273··3.0h.h.w.typew.s
00004710:·6f63·6b65·745f·7061·7468·5f6f·7074·696f··ocket_path_optio00004710:·6f63·6b65·745f·7061·7468·5f6f·7074·696f··ocket_path_optio
00004720:·6e61·0068·0261·4761·026c·0000·0001·6d00··na.h.aGa.l....m.00004720:·6e61·0068·0261·4761·026c·0000·0001·6d00··na.h.aGa.l....m.
00004730:·0000·1473·6f63·6b65·745f·7061·7468·5f6f··...socket_path_o00004730:·0000·1473·6f63·6b65·745f·7061·7468·5f6f··...socket_path_o
00004740:·7074·696f·6e28·296a·7400·0000·016d·0000··ption()jt....m..00004740:·7074·696f·6e28·296a·7400·0000·016d·0000··ption()jt....m..
00004750:·0002·656e·6d00·0000·5753·6574·7320·7468··..enm...WSets·th00004750:·0002·656e·6d00·0000·5753·6574·7320·7468··..enm...WSets·th
00004760:·6520·5b73·6f63·6b65·7420·7061·7468·5d28··e·[socket·path](00004760:·6520·5b73·6f63·6b65·7420·7061·7468·5d28··e·[socket·path](
00004770:·606d·3a73·7368·5f61·6765·6e74·2353·4f43··`m:ssh_agent#SOC00004770:·606d·3a73·7368·5f61·6765·6e74·2353·4f43··`m:ssh_agent#SOC
00004780:·4b45·545f·5041·5448·6029·2066·6f72·2074··KET_PATH`)·for·t00004780:·4b45·545f·5041·5448·6029·2066·6f72·2074··KET_PATH`)·for·t
00004790:·6865·2063·6f6d·6d75·6e69·6361·7469·6f6e··he·communication00004790:·6865·2063·6f6d·6d75·6e69·6361·7469·6f6e··he·communication
000047a0:·2077·6974·6820·7468·650a·6167·656e·742e···with·the.agent.000047a0:·2077·6974·6820·7468·650a·6167·656e·742e···with·the.agent.
000047b0:·7400·0000·0377·0574·6974·6c65·6d00·0000··t....w.titlem... 
000047c0:·074f·7074·696f·6e73·7708·6578·706f·7274··.Optionsw.export 
000047d0:·6564·7705·6661·6c73·6577·0573·696e·6365··edw.falsew.since000047b0:·7400·0000·0377·0865·7870·6f72·7465·6477··t....w.exportedw
 000047c0:·0566·616c·7365·7705·7469·746c·656d·0000··.falsew.titlem..
 000047d0:·0007·4f70·7469·6f6e·7377·0573·696e·6365··..Optionsw.since
000047e0:·6b00·084f·5450·2032·332e·3068·0568·0377··k..OTP·23.0h.h.w000047e0:·6b00·084f·5450·2032·332e·3068·0568·0377··k..OTP·23.0h.h.w
000047f0:·0866·756e·6374·696f·6e77·0473·656e·6461··.functionw.senda000047f0:·0866·756e·6374·696f·6e77·0473·656e·6461··.functionw.senda
00004800:·0268·0261·df61·026c·0000·0001·6d00·0000··.h.a.a.l....m...00004800:·0268·0261·df61·026c·0000·0001·6d00·0000··.h.a.a.l....m...
00004810:·1373·656e·6428·5265·7175·6573·742c·204f··.send(Request,·O00004810:·1373·656e·6428·5265·7175·6573·742c·204f··.send(Request,·O
00004820:·7074·7329·6a77·0668·6964·6465·6e74·0000··pts)jw.hiddent..00004820:·7074·7329·6a77·0668·6964·6465·6e74·0000··pts)jw.hiddent..
00004830:·0001·7705·7369·6e63·656b·0008·4f54·5020··..w.sincek..OTP·00004830:·0001·7705·7369·6e63·656b·0008·4f54·5020··..w.sincek..OTP·
00004840:·3233·2e30·6805·6803·7708·6675·6e63·7469··23.0h.h.w.functi00004840:·3233·2e30·6805·6803·7708·6675·6e63·7469··23.0h.h.w.functi